调试时CUDA设备ID是否会更改?

时间:2016-03-22 17:05:33

标签: cuda

我注意到,在具有两个正在运行的CUDA SM_2.x设备的主机上,第一个运行显示器,在调试器中调用cudaSetDevice(1)会引发CUDA错误10(无效设备)。但是,它在调试器外部执行时工作正常。我还注意到,通常具有ID 1的设备在调试器中具有设备ID。

我怀疑是否确认设备ID 0仅分配给第一个可用设备,而不是第一个PCIe插槽中安装的设备?

如果是这样,有没有办法确保例如cudaSetDevice(1)总是选择相同的设备,不管CUDA如何分配设备ID?

1 个答案:

答案 0 :(得分:1)

真正简短的回答是,不,没有办法做到这一点。话虽如此,硬编码固定设备ID永远不是正确的事情。你想要:

  1. 从API为您返回的可用设备列表中选择一个ID(并且有许多非常有用的API可以让您获得所需的设备),或者
  2. 您的代码中根本不使用任何显式设备选择,并依赖适当的驱动程序计算模式设置和/或CUDA_VISIBLE_DEVICES环境设置让驱动程序自动选择适合您的有效设备ID。
  3. 您选择的内容可能取决于您的代码最终部署的环境。