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 的交叉点遇到了一个问题:
我们使用的是 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的方法替代keras.layers.merge
Tensorflow+Keras用Tensorflow.keras的方法替代keras.layers.merge