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

问题描述:

我正在尝试使用VGG16运行一些基本的传输学习代码。我使用的是Ubuntu 16.04,TensorFlow 1.3和Keras,我有4个1080ti GPU。TensorFlow:无法创建cudnn句柄:CUDNN_STATUS_INTERNAL_ERROR但没有其他TF实例正在运行

当我到了这行代码:

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笔记本核心死亡。

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

+1

你确定16497是不是僵尸进程?你有没有尝试重新启动? –

+0

没有罗伯特。我寻找僵尸进程,没有。这真的很烦人,因为几乎所有与这个问题有关的答案都表明这是由于僵尸进程的内存泄漏造成的...... – GhostRider

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

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