Які комбінації версій TensorFlow та CUDA сумісні?


145

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


1
Всі вимоги наведені з інструкцією по установці , розділ під назвою " Вимоги NVIDIA для запуску TensorFlow з підтримкою GPU ".
П-Гн

10
Питання стосувалося сумісності та (офіційно) перевірених комбінацій, які, на мій погляд, не передбачені в інструкціях до встановлення. Також я не можу знайти розділ, на який ви посилаєтесь. Ці спостереження призводять до загальної точки зору, що запитувану інформацію важко знайти, і тому виправдовує надання легкого доступу до посилання, розміщеного у відповіді.
Фабіо

Ви побачите, що версії CUDA та cuDNN на згадуваній сторінці відповідають одній із інструкцій із встановлення.
P-Gn

Щоб знайти інструкції з установки, перейдіть на сторінку, яку я пов’язував вище, а потім перейдіть за посиланням для вашої ОС.
П-Гн

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

Відповіді:


212

Як правило:

Перевірте версію 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

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

GPU macOS

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

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
@ Fábio: Оновіть свою відповідь останніми посиланнями відповідно до вашого запиту.
Підтримка Tensorflow

23

Таблиця сумісності, наведена на сайті tensorflow , не містить конкретних незначних версій для cuda та cuDNN. Однак якщо конкретні версії не дотримані, під час спроби використовувати tensorflow виникне помилка.

Для 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

використовуючи версію tensorflow-gpu
pip freeze | grep tensorflow-gpu

ОНОВЛЕННЯ: Оскільки вийшов версія tensorflow 2.0, я поділюся сумісними версіями cuda та cuDNN для нього (також для Ubuntu 18.04).

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

1
Ваша відповідь була дуже корисною. Як ви сказали, з документацією не дуже зрозуміло, щоб викликати незначні версії. Я дотримувався вашої конфігурації, і вона працювала!
Вікраме

2

якщо ви кодуєте в зошиті юпітер і хочете перевірити, яку версію cuda використовує tf, запустіть наступну команду безпосередньо в клітинку юпітера:

!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

Встановити версію gens tensorflow:

pip install tensorflow-gpu==1.4.0

1

Я помилково встановив CUDA 10.1 та CUDNN 7.6. Ви можете використовувати наступні конфігурації (Це працювало для мене - станом на 9/10). :

  • Tensorflow-gpu == 1.14.0
  • КУДА 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, але apt подумав, що у мене встановлена ​​правильна версія.

Що я в кінцевому підсумку повинен був зробити, це греп рекурсивно /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, щоб не міг його більше знайти, і все тоді працювало як шарм.

Це все дуже засмучувало, і я все ще відчуваю, що я просто зробив випадковий злом. Але це спрацювало :) і, можливо, це допоможе комусь із подібним питанням.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.