tensorflow-gpu无法调用GPU; Cannot dlopen some GPU libraries. Could not load dynamic library ‘libcusolver

在Linux Ubuntu下:

一、tensorflow-gpu无法调用GPU

检查

请通过以下语句来进行检查:

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

报错且返回False是不成功的:
在这里插入图片描述

这样是成功的,返回True:
在这里插入图片描述

二、版本检查

1. 检查tensorflow-gpu版本与CUDA版本对应关系

官网中检查tensorflow-gpu版本与CUDA版本对应关系,是否符合:
https://www.tensorflow.org/install/source#gpu

不同版本的tensorflow-gpu与CUDA对应关系如下表所示(图片有点旧了,python版本是2.7和3.3-3.8):
在这里插入图片描述
对于版本号大于1.13的tensorflow-gpu的1.x版本,如1.14、1.15,建议安装CUDA10.0,不要安装CUDA10.1,安装后会提示缺少很多库文件,而导致GPU版本的tensorflow无法使用,如下图所示:
在这里插入图片描述

如果是2.0以上的tensorflow,按下面列表安装(2023年5月更新, 现在TF2.X和CUDA版本的兼容性越来越好了,不同的TF2.X版本可以匹配多个CUDA版本,下表所示是本人验证过的,不是唯一匹配方案)
在这里插入图片描述

2.linux查看cuda和cudnn版本

查看cuda版本:

nvcc -V

在这里插入图片描述
查看cudnn版本

cat /usr/local/cuda-11.6/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2

在这里插入图片描述
若此处显示找不到文件的话说明没有装cudnn,需要再进行安装

3. 更换版本

确定是版本对应问题后,卸载现在的版本并且重新安装:

pip uninstall tensorflow tensorflow-gpu
pip install tensorflow-gpu==x.x.x

三、解决报错:Could not load dynamic library ‘libcudnn.so.8’; dlerror: libcudnn.so.8: cannot open shared object file: No such file or directory

确定版本没有问题后仍然报错:

W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library ‘libcudnn.so.8’; dlerror: libcudnn.so.8: cannot open shared object file: No such file or directory
2023-05-11 15:10:35.942107: W tensorflow/core/common_runtime/gpu/gpu_device.cc:1850] Cannot dlopen some GPU libraries. Please make sure the missing libraries mentioned above are installed properly if you would like to use GPU. Follow the guide at https://www.tensorflow.org/install/gpu for how to download and setup the required libraries for your platform.
Skipping registering GPU devices…

在这里插入图片描述
说明只安装了CUDA,并未安装CUDA所对应的libcudnn甚至是CUDNN

1. 安装CUDNN(若没安装的话)

下载CUDA版本对应的cuDNN版本:
https://developer.nvidia.com/rdp/cudnn-archive#a-collapse805-111
在这里插入图片描述

参照官方文档进行安装:

https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#installlinux-tar
在这里插入图片描述
验证:

cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2

出现以下信息说明安装成功,由于安装的cuDNN版本是8.5.0,所以MAJOR、MINOR、PATCHLEVEL依次是8、5、0
在这里插入图片描述

2. 安装CUDA所对应的libcudnn

去官网找到对应的libcudnn版本
网址:https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/
我所对应的版本如图所示
在这里插入图片描述下载:

wget https://developer.download.nvidia.cn/compute/cuda/repos/ubuntu2004/x86_64/libcudnn8_8.4.0.27-1+cuda11.6_amd64.deb

对应的dev也要进行安装:

wget https://developer.download.nvidia.cn/compute/cuda/repos/ubuntu2004/x86_64/libcudnn8-dev_8.4.0.27-1+cuda11.6_amd64.deb

最后进行安装:

sudo dpkg -i libcudnn8_8.4.0.27-1+cuda11.6_amd64.deb
sudo dpkg -i libcudnn8-dev_8.4.0.27-1+cuda11.6_amd64.deb

再进行测试后显示为True,至此跑程序就可以调用gpu了。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_39589455/article/details/130624556