報錯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的吧。。