我收到“运行时 API 错误:设备序号无效。”当我使用 GTX 590 在 Ubuntu 10.04 上运行 cuda 代码时

Posted

技术标签:

【中文标题】我收到“运行时 API 错误:设备序号无效。”当我使用 GTX 590 在 Ubuntu 10.04 上运行 cuda 代码时【英文标题】:I get "Runtime API error : invalid device ordinal." when I run cuda code on Ubuntu 10.04 using a GTX 590 【发布时间】:2012-10-19 14:00:49 【问题描述】:

我正在尝试在带有 GeForce GTX 590 的 Ubuntu 10.04 系统上运行 cuda 应用程序。 我正在使用 295.41 驱动程序。我已经使用此代码设置了 3 个其他系统,并且都可以正常工作。其中两个有 GT 640,一个有 GTX 480(或 460——我不太记得了)。我之前在这台机器上用相同的硬件运行过 cuda 代码,但它已经被格式化了。

当我运行我的代码和运行 SDK 示例时,我得到了无效的设备序号错误。我用 gentoo 设置了这台机器并得到了这个错误 - 我认为它可能与操作系统有关,所以我安装了 ubuntu 并遇到了同样的问题。我想不出还有什么可以尝试的。有人有什么建议吗?

下面是一些可能很方便的输出。

user@pchan1:~$ lspci | grep nVidia 02:00.0 PCI 桥:nVidia Corporation 设备 05b1 (rev a3) 03:00.0 PCI 桥:nVidia Corporation 设备 05b1 (rev a3) 03:02.0 PCI 桥:nVidia Corporation 设备 05b1 (rev a3) 06:00.0 PCI 桥:nVidia Corporation 设备 05b9 (rev a3) 07:00.0 PCI 桥:nVidia Corporation 设备 05b9 (rev a3) 07:02.0 PCI 桥:nVidia Corporation 设备 05b9 (rev a3) 08:00.0 3D 控制器:nVidia Corporation Device 1088 (rev a1) 08:00.1 音频设备:nVidia Corporation 设备 0e09 (rev a1) 09:00.0 VGA 兼容控制器:nVidia Corporation Device 1088 (rev a1) 09:00.1 音频设备:nVidia Corporation 设备 0e09 (rev a1)

user@pchan1:~$ ls -l /dev/nvidia* crw-rw-rw- 1 根 195, 0 2012-10-30 10:22 /dev/nvidia0 crw-rw-rw- 1 根 195, 1 2012-10-30 10:22 /dev/nvidia1 crw-rw-rw- 1 root root 195, 255 2012-10-30 10:22 /dev/nvidiactl

编辑:当我让这个系统工作时,我使用的是 64 位操作系统和 64 位驱动程序。我现在使用的是 32 位操作系统和 32 位驱动程序。

另一个编辑:

非常感谢 Przemyslaw Zych。你帮我解决了问题。 我必须通过执行以下操作将 Nouveau 列入黑名单。 在 /etc/modprobe.d 中添加一个名为 blacklist-nouveau.conf 的文件(只是 .conf 结尾很重要),并在该文件中放入以下两行。 新黑名单 新选项 modeset=0 按照以下指南的说明ftp://download.nvidia.com/XFree86/Linux-x86_64/256.44/README/commonproblems.html

问题解决了:)

【问题讨论】:

你可以尝试运行nvidia-smi 命令吗?您确定没有其他驱动程序正在使用 GPU(例如 nouveau 或 vesa?)是已加载的 nvdia 驱动程序(lsmod)。你用的是哪个 ubuntu? 如果我 lsmod 我在那里看到 nvidia,但也看到 nouveau。当我输入 nvidia-smi 时出现错误:NVIDIA: could not open the device file /dev/nvidia0 (input/output error)。初始化 NVML 失败:未知错误 所以我不知道如何将其标记为已解决或给予您信任。但是你修好了。 @Daniel:最简单的做法是写下你所做的事情作为对自己问题的回答。您稍后可以接受自己的答案,它会将问题标记为已完成。 【参考方案1】:

正如 Przemyslaw Zych 所说,有另一个驱动程序使用 GPU(在本例中为 nouveau)。 要使用 nvidia 驱动程序 nouveau,必须禁用。该过程在此处列出 - ftp://download.nvidia.com/XFree86/Linux-x86_64/256.44/README/commonproblems.html - 我将在下面进行总结。

在 /etc/modprobe.d 中创建一个名为 blacklist-nouveau.conf 的文件 添加以下两行: 新黑名单 新选项 modeset=0 然后重启电脑。这应该可以防止加载 nouveau 并允许使用 nvidia 驱动程序。

【讨论】:

以上是关于我收到“运行时 API 错误:设备序号无效。”当我使用 GTX 590 在 Ubuntu 10.04 上运行 cuda 代码时的主要内容,如果未能解决你的问题,请参考以下文章

当我尝试输入 phpunit 时,我不断收到此错误

当我使用 HTTP 协议尝试请求时,为啥会收到错误的请求响应?

当我尝试保存测试计划时,为啥会收到 NoClassDefFound 错误?

当我的应用程序进行电池优化时,为啥我无法收到推送通知?

当我减少应用销售地区的数量时,谁会收到更新?

当我发送超过过期日期的令牌时,为啥会收到 401 错误?