TensorFlow:无法创建cudnn句柄:CUDNN_STATUS_INTERNAL_ERROR但没有运行其他TF实例

时间:2017-09-02 15:03:40

标签: tensorflow cudnn

我正在尝试使用VGG16运行一些基本的传输学习代码。我使用的是Ubuntu 16.04,TensorFlow 1.3和Keras,我有4个1080ti GPU。

当我到达这行代码时:

 datagen = ImageDataGenerator(rescale=1. / 255)
 model = applications.VGG16(include_top=False, weights='imagenet')

nvidia-smi的输出显示:

Processes:                                                       GPU Memory |
| GPU       PID  Type  Process name                                   Usage   

|    0     14241    G   /usr/lib/xorg/Xorg                             256MiB |
|    0     14884    G   compiz                                         155MiB |
|    0     16497    C   /home/simon/anaconda3/bin/python             10267MiB |
|    1     16497    C   /home/simon/anaconda3/bin/python             10611MiB |
|    2     16497    C   /home/simon/anaconda3/bin/python             10611MiB |
|    3     16497    C   /home/simon/anaconda3/bin/python             10611MiB |

+ ---------------------------------------------- ------------------------------- +

然后终端输出

 2017-09-02 15:59:15.946927: E tensorflow/stream_executor/cuda/cuda_dnn.cc:371] could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR
 2017-09-02 15:59:15.946960: E tensorflow/stream_executor/cuda/cuda_dnn.cc:338] could not destroy cudnn handle: CUDNN_STATUS_BAD_PARAM
 2017-09-02 15:59:15.946973: F tensorflow/core/kernels/conv_ops.cc:672] Check failed: stream->parent()->GetConvolveAlgorithms( conv_parameters.ShouldIncludeWinogradNonfusedAlgo<T>(), &algorithms) 

我的jupyter笔记本kernal死了。

显然这是一个内存问题,但我不明白为什么我的GPU会被这段代码占用。我应该补充说,这个问题只是在过去的24小时内开始,所有这些代码在一天前运行良好。这里有类似问题的答案很多,但它们都涉及TF运行的其他实例(并建议关闭它们)。就我而言,这是唯一运行的TF应用程序(或任何其他应用程序)。

3 个答案:

答案 0 :(得分:0)

由于除了ShouldIncludeWinogradNonfusedAlgo()以外的原因,CHECK可能会失败。例如,如果未能创建cudnnSupport实例,则CHECK也将失败。我建议你在github上发布一个更详细的问题,我可以看看。但是更新CUDA驱动程序然后重新安装cudnn可能是第一件要尝试的事情。基本上是为了确保CUDA和cudnn环境最近没有改变。此外,如果可能的话,优选最小的再现器。谢谢!

答案 1 :(得分:0)

尝试杀死所有python进程,然后删除〜/ .nv文件夹并再次运行它。它对我有同样的错误。

答案 2 :(得分:0)

strickon here解决。我也选择了一个有效的百分比,即0.7。:

config = tf.ConfigProto()
config.gpu_options.per_process_gpu_memory_fraction = 0.7
session = tf.Session(config=config, ...)