Итак, если вы попытаетесь использовать nvcc, когда системный GCC версии 5 и выше, вы получите ошибку «неподдерживаемая версия». Но — я слышал, что люди сообщают, что они только что прокомментировали это и что CUDA 7.5 «работает для них» с GCC 5.x.
Когда я делаю то же самое, однако (чек в $CUDA_DIR/host_config.h
) и что-то скомпилировав, я получаю следующие ошибки:
/usr/lib/gcc/x86_64-redhat-linux/5.3.1/include/mwaitxintrin.h(36): error: identifier "__builtin_ia32_monitorx" is undefined
/usr/lib/gcc/x86_64-redhat-linux/5.3.1/include/mwaitxintrin.h(42): error: identifier "__builtin_ia32_mwaitx" is undefined
и множество других, но они могут зависеть от них. Теперь это связанные с MMX встроенные функции для архитектур X86. Я не использую их напрямую, поэтому я предполагаю, что они каким-то образом включены. Возможно, этого можно избежать?
Есть ли способ преодолеть эти ошибки и заставить GCC 5 сосуществовать с CUDA 7.5? И для кода, чтобы построить и запустить?
Заметки:
-D__STRICT_ANSI__
, У меня есть, и это, похоже, не помогает.Я думаю -D_MWAITXINTRIN_H_INCLUDED
вариант должен исправить проблему. На самом деле я использовал немного другой подход, комментируя #include <mwaitxintrin.h>
линия в x86intrin.h
и успешно построил TensorFlow с CUDA 7.5 и GCC 5.2.1.
ОБНОВИТЬ
Для последней версии TensorFlow (v0.8.0) просто выберите использование gcc 4.x при вызове configure
скрипт.
Рассмотрите возможность установки и временного выбора более старой версии gcc
:
apt-get install gcc-4.8
Затем обновите ваши альтернативы:
update-alternatives --remove-all gcc
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 10
После компиляции TensorFlow вы можете использовать предыдущую версию gcc
вызов вышеуказанной команды с правильным путем к /usr/bin/gcc-5.x
,
По сути, бесполезно пытаться заставить GCC 5.x работать с CUDA 7.5 — есть некоторые (или многие?) Проблемы несовместимости, которые вы просто не можете решить. Вместо этого просто обновитесь до CUDA 8.0, которая стала доступна с тех пор, как был задан этот вопрос.