GPU上的张量流:没有已知设备,尽管cuda的deviceQuery返回"PASS"结果

kik*_*kik 44 tensorflow

注意:这个问题最初是在github上提出的,但它被要求在这里

我在gpu上运行tensorflow时遇到了麻烦,而且它似乎不是通常的cuda配置问题,因为一切似乎表明cuda已正确设置.

主要症状:运行tensorflow时,未检测到我的GPU(代码正在运行,并且它的输出).

与通常的问题不同的是,cuda似乎正确安装并且./deviceQuery从cuda样本运行成功(输出).

我有两张图形卡:

  • 用于我的显示器的旧GTX 650(我不想使用具有tensorflow的那个)
  • 我想要专注于tensorflow的GTX 1060

我用:

我试过了:

  • 加入/usr/local/cuda/bin/$PATH
  • 强制使用tensorflow脚本中的gpu放置with tf.device('/gpu:1'):(with tf.device('/gpu:0'):当它失败时,为了好的措施)
  • 将我想要使用的gpu列入白名单CUDA_VISIBLE_DEVICES,以防我存在旧的不支持的卡确实会导致问题
  • 用sudo运行脚本(因为为什么不)

以下是nvidia-sminvidia-debugdump -l的输出,以防它有用.

在这一点上,我觉得我已经遵循了所有的面包屑,并且不知道我还能尝试什么.我甚至不确定我是否正在考虑错误或配置问题.任何关于如何调试这个的建议将不胜感激.谢谢!

更新:在yaroslav的帮助下,我在github上通过提高日志级别来收集更多的调试信息,但它似乎没有说明设备选择:https://gist.github.com/oelmekki/760a37ca50bf58d4f03f46d104b798bb

更新2:使用theano正确检测gpu,但有趣的是它抱怨cuDNN太近,然后回退到cpu(代码运行,输出).也许这可能是张量流的问题?

mrr*_*rry 55

从日志输出中,看起来您正在运行TensorFlow(PyPI :)的CPU版本tensorflow,而不是GPU版本(PyPI :) tensorflow-gpu.运行GPU版本将记录有关CUDA库的信息,如果无法加载或打开驱动程序,则会出现错误.

如果运行以下命令,则应该能够在后续运行中使用GPU:

$ pip uninstall tensorflow
$ pip install tensorflow-gpu
Run Code Online (Sandbox Code Playgroud)

  • 这个答案很可能在 2021 年被弃用。还有其他解决方案吗? (3认同)
  • 每当我安装tensorflow-gpu时,它都会重新安装tensorflow.这应该发生吗?我无法检测到我的设备.. (2认同)

ngu*_*890 16

就我而言:

pip3 uninstall tensorflow
Run Code Online (Sandbox Code Playgroud)

是不足够的.因为重新安装时:

pip3 install tensorflow-gpu
Run Code Online (Sandbox Code Playgroud)

它仍然重新安装tensorflow与cpu而不是gpu.所以,在安装tensorfow-pgu之前,我试图删除site-packages卸载protobuf中的所有相关张量文件夹,它的工作原理!

得出结论:

pip3 uninstall tensorflow
Run Code Online (Sandbox Code Playgroud)

删除〜\ Python35\Lib\site-packages中的所有张量文件夹

pip3 uninstall protobuf
pip3 install tensorflow-gpu
Run Code Online (Sandbox Code Playgroud)


Mar*_*onn 12

这里没有其他答案对我有用.经过一些修改后,我发现在处理从二进制构建的Tensorflow时,这解决了我的问题:


第0步:卸载protobuf

pip uninstall protobuf
Run Code Online (Sandbox Code Playgroud)

第1步:卸载tensorflow

pip uninstall tensorflow
pip uninstall tensorflow-gpu
Run Code Online (Sandbox Code Playgroud)

第2步:强制重新安装Tensorflow并支持GPU

pip install --upgrade --force-reinstall tensorflow-gpu
Run Code Online (Sandbox Code Playgroud)

第3步:如果还没有,请设置CUDA_VISIBLE_DEVICES

所以对我来说有2个GPU就可以了

export CUDA_VISIBLE_DEVICES=0,1
Run Code Online (Sandbox Code Playgroud)

  • 你拯救了我的一天! (2认同)

Kee*_*nan 7

可能看起来很愚蠢,但sudo reboot对于我和其他几个人来说,已经解决了完全相同的问题。