cudaGetDevice功能有什么不那么清楚?

时间:2014-08-21 06:22:38

标签: cuda

我正在开发一个集群,我有4个GPU连接到计算节点。所有GPU都基本相同k20没有区别。我想知道我的二进制文件运行在哪个GPU上? cudaGetDevice总是给我设备ID 0,因为我的二进制文件实际上在设备ID 2上运行(使用nvidia-smi检查)

使用此设备ID我想测量使用NVML库消耗的功率。

cudaGetDevice :Returns in *device the current device for the calling host thread.

获取此信息的任何其他方法?

1 个答案:

答案 0 :(得分:2)

来自nvidia smi doc

  

-i, - id = ID

     

显示单个指定GPU或单元的数据。指定的ID可以   是由返回的自然枚举中的GPU / Unit的基于0的索引   驱动程序,GPU的主板序列号,GPU的UUID或   显示单个指定GPU或单元的数据。指定的ID可以   是由返回的自然枚举中的GPU / Unit的基于0的索引   驱动程序,GPU的主板序列号,GPU的UUID或   GPU的PCI总线ID(作为域:总线:十六进制的device.function)。 是的   建议希望一致性的用户使用UUID或PCI总线   ID,因为不保证设备枚举顺序   可以共享重新启动和电路板序列号之间的一致性   在同一块板上的多个GPU之间

所以我要做的就是调用cudaGetDeviceProperties,并且建议调查返回的属性,例如pciBusID。然后,根据在所需PCI总线上找到的设备,我会使用适当的参数调用cudaSetDevice