Версия 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)