如何选择非繁忙的CUDA设备?

时间:2013-06-09 23:10:02

标签: cuda cluster-computing gpgpu gpu-programming hpc

我正在处理一个包含大量节点的集群,每个节点都有两个gpus。在群集中,我无法启动“nvidia-smi”来检查哪个设备正忙。我的代码在功能方面选择了最好的设备(使用cudaChooseDevice),但是当集群为两个不同的作业分配相同的节点时,我在同一个gpu上运行了两个任务。

我的问题是:有一种方法可以在运行时检查设备是否正忙?

由于

1 个答案:

答案 0 :(得分:3)

您的集群管理器应安装和使用集群管理(作业调度)软件,以便它们像CPU和内存一样分配和跟踪GPU。有许多作业调度程序可以执行此操作。即使在作业调度程序中没有明确的GPU支持,也可以构建可以正确分配GPU的作业进入/退出脚本。

您可以通过在应用程序中嵌入NVML来有效地包含nvidia-smi使用的相同功能。 nvidia-smi报告的任何查询或数据项都可以通过NVML以编程方式访问。

我也不清楚为什么你不能为你的工作启动一个脚本来检查哪些设备正在忙于使用nvidia-smi,然后选择一个不忙的设备。

但请记住,您可能执行的任何运行时检查都将受其他应用程序的行为影响。如果这些应用程序(无论是由您或其他用户启动)具有异常行为,您的运行时检查很容易被打败。