【发布时间】:2026-01-14 11:20:04
【问题描述】:
假设在单个节点上,有几个具有不同计算能力的设备,nvidia 如何对它们进行排名(我的排名是指 cudaSetDevice 分配的数字)?
对此有什么一般指导方针吗?谢谢。
【问题讨论】:
假设在单个节点上,有几个具有不同计算能力的设备,nvidia 如何对它们进行排名(我的排名是指 cudaSetDevice 分配的数字)?
对此有什么一般指导方针吗?谢谢。
【问题讨论】:
我相信与cudaGetDevice 和cudaSetDevice 相对应的设备的顺序(即CUDA 运行时枚举顺序应该基于确定最快设备并将其排在第一位的启发式算法,或者基于PCI enumeration order。您可以使用deviceQuery sample 确认这一点,它会根据 cudaSetDevice 枚举的顺序打印设备的属性(包括 PCI ID)。
但是,我建议不要以此为基础做出任何决定。 PCI 枚举顺序并没有什么神奇之处,甚至系统 BIOS 升级之类的事情都可以改变设备枚举顺序(交换设备、移动到另一个系统等也可以)
通常最好查询设备(请参阅 deviceQuery 示例),然后根据返回的特定设备和/或其属性做出决定。您也可以使用cudaChooseDevice 启发式地选择设备。
您可以使 CUDA 运行时根据 CUDA 8 中 environment variable 的设置(或缺少)选择“Faster First”或“PCI Enumeration Order”。
【讨论】: