Не удалось загрузить динамическую библиотеку ‘libcudnn.so.8’ в ubuntu

#python #tensorflow

Вопрос:

я использую Ubuntu 20.04.3 и пытаюсь установить tensorflow. Версия драйвера Nvidia Driver Version: 470.63.01 . Сначала я установил cuda 11.0 и проверил его установку с помощью следующей команды

cat /usr/local/cuda/version.txt

Он выводит версию CUDA 11.0.207.

Затем я установил cudnn

 tar -xzvf cudnn-11.0-linux-x64-v8.0.5.39
sudo cp cuda/include/cudnn*.h /usr/local/cuda/include 
sudo cp -P cuda/lib64/libcudnn* /usr/local/cuda/lib64 
sudo chmod a r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*
 

Я также проверил файлы cuda с помощью этой команды
ls /usr/local |grep cuda
что приводит к

cuda cuda-11.0

Файлы Cudnn проверяются

 ls /usr/local/cuda-11.0/lib64/libcudnn.so.8*
 

и вывод

 /usr/local/cuda-11.0/lib64/libcudnn.so.8
/usr/local/cuda-11.0/lib64/libcudnn.so.8.0.5
 

Затем я установил tensorflow
pip install tensorflow==2.4.0
но когда я запускаю

 import tensorflow as tf
tf.config.list_physical_devices('GPU')
 

Он не получил графический процессор, и ошибка Could not load dynamic library 'libcudnn.so.8'; dlerror: libcudnn.so.8: cannot open shared object file: No such file or directory

Ответ №1:

Я только что столкнулся с той же проблемой. Из вашего фрагмента кода я вижу, что вы ссылаетесь на два разных местоположения CUDA:

  • /usr/local/cuda/
  • /usr/local/cuda-11.0/

Поэтому вы можете перепроверить, вызывает ли это проблему.

Отсюда я узнал, что TF считывает системную информацию о доступной CUDA из LD_LIBRARY_PATH . В системе, которую я использую, установлено несколько версий CUDA. Таким образом, экспорт этих путей явно устранил проблему для меня:

 export LD_LIBRARY_PATH=/usr/local/cuda-11.0/lib64:$LD_LIBRARY_PATH
export CUDA_HOME=/usr/local/cuda-11.0
 

Конечно, вам нужно будет адаптировать путь к вашей конкретной ситуации.