tensorflow-gpu训练出现Could not create cudnn handle: CUDNN_STATUS_NOT_INITIALIZED

问题: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.csdn.net/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 #立即生效
  • 7
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值