Версия CUDA X жалуется на отсутствие поддержки gcc-версии Y - что делать?
Вопрос касается конкретной комбинации версий, но имеет более важное значение.
Я только что был повышен с Kubuntu 12.04 до 14.04. Теперь, когда я хочу скомпилировать код CUDA (с CUDA 6.5), я получаю:
#error -- unsupported GNU version! gcc 4.9 and up are not supported!
Я установил gcc-4.8 (и 4.7) и попытался использовать предлагаемое здесь решение symlinks-in /usr/local/cuda/bin
:
CUDA несовместим с моей версией gcc
но это не работает. Что мне делать?
Ответы
Ответ 1
Это решение относится к нескольким комбинациям версий CUDA и GCC.
Вы можете указать CUDA nvcc
использовать определенную версию gcc. Итак, предположим, что вы хотите использовать gcc 4.7 для использования с CUDA 6. Вы запускаете:
sudo apt-get install gcc-4.7 g++-4.7
а затем добавьте следующий ключ в свою командную строку nvcc
:
nvcc --compiler-bindir /usr/bin/gcc-4.7 # rest of the command line here
Если вы создаете CMake, добавьте соответствующую настройку, прежде чем искать CUDA для своего CMakeLists.txt
, например:
set(CUDA_HOST_COMPILER /usr/bin/gcc-4.7) # -> ADD THIS LINE <-
find_package(CUDA)
Кроме того, кажется, что clang может также скомпоновать CUDA, возможно, стоит поэкспериментировать с (хотя вам придется строить его соответствующим образом).
Примечание. В некоторых дистрибутивах Linux (или других ОС) нет пакетов для нескольких версий gcc (в том же выпуске дистрибутива ОС). Я бы посоветовал не пытаться установить пакет из другой версии дистрибутива в более ранней версии и подумать о создании gcc вместо этого. Это не совсем тривиально, но вполне выполнимо - и, конечно же, это ваш единственный вариант, если у вас нет корневого доступа к вашей машине.
Ответ 2
Вернитесь к поддерживаемой конфигурации. Они перечислены в документе начала работы для любого недавнего распространения CUDA.
Для вашей конкретной конфигурации, которую вы сейчас указали, вам может быть повезло с CUDA 7 RC, которая теперь доступна зарегистрированным разработчикам.
Ответ 3
Очень часто вы обнаружите, что к тому моменту, когда вы столкнулись с этой проблемой, у CUDA были более новые версии. Например, исходная формулировка вопроса касалась CUDA 6 и GCC 4.9; CUDA 7 поддерживает GCC 4.9. CUDA 8 поддерживает GCC 5.x. И так далее.
Ответ 4
У меня была аналогичная проблема с CUDA Toolkit 7.5 и gcc 5.2.1.
Я изменил файл host_config.h
в /usr/local/cuda/include/
:
Просто удалите строки, где он проверяет версию gcc. Это решило мою проблему.
Кредиты передаются Даррен Гарви (https://groups.google.com/forum/#!topic/torch7/WaNmWZqMnzw)