2

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

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

谢谢

4

1 回答 1

3

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

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

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

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

于 2013-06-09T23:33:45.880 回答