问题:Could not create cudnn handle: CUDNN_STATUS_NOT_INITIALIZED
2020/10/12更新
直接上解决方案:
conda list查看cudatoolkit和cudnn版本,两个的版本不能比自己安装cuda和cudnn版本高,最好是相同。这个是导致出现这个问题的根本原因。下面其他的部分可看可不看。
--------------------------------------------
--------------------------------------------
解决方案:
很多教程上说是cudnn的版本问题,我试过很多次不同的版本没有解决。一般只要对应上tensorflow版本即可。
教程很多,这篇博客的重点不在这。而是按照对应的版本安装完以后仍然出现了问题。这时按照以下步骤来:
配置环境变量
* export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64"
* export CUDA_HOME=/usr/local/cuda
清除缓存
sudo rm -rf ~/.nv/
弄完重启以下试试,我就是这么解决的,希望帮助到有同样问题的人
如果按照上述操作不好使可以重新配置环境变量再次试试,地址执行安装的对应版本的cuda:
输入命令:vi .bashrc配置即可
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda-9.0/lib64"
export CUDA_HOME=/usr/local/cuda-9.0
配置完成清除缓存,重启
*20200318有感
新的解决方案:
如果以上方法都不能成功的解决你的问题,如果你的环境是通过conda创建的,建议你查看conda里面自带的cudnn版本,看看这个版本是不是与cuda版本不对应,查看方法:conda list
保证这里面的cudnn版本和cuda版本对应,重点是内置的这个cudnn版本不能太低
参考链接:https://stackoverflow.com/questions/43147983/could-not-create-cudnn-handle-cudnn-status-internal-error
--------------------------------------------------------------------------------------------------------------------------------------------------华丽的分割线----------------------------------------------------------------------------------------------------------
未彻底解决的问题补充,血泪史
用上面的方法一定程度上能够解决问题,但过了一点时间彻底没用了,这时候就查各种资料,发现根本上还是从版本对应上来排查。
1.确定自己的服务器GPU型号,去查找对应的NVIDIA下载。这里要注意,tensorflow的版本制约着cuda版本,具体参考:https://blog.youkuaiyun.com/qq_27825451/article/details/89082978 对应版本。注意ubuntu16.04自带的gcc版本为5.4就不需要降级为4.8了。
环境:
ubuntu16.04
tensorflow=1.10.0
cuda=9.0
cudnn=7.3.1
按照官网上查询到的nvidia版本为384.183
我按照步骤安装了就出现上面的驱动版本不足的问题。一直试了很多对应关系,很乱。cuda换成了9.2 ,cundnn也对应升级到了7.5等一系列,但一直也没能解决问题。最终从头来了一遍,各种版本的尝试。下面是一种可行的组合,可借鉴。
解决方案:
下载稍高版本的驱动,我选的驱动:
Driver Version: 390.116 。
cuda=9.0
cudnn=7.3.1
这种组合解决了困扰我3天的问题。
备注:官网上给的390.116版本对应的cuda=9.2,我按照这种组合出现了ImportError: libcublas.so.9.0: cannot open shared object file: No such file or directory问题,在对应的9.2版本下面也没有so.9.0,所以我只能退回了9.0的cuda。最终就是这种奇怪的不符合官网预期的组合方式才能成功运行。
问题:ImportError: libcublas.so.9.0: cannot open shared object file: No such file or directory
解决:sudo ldconfig /usr/local/cuda-9.0/lib64
问题:ImportError: libcudnn.so.7: cannot open shared object file: No such file or directory
解决方案:没有建立软连接
CUDNN连接建立
cd /usr/local/cuda/lib64
sudo rm -rf libcudnn.so libcudnn.so.7 #删除原有版本号,版本号在cudnn/lib64中查询
sudo ln -s libcudnn.so.7.0.5 libcudnn.so.7 #生成软连接,注意自己下载的版本号
sudo ln -s libcudnn.so.7 libcudnn.so
sudo ldconfig #立即生效