Какие комбинации версий TensorFlow и CUDA совместимы?


146

Я заметил, что некоторые новые версии TensorFlow несовместимы со старыми версиями CUDA и cuDNN. Существует ли обзор совместимых версий или даже список официально протестированных комбинаций? Я не могу найти это в документации TensorFlow.


1
Все требования приведены в инструкциях по установке , раздел « Требования NVIDIA для запуска TensorFlow с поддержкой GPU ».
P-Gn

10
Вопрос касался совместимости и (официально) проверенных комбинаций, которые, на мой взгляд, не приведены в инструкции по установке. Кроме того, я не могу найти раздел, на который вы ссылаетесь. Эти наблюдения приводят к моему общему мнению, что запрашиваемую информацию трудно найти, и поэтому оправдывают предоставление легкого доступа к ссылке, размещенной в ответе.
Фабио

Вы найдете, что версии CUDA и cuDNN на странице, которую вы упомянули, соответствуют одной из инструкций по установке.
P-Gn

Чтобы найти инструкции по установке, перейдите на страницу, на которую я ссылался выше, затем перейдите по ссылке для вашей ОС.
P-Gn

1
О, я понимаю, что вы имеете в виду - пытаясь понять, какая версия тензорного потока соответствует определенной комбинации CUDA / cuDNN. Вы можете просмотреть примечания к выпуску TF, но таблица, на которую вы ссылаетесь, действительно хорошая сводка.
P-Gn

Ответы:


213

В общем-то:

Проверьте версию CUDA:

cat /usr/local/cuda/version.txt

и версия cuDNN:

grep CUDNN_MAJOR -A 2 /usr/local/cuda/include/cudnn.h

и установите комбинацию, как указано ниже в изображениях или здесь .

Следующие изображения и ссылка предоставляют обзор официально поддерживаемых / протестированных комбинаций CUDA и TensorFlow в Linux, macOS и Windows:

Незначительные конфигурации:

Поскольку приведенные ниже спецификации в некоторых случаях могут быть слишком широкими, вот одна конкретная конфигурация, которая работает:

  • tensorflow-gpu==1.12.0
  • cuda==9.0
  • cuDNN==7.1.4

Соответствующий cudnn можно скачать здесь .

(цифры обновлены 20 мая 2020 г.)

Linux GPU

введите описание изображения здесь

Linux

введите описание изображения здесь

MacOS GPU

введите описание изображения здесь

Macos

введите описание изображения здесь

(рисунок обновлен 31 мая 2018 г.)

Windows

введите описание изображения здесь

Обновление от 14 января 2020 года: обновленную информацию см. В разделах « Ссылка для Linux» и « Ссылка для Windows» .


1
Я заметил, что версии TensorFlow <1.0 были исключены из обзора. У кого-нибудь есть идея, где найти такой же список для более старых версий?
Фабио

2
Похоже, они не указывают минорные версии для cuda и cudnn,
mrgloom

1
ОБНОВЛЕНИЕ: проверено TF-GPU 1.12, Windows 10, CUDA 9.0, CuDNN 7.3.1, Python 3.6.6
mjaniec

1
Не обновляйте цифры, ссылки на документацию. Ссылка меняется реже, чем таблицы
Trylks

1
@ Фабио: Обновил ваш ответ с последними ссылками в соответствии с вашим запросом.
Поддержка Tensorflow

23

Таблица совместимости, приведенная на сайте tenorflow , не содержит специальных минорных версий для cuda и cuDNN. Тем не менее, если конкретные версии не встречаются, при попытке использовать тензор потока возникнет ошибка.

Для tensorflow-gpu==1.12.0и cuda==9.0совместимая cuDNNверсия есть 7.1.4, которую можно скачать отсюда после регистрации.

Вы можете проверить свою версию cuda, используя
nvcc --version

версия cuDNN с использованием
cat /usr/include/cudnn.h | grep CUDNN_MAJOR -A 2

Версия tennsflow-GPU с использованием
pip freeze | grep tensorflow-gpu

