问题1:明明安装好了tensorflow-gpu,但是运行代码时无法使用gpu加速
明明安装好了tensorflow-gpu,但是运行代码时无法使用gpu加速,运行tensorflow代码时cpu占满还是跑的很慢,同时tf.test.is_gpu_available()=false。在网上看了很多教程,有人说是tensorflow与tensorflow-gpu的版本不同问题,要求tensorflow-gpu版本比tensorflow版本高,同时要求电脑在装tensorflow之后装tensorflow-gpu。
因此我就尝试了很多次,发现都不成功,tf.test.is_gpu_available()=false一直都是这样。因为我一直用pytorch跑代码,pytorch可以用gpu加速但是tensorflow不可以,说明tensorflow配置可能有问题。
原因分析:
Tensorflow对CUDA和CuDNN的要求很严格,如果gpu用不了建议首先根据这个博主的博客对照一下tensorflow版本对应问题。
附上我觉得总结很好的博主的博客:https://blog.csdn.net/weixin_44560088/article/details/117457619?spm=1001.2014.3001.5502
例如:tensorflow_gpu-2.3.0必须要求python为3.5-3.8;CuDNN=7.6(7版本开头);CUDA=10.1。
解决方案:
1.首先查看自己CUDA的版本
在Anaconda中输入nvcc -V查看自己的cuda版本,比如我的就是10.1版本,这样看最靠谱。
我之前是CUDA10.2版本,没有对应的tensorflow,因此尝试了很多次都不成功,所以我重新找了一个CUDA版本和CUDNN版本进行下载,在没有删除10.2的情况下又安装了一个10.1版本。
2.查看版本对应表选择一个自己的CUDA版本下的Tensorflow版本
3.在Anaconda Navigator中把原来的Tensorflow虚拟环境删除掉(右下角remove)
4.下载好CUDA10.1和CuDNN7.6.5的压缩包(这里一定要下CuDNN版本7开头的压缩包而不是8开头的,见问题2)
将CUDA10.1与原来的10.2版本的环境分开,比如10.2在C盘,为了不出什么问题,我把10.1安装在了D盘,首先在D盘组织好这样的架构D:\CUDA\NVIDIA corporation\CUDA Samples\v10.1和D:\CUDA\NVIDIA GPU Computing Toolkit\CUDA\v10.1,根据CUDA的默认C盘安装路径将安装路径修改到对应的D盘,方便后续查找文件。
将CuDNN解压缩后将文件复制到D:\CUDA\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin路径下替换掉对应的文件。
5.在Anaconda中创建对应的tensorflow虚拟环境(我给他起名字叫tf)
conda create -n tf python=3.8
创建完毕后,使用pip安装tensorflow-gpu
pip install tensorflow-gpu==2.3.0
等待其安装成功后,就可以依次在Anaconda prompt中输入以下代码
activate tf
python
import tensorflow as tf
print(tf.test.is_gpu_available())
如果看到True就表示成功了!
问题2:Could not load dynamic library ‘cudnn64_7.dll’
原因分析:
没有关注CuDNN的版本,我在第一次安装时直接下载了CuDNN 8开头的版本,导致在bin文件夹中找不到cudnn64_7.dll只能找到cudnn64_8.dll,这就是没有认真读题的原因!!!
解决方法:下载CuDNN 7开头的版本解压去bin文件粘贴替换即可
当你完成所有这些之后,重启你的编译器/终端,输入上述测试tensorflow-gpu能否使用的命令,就可以惊喜的发现!它成功了!接下来就可以用gpu快乐的跑代码了~
此处特别鸣谢我的师弟——阿刚!在他的帮助下我们一起完美解决了这个问题~