我已经在Ubuntu 16.04上使用Cuda 9.0和CuDNN 7.0.5以及vanilla Python 2.7安装了TensorFlow 1.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消息(请参阅下面的链接以了解如何执行此操作)并未产生任何其他相关消息。
这里的关键信息可能是&#34;选择默认的DNN插件,cuDNN&#34;,因为查看代码我可能认为它无法加载cuDNN库模块,但是据我所知,它实际上是正常的(所以不是警告),问题可能是其他问题。
例如&#34; CUDNN_STATUS_NOT_INITIALIZED&#34;消息似乎是在早期版本中由于TF过于积极地提前分配内存(在TF GitHub问题列表中找到),因此CuDNN无法初始化,但我尝试了这些补救措施(包括重置GPU并重新启动),但是他们没有帮助。
关于我接下来应该尝试什么的任何想法?
答案 0 :(得分:8)
好的,我发现了这个,这是因为我安装了错误版本的cuDNN,所以我怀疑它实际上并没有找到正确的共享库是真的。
基本上我安装了cuDNN v7.1.2 for Cuda 9.1
而不是cuDNN v7.1.2 for Cuda 9.0
,这似乎导致它无声地失败 - 尽管我此前预计会出现错误消息。请注意,我已经运行了详细的VLOG(有关如何执行此操作的更多信息,请参阅此帖子中的回答Turning on TF Logs):
当我安装cuDNN v7.1.2 for Cuda 9.0
时,确实找到了并且抱怨该版本不够新 - 实际上真正的问题是它不够老,但至少我有一些真实的数据与之合作。
最终cuDNN v7.0.5 for Cuda 9.0
是我需要的,也是有效的。
答案 1 :(得分:-1)
您之前遇到过此错误吗?
UnknownError(请参阅上面的回溯):无法获取卷积算法。这可能是因为cuDNN初始化失败,所以请尝试查看上面是否打印了警告日志消息。 [[node 0-convolutional_2(定义在D:\ pattern-recognition-multi-GPU \ darkflow \ darkflow \ net \ ops \ convolution.py:71)= Conv2D [T = DT_FLOAT,_class = [“ loc:@ 0- convolutional_3 / cond / FusedBatchNorm_1 / Switch“],data_format =” NCHW“,膨胀= [1,1,1,1],padding =” VALID“,步幅= [1,1,1,1],use_cudnn_on_gpu = true, _device =“ / job:localhost / replica:0 / task:0 / device:GPU:0”](0-convolutional_2-0-TransposeNHWCToNCHW-LayoutOptimizer,0-convolutional /内核/读取)]] [[{{node output / _89}} = _Recvclient_terminated = false,recv_device =“ / job:localhost /副本:0 / task:0 / device:CPU:0”,send_device =“ / job:localhost /副本:0 / task:0 / device:GPU:0“,send_device_incarnation = 1,tensor_name =” edge_676_output“,tensor_type = DT_FLOAT,_device =” / job:localhost /副本:0 / task:0 / device:CPU:0“]]] < / p>