2

假设在单个节点上,有几个具有不同计算能力的设备,nvidia 如何对它们进行排名(我的排名是指 cudaSetDevice 分配的数字)?

有没有关于这方面的一般指导方针?谢谢。

4

1 回答 1

4

我相信与cudaGetDevicecudaSetDevice对应的设备的顺序(即 CUDA 运行时枚举顺序应该基于确定最快设备并使其成为第一的启发式算法,或者基于PCI 枚举顺序。您可以使用deviceQuery 示例确认这一点,它根据为 cudaSetDevice 枚举的顺序打印设备的属性(包括 PCI ID)。

但是,我建议不要以此为基础做出任何决定。PCI 枚举顺序并没有什么神奇之处,甚至系统 BIOS 升级之类的事情都可以改变设备枚举顺序(交换设备、移动到另一个系统等)

通常最好查询设备(请参阅 deviceQuery 示例),然后根据返回的特定设备和/或其属性做出决定。您还可以使用cudaChooseDevice启发式地选择设备。

您可以使 CUDA 运行时根据CUDA 8 中的环境变量设置(或缺少)选择“Faster First”或“PCI Enumeration Order” 。

于 2013-04-12T02:41:56.797 回答