尝试运行TensorFlow时出现CUDNN_STATUS_NOT_INITIALIZED错误

6

我在安装了Cuda 9.0和CuDNN 7.0.5的Ubuntu 16.04上安装了TensorFlow 1.7,使用的是原版Python 2.7。虽然CUDA和CuDNN的样例都能够正常运行,TensorFlow也可以识别到GPU(因此一些TensorFlow示例可以运行),但使用CuDNN的示例(如大多数CNN示例)则无法正常运行。它们会给出以下提示信息:

2018-04-10 16:14:17.013026: I tensorflow/stream_executor/plugin_registry.cc:243] Selecting default DNN plugin, cuDNN
25428 2018-04-10 16:14:17.013100: E tensorflow/stream_executor/cuda/cuda_dnn.cc:403] could not create cudnn handle: CUDNN_STATUS_NOT_INITIALIZED
25429 2018-04-10 16:14:17.013119: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:369] driver version file contents: """NVRM version: NVIDIA UNIX x86_64 Kernel Module  384.130  Wed Mar 21 03:37:26 PDT 2018
25430 GCC version:  gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.9)
25431 """
25432 2018-04-10 16:14:17.013131: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:112] version string "384.130" made value 384.130.0
25433 2018-04-10 16:14:17.013135: E tensorflow/stream_executor/cuda/cuda_dnn.cc:411] possibly insufficient driver version: 384.130.0
25434 2018-04-10 16:14:17.013139: E tensorflow/stream_executor/cuda/cuda_dnn.cc:370] could not destroy cudnn handle: CUDNN_STATUS_BAD_PARAM
25435 2018-04-10 16:14:17.013143: F tensorflow/core/kernels/conv_ops.cc:712] Check failed: stream->parent()->GetConvolveAlgorithms( conv_parameters.ShouldIncludeWinogradNonfusedAlgo<T>(), &algorithms)

打开一大堆VLOG消息(请参阅下面的链接了解如何操作)并没有产生任何额外的相关消息。
关键信息可能是“选择默认DNN插件,cuDNN”,因为查看代码时我可能会认为它无法加载cuDNN库模块,但就我所知,这实际上是正常的(因此不是警告),问题可能是其他原因引起的。
例如,“CUDNN_STATUS_NOT_INITIALIZED”消息似乎在早期版本中由TF过于积极地提前分配内存引起的(在TF GitHub问题列表中找到了这个问题),因此CuDNN无法初始化,但我尝试了这些方法(包括重置GPU和重新启动),但它们没有帮助。
您有什么建议可以尝试吗?
1个回答

13

好的,我找到了原因,是由于我安装了错误版本的cuDNN,所以我的怀疑是它实际上没有找到正确的共享库是正确的。

基本上我安装的是 Cuda 9.1 版本的 cuDNN v7.1.2,而不是 Cuda 9.0 版本的 cuDNN v7.1.2,这似乎一直导致它默默地失败 - 尽管我在这一点上应该期望一个错误消息。请注意,我正在运行详细的 VLOGs(有关如何执行此操作,请参见我的答案:打开 TF 日志):

当我安装 Cuda 9.0 版本的 cuDNN v7.1.2 时,它实际上找到了它,并抱怨那个版本不够新 - 而实际上真正的问题是它不够旧,但至少我有了一些实际的数据可以处理。

最后我需要的是 Cuda 9.0 版本的 cuDNN v7.0.5,它可以正常工作。


1
谢谢!那正是我的情况。 - Artur Barseghyan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接