3

我们正在使用带有 NVML 自动检测功能的 Slurm 20.02,在一些带有 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 在 [0,1,2,4]、[1,2,3,7]、[0,4,5,6] 等组中分配 4-GPU 作业(使用 nvidia-smi 编号,次要数字,即上表中的 NUMA Affinity),具有一对 NVLinked GPU 和 2 个未链接 GPU。
我们期待看到具有多对 NVLinked GPU 的组,例如 [0,1,2,3] 或 [0,1,4,5]。

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

# 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?
4

0 回答 0