[大坑]Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR
报错tensorflow/stream_executor/cuda/cuda_dnn.cc:338] Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR
错误代码
2019-05-05 09:34:42.298865: I tensorflow/stream_executor/platform/default/dso_loader.cc:42] Successfully opened dynamic library libcublas.so.10.0
2019-05-05 09:34:42.469839: I tensorflow/stream_executor/platform/default/dso_loader.cc:42] Successfully opened dynamic library libcudnn.so.7
2019-05-05 09:34:43.086143: E tensorflow/stream_executor/cuda/cuda_dnn.cc:338] Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR
2019-05-05 09:34:43.100978: E tensorflow/stream_executor/cuda/cuda_dnn.cc:338] Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR
解决办法
首先这是一个大坑,在网上找了很多办法,基本都是改一些GPU运行时候的config,我发现跑有些程序的时候并不奏效;也有是要求降级cuda和cudnn版本,我尝试了从cuda10.1一路降到9.0,cudnn也一直换,报错依旧在,仍然不奏效。
为了解决这个问题,我尝试用docker安装tensorflow-gpu发现是可以成功运行程序的,但是不太方便,我发现anaconda在虚环境里面使用conda安装tensorflow-gpu会自动安装该环境下的cuda和cudnn,并且不会对环境外已经安装的cuda和cudnn有影响,但是默认安装的版本比较低,所以,最好的办法是指定安装的版本。只需要指定tensorflow的版本即可,cuda和cudnn的版本会对应。
在虚环境下安装
conda install tensorflow-gpu==1.12
就这一条简单的命令折腾了好几天,cuda cudnn tensorflow各种版本都尝试了,在github上很多人说等待tensorflow新版本修复,确实,这个方法只能暂时解决问题,没办法迁移到更高的版本比如tensorflow2.0,所以暂时用的话还是用1.12的吧。。