【问题标题】:How to choose a non busy CUDA device?如何选择非繁忙的 CUDA 设备?
【发布时间】:2013-06-09 23:10:01
【问题描述】:

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

我的问题是:有办法在运行时检查设备是否忙?

谢谢

【问题讨论】:

    标签: cuda cluster-computing gpgpu gpu hpc


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 非常感谢,我会看NVML的。集群使用 Slurm,只检查是否有空闲资源,但在启动任务之前我没有来自 Slurm 的 GPU ID 信息...
    • SLURM 可以通过generic resource 机制管理 GPU。这里有一些step-by-step instructions 供您的集群管理器使用。如果设置正确,则无需在工作中检查 GPU 情况,因为只会分配您要求的 GPU,您甚至无法访问节点上的其他 GPU。
    猜你喜欢
    • 2017-09-02
    • 1970-01-01
    • 2016-08-29
    • 2015-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    相关资源
    最近更新 更多