Попытка заставить CUDA 7.5 работать с GCC 5.x

Итак, если вы попытаетесь использовать 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__, У меня есть, и это, похоже, не помогает.
  • Я на Fedora 22 в случае, если это имеет значение.

2

Решение

Я думаю -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 скрипт.

3

Другие решения

Рассмотрите возможность установки и временного выбора более старой версии 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,

2

По сути, бесполезно пытаться заставить GCC 5.x работать с CUDA 7.5 — есть некоторые (или многие?) Проблемы несовместимости, которые вы просто не можете решить. Вместо этого просто обновитесь до CUDA 8.0, которая стала доступна с тех пор, как был задан этот вопрос.

2
По вопросам рекламы [email protected]