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

2024-06-18

注:这个问题最初是在github上问的 https://github.com/tensorflow/tensorflow/issues/7648#issuecomment-280866214,但被要求改为在这里

我在 GPU 上运行 Tensorflow 时遇到问题,这似乎不是常见的 cuda 配置问题,因为一切似乎都表明 cuda 设置正确。

主要症状:运行tensorflow时,未检测到我的gpu(正在运行的代码 https://gist.github.com/oelmekki/cafda411bf5c2ea695d984fa98e0995b, and 它的输出 https://gist.github.com/oelmekki/77235c6b0dde99b3438f190eb557f40f).

与常见问题不同的是,cuda 似乎已正确安装并运行./deviceQuery从 cuda 样本中成功(output https://gist.github.com/oelmekki/fe65a15daec45aa90ec33b10b51d3aae).

我有两个显卡:

  • 一台旧的 GTX 650 用于我的显示器(我不想将其与张量流一起使用)
  • 我想专用于张量流的 GTX 1060

I use:

  • 张量流-1.0.0 https://pypi.python.org/pypi/tensorflow
  • cuda-8.0(ls -l /usr/local/cuda/lib64/libcud* https://gist.github.com/oelmekki/6e5e9d7d1ea871e1d73efae307efe9ce)
  • cudnn-5.1.10
  • python-2.7.12
  • nvidia-drivers-375.26(这是由 cuda 安装并替换了我的发行版驱动程序包)

我试过了:

  • adding /usr/local/cuda/bin/ to $PATH
  • 使用以下命令强制将 GPU 放置在张量流脚本中with tf.device('/gpu:1'): (and with tf.device('/gpu:0'):当它失败时,作为一个很好的措施)
  • 将我想要使用的 GPU 列入白名单CUDA_VISIBLE_DEVICES,以防我的旧的不受支持的卡的存在确实引起了问题
  • 使用 sudo 运行脚本(因为为什么不呢)

这是的输出英伟达-SMI https://gist.github.com/oelmekki/7bdcb5cc2f791cea561a60f8b21e87b5 and nvidia-debugdump -l https://gist.github.com/oelmekki/b83a5a0a72e8924aeb44b70b3598f9b4,以防万一有用。

此时,我觉得我已经遵循了所有的面包屑,并且不知道我还可以尝试什么。我什至不确定我是否正在考虑错误或配置问题。任何有关如何调试此问题的建议将不胜感激。谢谢!

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

Update 2:使用 theano 可以正确检测 GPU,但有趣的是,它抱怨 cuDNN 太新,然后回退到 cpu (code ran https://gist.github.com/oelmekki/34b6e41a0ff2b17ff9f39bcf56d0635a, output https://gist.github.com/oelmekki/11626d6b34058337dae64f1915e5a9fe)。也许这也可能是张量流的问题?


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

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

$ pip uninstall tensorflow
$ pip install tensorflow-gpu
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GPU 上的张量流:尽管 cuda 的 deviceQuery 返回“PASS”结果,但没有已知设备 的相关文章

随机推荐

  • NestJs/Mongoose 中的自动递增序列

    我正在将 NodeJs 项目迁移到 NestJs 该项目使用 MongoDB 作为后端数据库 使用 Mongoose 作为 ODM 我当时用的是猫鼬序列 https github com ramiel mongoose sequence插件
  • 如何在 Objective C 中使用 swift 文件

    我想在 Objective C 代码中使用我的 Swift 文件 我找到了不同的链接 说明了如何操作 我的项目名称是 测试项目 我将 import Test Project Swift h 导入到我的 m 文件中 以在 Objective
  • 有没有一个 PHP 函数可以交换两个变量的值?

    比如说我有 var1 ABC var2 123 在某些条件下我想像这样交换两者 var1 123 var2 ABC 是否有一个 PHP 函数可以执行此操作 而不必创建第三个变量来保存其中一个值 然后重新定义每个值 就像这样 var3 var
  • 在perl中调用基本构造函数

    从 Perl 中的类构造函数调用基本构造函数的正确方法是什么 我见过这样的语法 my class shift my a shift my b shift my self class gt SUPER new a b return self
  • Chart js:更新具有两个数据集的折线图

    我想用两个数据集更新图表js中的折线图 我以某种方式设法清空图表 然后能够填充其中一个数据集 但无法使两个数据集都工作 这是代码 ajaxRequest url reports updateChart filter true method
  • Vb中读取USB存储设备的序列号

    是否可以使用VB读取USB驱动器的序列号 这将为您提供 net 中驱动器的信息 包括 USB 设备 只需导入这些 导入脚本 导入系统 IO Private Class USBsn Private Sub Button1 Click ByVa
  • zsh:命令替换和正确引用

    我有一个脚本P它接受文件名作为参数 P file1 file2 file3 我也有一个脚本G它生成一个 通常是短列表 文件名 每行一个文件名 在我想写的主脚本中zsh 我想用G生成要处理的文件名P 天真的尝试是这样的 P G 这几乎很有效
  • 从 SQLCMD 执行 CREATE VIEW 和 ALTER VIEW

    我正在尝试使用 sql cmd 执行包含以下内容的 sql 文件 sqlcmd S localhost dbInstance i Sample sql v filepath C Sql 示例 sql内容 根据手册 CREATE VIEW 必
  • 如何实现从调用者动态创建对象和类的零参数构造函数基类?

    我有 4 个类 它们都实现了非常相似的代码块 唯一的区别是每个人都需要实例化一个单独的Object and Myclass 在运行时 下面Action类是一个简化版本 实际代码要长得多 通常我会传入参数来根据调用者提供的内容创建对象和类 然
  • 浮点运算的最佳实践

    我正在对精确到小数点后第二位的小数输入执行加法和减法 我试图通过乘以 100 将它们转换为整数来提高准确性 但效果却相反 考虑以下代码和输出 double d 2 01 int a int d 100 0 cout lt lt a lt l
  • GridView 模板列有条件设置为只读

    有没有办法将 GridView 上的模板列从代码隐藏设置为只读 就像如果测试Admin true make readonly false else readonly true 我发现穆罕默德 阿赫塔尔的答案几乎是正确的 只是我需要在我的案例
  • jquery ui 选项卡内的 Openlayers

    我想在 jquery ui 选项卡中使用 Openlayers 但出现错误 大小为空 有同样的问题 解释于jquery 选项卡 http docs jquery com UI Tabs my slider 2C Google Map 2C
  • Swagger/OpenAPI 注释 V3 - 在 swagger 注释中使用 Enum 值

    我正在使用 Swagger OpenApi V3 注释创建应用程序的 API 描述 从以下依赖项导入
  • Spring @RequestParam 和控制器接口

    我对以下行为感到困惑 RequestParam value someValue 在里面docs https docs spring io spring docs current javadoc api org springframework
  • 使用设备函数指针数组

    我需要以下设备版本 主机代码 double func double x double func1 double x return x 1 double func2 double x return x 2 double func3 doubl
  • AngularUI 可排序不适用于多个应用程序

    我创建了带有可排序列表的 angularjs 应用程序 我的应用程序可以与其他不同的应用程序一起多次包含在页面中 每个角度应用程序都是独立的用户控制 var myapp angular module myapp ui myapp contr
  • 用纯JS检查元素是否有背景图片?

    检查特定元素是否具有的正确方法是什么background image与它相关联 在纯Javascript中 现在我有这个 var elementComputedStyle window getComputedStyle element va
  • fetch().then() 返回内容类型和正文[重复]

    这个问题在这里已经有答案了 互联网上的每个 fetch API 示例都展示了如何使用 response json response blob 等仅返回正文 我需要的是调用一个将内容类型和主体都作为 blob 的函数 但我不知道该怎么做 fe
  • 该操作对于事务状态无效

    我有一个TransactionScope 堵塞 它总是卡在插入语句中 它在活动监视器中显示为阻塞任务 因此它阻塞 SQL 服务器 并且在超时后 我收到此错误 该操作对于事务的状态无效 出了什么问题 const TransactionScop
  • GPU 上的张量流:尽管 cuda 的 deviceQuery 返回“PASS”结果,但没有已知设备

    注 这个问题最初是在github上问的 https github com tensorflow tensorflow issues 7648 issuecomment 280866214 但被要求改为在这里 我在 GPU 上运行 Tenso