假设在一个节点上,有几个具有不同计算能力的偏差,nvidia如何对它们进行排名(按排名我的意思是cudaSetDevice指定的数字)?
有关于此的一般指导原则吗?感谢。
答案 0 :(得分:4)
我相信对应于cudaGetDevice和cudaSetDevice的设备的排序(即CUDA运行时枚举顺序应该基于确定最快设备的启发式并使其成为第一个或基于{ {3}}。您可以使用PCI enumeration order进行确认,deviceQuery sample根据cudaSetDevice枚举的顺序打印设备属性(包括PCI ID)。
但我建议不要对此作出任何决定。关于PCI枚举顺序没有什么神奇之处,甚至像系统BIOS升级这样的东西也可以改变设备枚举顺序(可以交换设备,移动到另一个系统等)。
通常最好查询设备(请参阅deviceQuery示例),然后根据返回的特定设备和/或其属性做出决策。您也可以使用cudaChooseDevice启发式选择设备。
您可以使CUDA运行时根据CUDA 8中environment variable的设置(或缺少)选择“Faster First”或“PCI Enumeration Order”。