Slurm - 使用 cgroups 执行 GPU

Slurm - 使用 cgroups 执行 GPU

我在一台机器(Ubuntu 18.04)上运行 slurm 19.05 来调度 GPU 任务。但是,我无法使用 cgroups 设置 gpu 强制执行。

如果我设置约束设备=是在我的 cgroup.conf 文件中,TensorFlow 在运行时无法访问我的 GPUsrun --gres=gpu:1 run.sh相比之下,任务运行时可以独立于分配访问 gpu萨洛克, IE,salloc 运行. 运行 srun--gres=mps:50 运行.sh再次完美运行。

这是我的slurm.conf:

SlurmctldHost=gpu-node1
Epilog=/etc/slurm/epilog.d/epilog.sh
GresTypes=gpu,mps 
MpiDefault=none
PluginDir=/usr/lib/slurm
ProctrackType=proctrack/cgroup
Prolog=/etc/slurm/prolog.d/prolog.sh
ReturnToService=2
SlurmctldPidFile=/var/run/slurmctld.pid
SlurmctldPort=6817
SlurmdPidFile=/var/run/slurmd.pid
SlurmdPort=6818
SlurmdSpoolDir=/var/spool/slurm/d
SlurmUser=slurm
SlurmdUser=root 
StateSaveLocation=/var/spool/slurm/ctld
SwitchType=switch/none
TaskPlugin=task/cgroup
InactiveLimit=0
KillWait=30
MinJobAge=300
SlurmctldTimeout=120
SlurmdTimeout=300
Waittime=0

FastSchedule=0
SchedulerType=sched/backfill
SelectType=select/cons_tres
SelectTypeParameters=CR_CPU

AccountingStorageHost=localhost
AccountingStoragePass=/var/run/munge/munge.socket.2
AccountingStorageTRES=gres/gpu,gres/mps
AccountingStorageType=accounting_storage/slurmdbd
AccountingStorageUser=slurm
ClusterName=gpu-cluster
JobCompType=jobcomp/none
JobAcctGatherFrequency=30
JobAcctGatherType=jobacct_gather/linux
SlurmctldDebug=debug5
SlurmctldLogFile=/var/log/slurm/slurmctld.log
SlurmdDebug=debug5
SlurmdLogFile=/var/log/slurm/slurmd.log

NodeName=gpu-node1 NodeAddr=localhost Gres=gpu:1,mps:100 CPUs=8 RealMemory=7900 Sockets=1 CoresPerSocket=4 ThreadsPerCore=2 State=UNKNOWN 
PartitionName=DefaultPartition Nodes=gpu-node1 Default=YES MaxTime=720 State=UP

我的 cgroup.conf 如下所示:

CgroupAutomount=yes 
ConstrainCores=yes 
ConstrainDevices=yes
ConstrainRAMSpace=no

我的 gres.conf 如下所示:

Name=gpu Type=rtx2070 File=/dev/nvidia0
Name=mps Count=100 File=/dev/nvidia0

感谢您的帮助!

相关内容