当一台计算机有多个支持 CUDA 的 GPU 时,每个 GPU 都被分配一个device ID
. 默认情况下,CUDA 内核在device ID 0
. 您可以使用cudaSetDevice(int device)
来选择不同的设备。
假设我的机器中有两个 GPU:一个 GTX 480 和一个 GTX 670。CUDA如何确定哪个 GPU 是device ID 0
哪个 GPU 是device ID 1
?
关于 CUDA 如何分配设备 ID 的想法(只是头脑风暴):
- 计算能力降序
- PCI 插槽号
- 设备添加到系统的日期/时间(刚刚添加到计算机的设备的 ID 号较高)
动机:我正在研究一些 HPC 算法,我正在为几个 GPU 进行基准测试和自动调整。我的处理器有足够的 PCIe 通道以全带宽将 cudaMemcpys 驱动到 3 个 GPU。因此,我打算在我的计算机中只保留 3 个 GPU,而不是不断地在我的机器中进出 GPU。我希望能够预测当我在计算机中添加或更换一些 GPU 时会发生什么。