我在安装了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和重新启动),但它们没有帮助。
您有什么建议可以尝试吗?