我注意到,在具有两个正在运行的CUDA SM_2.x设备的主机上,第一个运行显示器,在调试器中调用cudaSetDevice(1)会引发CUDA错误10(无效设备)。但是,它在调试器外部执行时工作正常。我还注意到,通常具有ID 1的设备在调试器中具有设备ID。
我怀疑是否确认设备ID 0仅分配给第一个可用设备,而不是第一个PCIe插槽中安装的设备?
如果是这样,有没有办法确保例如cudaSetDevice(1)总是选择相同的设备,不管CUDA如何分配设备ID?
答案 0 :(得分:1)
真正简短的回答是,不,没有办法做到这一点。话虽如此,硬编码固定设备ID永远不是正确的事情。你想要:
CUDA_VISIBLE_DEVICES
环境设置让驱动程序自动选择适合您的有效设备ID。您选择的内容可能取决于您的代码最终部署的环境。