Slurm 没有以最佳方式分配多个 GPU

我们将 Slurm 20.02 与 NVML 自动检测一起使用,并且在一些具有 NVLink 的 8-GPU 节点上,Slurm 以一种令人惊讶的方式分配 4-GPU 作业,这似乎是次优的。

在具有 8 个 Nvidia A40 GPU、4 个 NVLink 桥接器和两个 AMD EPYC 7302 CPU 的系统上,我们具有以下拓扑结构:

$ nvidia-smi topo -m
        GPU0    GPU1    GPU2    GPU3    GPU4    GPU5    GPU6    GPU7    CPU Affinity    NUMA Affinity
GPU0     X      NV4     SYS     SYS     SYS     SYS     SYS     SYS     12-15,44-47     3
GPU1    NV4      X      SYS     SYS     SYS     SYS     SYS     SYS     8-11,40-43      2
GPU2    SYS     SYS      X      NV4     SYS     SYS     SYS     SYS     4-7,36-39       1
GPU3    SYS     SYS     NV4      X      SYS     SYS     SYS     SYS     0-3,32-35       0
GPU4    SYS     SYS     SYS     SYS      X      NV4     SYS     SYS     28-31,60-63     7
GPU5    SYS     SYS     SYS     SYS     NV4      X      SYS     SYS     24-27,56-59     6
GPU6    SYS     SYS     SYS     SYS     SYS     SYS      X      NV4     20-23,52-55     5
GPU7    SYS     SYS     SYS     SYS     SYS     SYS     NV4      X      16-19,48-51     4

Legend:
  X    = Self
  SYS  = Connection traversing PCIe as well as the SMP interconnect between NUMA nodes (e.g.,QPI/UPI)
  NV#  = Connection traversing a bonded set of # NVLinks

我们看到 Slurm 按组分配 4-GPU 作业,例如 [0,1,2,4]、[1,3,7]、[0,4,5,6](使用 nvidia-smi 编号,不是次要数字,即上表中的 NUMA Affinity),带有一对 NVLinked GPU 和 2 个未链接的 GPU。
我们期待看到诸如 [0,3] 或 [0,5] 之类的具有多对 NVLinked GPU 的组。

一些可能相关的规范/设置:

# NVIDIA: 
Driver Version: 460.32.03    
CUDA Toolkit Version: 11.1
# slurm.conf:
SelectType=select/cons_tres
SelectTypeParameters=CR_Core
accountingStorageTRES=gres/gpu
JobacctGatherType=jobacct_gather/linux

问题:

  • 这种行为是否符合预期?
  • 有没有办法强制 Slurm 分配多对 NVLinked GPU?
iCMS 回答:Slurm 没有以最佳方式分配多个 GPU

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/497110.html

大家都在问