tensorflow2.x 无法启用GPU问题
前提:
- CUDA版本,tensorflow,keras等版本匹配。
- GPU处于正常运转状态。
- 已经将CUDA的安装路径加入环境变量
问题1:无法载入lib开头的文件
例如:could not load dynamic liabrary ‘libcudart. so. x’ ;dlerror:libcudart.so.x:could not shared object file:no such file ordictory; LD_LIBRARY_PATH
这里也可能无法载入其他的lib开头的文件,但解决方法都是一样的
测试GPU是否可用
import tensorflow as tf
print("Num GPUs Availiable: ",len(tf.config.experimental.list_physical_devices('GPU')))
报错
解决过程:
step1:进入CUDA默认的安装路径 /usr/local/cuda/lib64 目录查看是否缺少错误中提示的文件。如果缺少,那大概率要重装CUDA。如果存在文件,但版本不对应,例如系统要求libcudart.so.10.1, 而你文件夹下的是libcudart.so.10.2,只需要通过建立软链接使得系统认为libcudart.so.10.2就是libcudart.so.10.1成功解决问题。这里如果是其他文件(libcudnn缺少除外)也是可以通过添加软连接来解决的。
sudo ln -s /usr/local/cuda/lib64/libcudart.so.10.2 /usr/local/cuda/lib64/libcudart.so.10.1
问题2:缺少libcudnn.so文件
出现这个文件缺失,那一定是没有安装cudnn。
问题解决
step1:下载对应版本的cudnn 例如:cudnn-10.2-linux-x64-v6.0.tgz
step2:解压:tar -xvzf cudnn-10.2-linux-x64-v6.0.tgz 得到:
cuda/lib64/libcudnn.so.7
cuda/lib64/libcudnn.so
cuda/lib64/libcudnn.so.7.5.6
cuda/lib64/libcudnn_static.a
step3:将文件体检到CUDA目录下
cp cuda/lib64/* /usr/local/cuda-10.0/lib64/
cp cuda/include/* /usr/local/cuda-10.0/include/