未设置 --gres 时,Slurm 不限制作业中可用 GPU 的数量

问题描述 投票:0回答:1

我有一个带有 4 个 GPU 的一体化节点。我遇到的问题是,如果未设置 --gres=gpu:n,则所有 GPU 均可用于作业。

环境“$CUDA_VISIBLE_DEVICES”为空。这是预料之中的。

这是我的 srun 命令:

srun --mpi=none -n1 -p debug python test_gpu.py
if torch.cuda.is_available():
    # Get the number of available GPUs
    num_gpus = torch.cuda.device_count()

num_gpus 为 4。并且所有 GPU 都可用。

这是我的slurm.conf

SlurmctldHost=gpu-server35
GresTypes=gpu
MpiDefault=none
ProctrackType=proctrack/cgroup
ReturnToService=1
SlurmctldPidFile=/var/run/slurmctld.pid
SlurmctldPort=6817
SlurmdPidFile=/var/run/slurmd.pid
SlurmdPort=6818
SlurmdSpoolDir=/var/spool/slurmd
#SlurmUser=slurm
SlurmdUser=root
#SrunEpilog=
#SrunProlog=
StateSaveLocation=/var/spool
SwitchType=switch/none
#TaskEpilog=
TaskPlugin=task/cgroup,task/affinity

#
# SCHEDULING
#DefMemPerCPU=0
#MaxMemPerCPU=0
#SchedulerTimeSlice=30
SchedulerType=sched/backfill
SelectType=select/cons_tres
SelectTypeParameters=CR_Core
#

#
# LOGGING AND ACCOUNTING
AccountingStorageType=accounting_storage/none
#AccountingStorageUser=
AccountingStoreJobComment=YES
ClusterName=cluster
JobCompType=jobcomp/none
#JobCompUser=
#JobContainerType=job_container/none
JobAcctGatherFrequency=30
#JobAcctGatherType=jobacct_gather/none
JobAcctGatherType=jobacct_gather/cgroup #optional for gathering metrics
PrologFlags=Contain                     #X11 flag is also suggested
SlurmctldDebug=info
SlurmctldLogFile=/var/log/slurmctld.log
SlurmdDebug=info
SlurmdLogFile=/var/log/slurmd.log

# COMPUTE NODES
NodeName=gpu-server35 Gres=gpu:tesla:2 CPUs=48 RealMemory=200000 Sockets=2 CoresPerSocket=12 ThreadsPerCore=2 State=UNKNOWN
PartitionName=debug Nodes=gpu-server35 Default=YES MaxTime=INFINITE State=UP

cgroup.conf

CgroupAutomount=yes
CgroupMountpoint=/sys/fs/cgroup
ConstrainCores=yes
ConstrainDevices=yes
ConstrainKmemSpace=no        #avoid known Kernel issues
ConstrainRAMSpace=yes
ConstrainSwapSpace=yes
TaskAffinity=no              #use task/affinity plugin instead                      

Slurm 限制作业中可用 GPU 的数量

python gpu nvidia slurm
1个回答
0
投票

首先要确保

gres.conf
文件完整,并正确指定
File=
参数。

然后,如果

cgroup
配置正确,则只有 Slurm 分配的 GPU 对作业进程可见。在 HPU 节点上的无 GPU 作业中运行
nvidia-smi
应该返回

No devices were found

如果不是这种情况,您应该仔细检查 cgroup 配置(在您的情况下看起来是正确的)并确保所有守护进程都已加载该配置(重新启动它们以确保)。

您还可以在

Slurm 任务序言
中设置 export CUDA_VISIBLE_DEVICES=,但请注意,这可能会被作业程序覆盖。

© www.soinside.com 2019 - 2024. All rights reserved.