Я помітив, що деякі новіші версії TensorFlow несумісні зі старими версіями CUDA та cuDNN. Чи існує огляд сумісних версій чи навіть список офіційно перевірених комбінацій? Я не можу знайти його в документації на TensorFlow.
Я помітив, що деякі новіші версії TensorFlow несумісні зі старими версіями CUDA та cuDNN. Чи існує огляд сумісних версій чи навіть список офіційно перевірених комбінацій? Я не можу знайти його в документації на TensorFlow.
Відповіді:
Перевірте версію 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 р.)
(цифра оновлена 31 травня 2018 р.)
Оновлено станом на 14 січня 2020 року: для оновленої інформації зверніться до Посилання для Linux та Посилання для Windows .
Таблиця сумісності, наведена на сайті 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.0cuda
= 10,0cuDNN
= 7.6.0якщо ви кодуєте в зошиті юпітер і хочете перевірити, яку версію cuda використовує tf, запустіть наступну команду безпосередньо в клітинку юпітера:
!conda list cudatoolkit
!conda list cudnn
і перевірити, чи gpu видно tf:
tf.test.is_gpu_available(
cuda_only=False, min_cuda_compute_capability=None
)
Ви можете використовувати цю конфігурацію для cuda 10.0 (10.1 не працює з 3/18), це працює для мене:
Встановити версію gens tensorflow:
pip install tensorflow-gpu==1.4.0
Я помилково встановив CUDA 10.1 та CUDNN 7.6. Ви можете використовувати наступні конфігурації (Це працювало для мене - станом на 9/10). :
Але мені довелося створити посилання, щоб воно працювало так, як тензорфлоу спочатку працює з 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/
У мене була подібна проблема після оновлення до 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.0
TF, щоб не міг його більше знайти, і все тоді працювало як шарм.
Це все дуже засмучувало, і я все ще відчуваю, що я просто зробив випадковий злом. Але це спрацювало :) і, можливо, це допоможе комусь із подібним питанням.