Я заметил, что некоторые новые версии 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» .
Таблица совместимости, приведенная на сайте 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.0cuda
= 10,0cuDNN
= 7.6.0если вы пишете код в блокноте 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
)
Вы можете использовать эту конфигурацию для cuda 10.0 (10.1 не работает с 3/18), это работает для меня:
Установите версию tenorflow gpu:
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, но мне показалось, что у меня установлена правильная версия.
То , что я в конце концов , должен был сделать 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.0
TF, так что TF больше не мог его найти, и тогда все работало как шарм.
Все это очень расстраивало, и я все еще чувствую, что я просто сделал случайный взлом. Но это сработало :) и, возможно, это поможет кому-то с подобной проблемой.