【问题标题】:TensorFlow: could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR but no other TF instances runningTensorFlow:无法创建 cudnn 句柄:CUDNN_STATUS_INTERNAL_ERROR 但没有其他 TF 实例正在运行
【发布时间】:2017-09-02 15:03:39
【问题描述】:

我正在尝试使用 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 notebook 内核死了。

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

【问题讨论】:

  • 你确定16497不是僵尸进程吗?你试过重启吗?
  • 没有罗伯特。我寻找僵尸进程,但没有。这真的很烦人,因为几乎所有与此问题相关的 SO 答案都表明这是由僵尸进程的内存消耗引起的......

标签: tensorflow cudnn


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      strickon here 解决。我也能够通过选择一个有效的百分比来使其工作,即 0.7。:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-08-26
        • 1970-01-01
        • 2019-02-01
        • 1970-01-01
        • 1970-01-01
        • 2019-09-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多