ОБНОВЛЕНИЕ: Начиная с версии tenorflow 2.0, я поделюсь с ней совместимыми версиями cuda и cuDNN (для Ubuntu 18.04).

  • tensorflow-gpu = 2.0.0
  • cuda = 10,0
  • cuDNN = 7.6.0

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

2

если вы пишете код в блокноте jupyter и хотите проверить, какую версию cuda использует tf, введите команду follow непосредственно в ячейку jupyter:

!conda list cudatoolkit

!conda list cudnn

и проверить, виден ли gpu для tf:

tf.test.is_gpu_available(
    cuda_only=False, min_cuda_compute_capability=None
)

1

Вы можете использовать эту конфигурацию для cuda 10.0 (10.1 не работает с 3/18), это работает для меня:

  • tensorflow> = 1.12.0
  • tensorflow_gpu> = 1.4

Установите версию tenorflow gpu:

pip install tensorflow-gpu==1.4.0

1

Я установил CUDA 10.1 и CUDNN 7.6 по ошибке. Вы можете использовать следующие конфигурации (это работало для меня - с 9/10). :

  • Tensorflow-GPU == 1.14.0
  • CUDA 10.1
  • CUDNN 7,6
  • Ubuntu 18.04

Но я должен был создать символические ссылки для того, чтобы он работал, так как тензор потока изначально работает с CUDA 10.

sudo ln -s /opt/cuda/targets/x86_64-linux/lib/libcublas.so /opt/cuda/targets/x86_64-linux/lib/libcublas.so.10.0
sudo cp /usr/lib/x86_64-linux-gnu/libcublas.so.10 /usr/local/cuda-10.1/lib64/
sudo ln -s /usr/local/cuda-10.1/lib64/libcublas.so.10 /usr/local/cuda-10.1/lib64/libcublas.so.10.0
sudo ln -s /usr/local/cuda/targets/x86_64-linux/lib/libcusolver.so.10 /usr/local/cuda/lib64/libcusolver.so.10.0
sudo ln -s /usr/local/cuda/targets/x86_64-linux/lib/libcurand.so.10 /usr/local/cuda/lib64/libcurand.so.10.0
sudo ln -s /usr/local/cuda/targets/x86_64-linux/lib/libcufft.so.10 /usr/local/cuda/lib64/libcufft.so.10.0
sudo ln -s /usr/local/cuda/targets/x86_64-linux/lib/libcudart.so /usr/local/cuda/lib64/libcudart.so.10.0
sudo ln -s /usr/local/cuda/targets/x86_64-linux/lib/libcusparse.so.10 /usr/local/cuda/lib64/libcusparse.so.10.0

И добавьте следующее в мой ~ / .bashrc -

export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
export PATH=/usr/local/cuda-10.1/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-10.1/lib64:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/cuda/targets/x86_64-linux/lib/

0

У меня была похожая проблема после обновления до TF 2.0. Версия CUDA, о которой сообщал TF, не соответствовала версии Ubuntu 18.04, которую я установил. Там говорилось, что я использую CUDA 7.5.0, но мне показалось, что у меня установлена ​​правильная версия.

То , что я в конце концов , должен был сделать Grep рекурсивно /usr/localдля CUDNN_MAJOR, и я обнаружил , что /usr/local/cuda-10.0/targets/x86_64-linux/include/cudnn.hдействительно указать версию , как 7.5.0.
/usr/local/cuda-10.1правильно понял и /usr/local/cudaуказал /usr/local/cuda-10.1, так что это было (и остается) загадкой для меня, почему TF смотрел /usr/local/cuda-10.0.

Во всяком случае, я просто переехал /usr/local/cuda-10.0в /usr/local/old-cuda-10.0TF, так что TF больше не мог его найти, и тогда все работало как шарм.

Все это очень расстраивало, и я все еще чувствую, что я просто сделал случайный взлом. Но это сработало :) и, возможно, это поможет кому-то с подобной проблемой.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.