TensorFlow: 调用 cuInit 失败:CUDA_ERROR_NO_DEVICE

26

我的测试:

import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()`

错误 :

c:\l\work\tensorflow-1.1.0\tensorflow\stream_executor\cuda\cuda_driver.cc:405]

cuInit调用失败: CUDA_ERROR_NO_DEVICE

-> 但是"/cpu:0"可以正常工作

配置 :

nvidia-smi : enter image description here

  • CUDA版本9.1
  • tensorflow-1.1.0
  • Windows 10
  • cudnn64_7.dll (安装在C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.1\bin)
  • 仅tensorflow-gpu已安装在我的Conda环境中

为什么Tensorflow无法检测到我的GPU?


如果您正在使用预构建的Tensorflow 1.1二进制文件,则需要CUDA 8和cuDNN 5.1。这是您自己构建的吗? - GPhilo
你是不是通过pip安装了"tensorflow"而不是"tensorflow-gpu"呢? - GPhilo
没有,tensorflow-gpu 已经安装了。 - Vincent Roye
现在我使用的是:
  • Tensorflow-gpu 1.6
  • CUDA 9.0
  • Cudnn 7.0 仍然出现错误:failed call to cuInit: CUDA_ERROR_NO_DEVICE
- Vincent Roye
等一下,在你的问题中有 os.environ["CUDA_VISIBLE_DEVICES"]="1"。你的系统上有多少个GPU?截图只显示了一个,设备ID为0... - GPhilo
显示剩余2条评论
3个回答

37

这个问题已经在GitHub上解决了。如果您为CUDA_VISIBLE_DEVICES环境变量设置了无效值,比如当您只有一张显卡(其ID为0)并且设置了CUDA_VISIBLE_DEVICES=1CUDA_VISIBLE_DEVICES=2时,将显示此错误消息。


6
似乎CUDA_VISIBLE_DEVICES=-1也出现了这个问题,该参数告诉Tensorflow不使用GPU。版本为Tensorflow 2.4.1。 - Kenneth Evans

37

正确的答案是添加以下代码行:

import os
os.environ['CUDA_VISIBLE_DEVICES'] = "0"

4
谢谢。有趣的是,即使明确使用“CUDA_VISIBLE_DEVICES=0 python …”不起作用,这个解决方案也有所帮助。 - Ivan Kovtun
1
很多地方都说要使用“-1”来忽略GPU,但这只会导致出现错误消息。将其设置为零是有道理的,并且它可以正常工作(想想看)。 - DAG

0

如果你正在使用 Google Colab,可能是因为你的运行时不是 GPU。点击“运行时”下拉菜单。选择“更改运行时类型”。现在选择 GPU。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接