Keras + tensorflow + P100:cudaErrorNotSupported = 71 错误

Posted

技术标签:

【中文标题】Keras + tensorflow + P100:cudaErrorNotSupported = 71 错误【英文标题】:Keras + tensorflow + P100 : cudaErrorNotSupported = 71 error 【发布时间】:2017-09-14 06:08:02 【问题描述】:

抱歉,如果已经在其他地方报告了此问题,我已经寻找了很长时间,但没有成功。

在使用 P100 GPGPU 使用 keras+tensorflow 运行简单的 mnist 示例(可在 github /fchollet/keras/blob/master/examples/mnist_cnn.py 上获得)时,我们在 keras/tensorflow/cuda 的交叉点遇到了一个问题:

使用 TensorFlow 后端。 我tensorflow/stream_executor/dso_loader.cc:135]在本地成功打开了CUDA库libcublas.so.8.0 我tensorflow/stream_executor/dso_loader.cc:135]本地成功打开CUDA库libcudnn.so.5 我tensorflow/stream_executor/dso_loader.cc:135]本地成功打开CUDA库libcufft.so.8.0 我tensorflow/stream_executor/dso_loader.cc:135]本地成功打开CUDA库libcuda.so.1 我tensorflow/stream_executor/dso_loader.cc:135]本地成功打开CUDA库libcurand.so.8.0 我 tensorflow/core/common_runtime/gpu/gpu_device.cc:885] 找到具有属性的设备 0: 名称:特斯拉P100-PCIE-16GB 主要:6 次要:0 memoryClockRate (GHz) 1.3285 pciBusID 0000:02:00.0 总内存:15.89GiB 可用内存:15.51GiB 我 tensorflow/core/common_runtime/gpu/gpu_device.cc:906] DMA: 0 我 tensorflow/core/common_runtime/gpu/gpu_device.cc:916] 0: Y I tensorflow/core/common_runtime/gpu/gpu_device.cc:975] 创建 TensorFlow 设备 (/gpu:0) -> (设备:0,名称:Tesla P100-PCIE-16GB,pci 总线 ID:0000:02:00.0) F tensorflow/core/common_runtime/gpu/gpu_device.cc:121] 检查失败:err == cudaSuccess (71 vs. 0) srun:错误:nid02011:任务 0:中止 srun:终止作业步骤 1262138.0

我们使用的是 keras 2.0.2,tensorflow 1.0.0。 CUDA 8.0.53。 我们似乎在 python2.7.12 和 python3.5.2(keras 1.2 和 2.0 ...)中都遇到了这个问题

Bare tensorflow runtest 运行良好,这让我们认为这真的是在 keras/tensorflow/cuda 的交汇处。

相同的测试在不同的机器上运行良好,使用相同版本的软件但使用 TitanX GPGPU。

似乎可以追溯到tensorflow line 121

CUDA error types

cudaErrorNotSupported = 71 此错误表示当前系统或设备不支持尝试的操作。

我不知道下一步该去哪里解决这个问题。我将非常感谢有关此问题的任何反馈和指导。

【问题讨论】:

github.com/tensorflow/tensorflow/issues/9080 -- 您是否在安装了 CUDA MPS 的系统上运行?如果是这样,那可能是问题 非常感谢@talonmies,当我在去 stackorverflow 之前开始寻找答案时,事实证明这是非常相关的和过时的。 【参考方案1】:

这里问题的根本原因似乎是 Tensorflow 和 CUDA MPS 服务之间的不兼容(请参阅相关的 Tensorflow 跟踪器问题 here)。它应该只影响使用 MPS 服务来提高对 GPU 设备的访问粒度的集群和大型系统。

这可能应该作为一个错误向 NVIDIA 和 Tensorflow 开发团队提出。

已编辑以添加来自 Tensorflow 跟踪器问题的诊断:

似乎根本原因是在 Tensorflow 中广泛使用流回调,在 NVIDIA 最近发布的 Volta 硬件之前,MPS 不支持这种回调。显然,也可以使用选项从源代码构建 Tensorflow,这将使其在早期硬件上也能与 MPS 一起正常工作。有关详细信息,请参阅链接的跟踪器讨论。

[此答案由 cmets 组装而成,并添加为社区 wiki 条目,以便将其从 CUDA 标记的未回答列表中删除]

【讨论】:

以上是关于Keras + tensorflow + P100:cudaErrorNotSupported = 71 错误的主要内容,如果未能解决你的问题,请参考以下文章

tensorflow与对应的keras版本

Tensorflow+Keras用Tensorflow.keras的方法替代keras.layers.merge

Tensorflow+Keras用Tensorflow.keras的方法替代keras.layers.merge

keras 后端 theano/tensorflow

keras与tensorflow.python.keras - 使用哪一个?

keras 与 tensorflow.python.keras - 使用哪一个?