Поддержка Nvidia CUDA Toolkit 9.2 - PullRequest
0 голосов
/ 30 мая 2018

В чем причина того, что Tensorflow-gpu связан с конкретной версией Nvidia CUDA Toolkit?Текущая версия выглядит специально для 9.0 и не будет работать ни с чем большим.Например, я установил последнюю версию Toolkit 9.2 и добавил ее в путь, но Tensorflow-gpu не будет работать с ней и жалуется, что ищет 9.0.

Я вижу, что обновления основных версий не поддерживаются, но незначительный выпуск

Ответы [ 3 ]

0 голосов
/ 01 июня 2018

Проблема не в драйверах NVIDIA, а в самом Tensorflow.Я потратил час, пытаясь заставить его работать, и, наконец, понял, что если вы загружаете предварительно собранный бинарный файл с googleapi.com, он жестко запрограммирован для загрузки libcudart.so.9.0!Если у вас установлены и cuda 9.0, и 9.2, тензор потока будет работать (но на самом деле он загружает динамические библиотеки из 9.0).(Кстати, я установил TF, используя anaconda.)

Более чистый подход заключается в создании TF из исходного кода.Это не слишком сложно.

0 голосов
/ 08 июля 2018

Когда вы загружаете TF, вы загружаете предварительно созданный двоичный файл.В процессе сборки TF жестко связан с конкретной версией Cuda, поэтому его нельзя использовать с разными версиями Cuda.

Если вы хотите работать с новой (или иногда более старой) версией cuda, вам нужно установить TF из исходного кода ( проверьте, как здесь ) Или, если вы действительно не хотитечтобы создать себя, проверьте в этих репозиториях, есть другие, которые публикуют конкретные двоичные файлы TF, несколько примеров:

Для вашего удобства я добавляю сюда версии CUDA + cuDNN, которые требуются для каждой предварительно собранной версии Tensorflow:

(я пишу здесь только о версиях TF, с которыми я работал,возможно, более старые версии TF также используют более старые версии CUDA)

  • до TF v1.5 cuda 8.0 и cuDNN 6
  • начиная с: 1.5 - Предварительно собранные двоичные файлы теперь создаются на основе CUDA 9и cuDNN 7.
0 голосов
/ 30 мая 2018

Хороший вопрос.Согласно веб-сайту NVidia ,

Драйвер CUDA имеет обратную совместимость, что означает, что приложения, скомпилированные с определенной версией CUDA, будут продолжать работать в последующих (более поздних) выпусках драйвера.

Технически, это не должно быть проблемой для поддержки последующих итераций драйвера CUDA.И на практике вы найдете рабочие неофициальные предварительно собранные двоичные файлы с более поздними версиями CUDA и CuDNN в сети [1] , [2] .Еще проще в установке, пакет tensorflow-gpu, установленный из conda, в настоящее время поставляется в комплекте с CUDA 9.2.

Когда его спросили по теме, разработчик ответил ,

Ответ на вопрос, почему проблемы с драйверами в тех, которые требуются в 9.1, не так много новых функций, которые нам нужны в cuda 9.1, и еще несколько незначительных проблем.

Так что причина выглядит довольно расплывчато - он может означать, что CUDA 9.1 (и 9.2) требует, чтобы драйвер видеокарты был слишком новым, чтобы быть действительно удобным, но это необразованное предположение.

Если NVidia права в отношении двоичной совместимости, вы можете просто переименовать или связать вашу библиотеку CUDA 9.2 с библиотекой CUDA 9.0, и она должна работать.Но я бы сохранил всю свою работу, прежде чем пытаться это сделать ... и тот факт, что люди идут до перекомпиляции tenorflow для поддержки более поздних версий CUDA, может быть подсказкой о том, как это может закончиться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...