求助:SLURM数组单GPU单任务并行仅两GPU运行的问题
SLURM任务数组仅启动2个GPU任务的问题排查与解决
可能的原因
从你提供的scontrol show job输出能看到,每个数组任务被分配了2个CPU核心(NumCPUs=2)。如果节点CPU核心总数有限,或者SLURM默认的CPU分配导致节点CPU资源被占满,剩下的任务就会进入PD(等待资源)状态。此外,也可能是SLURM分区或QOS配置限制了单个用户同时运行的任务数量。
解决方案
1. 减少每个任务的CPU分配
修改SLURM脚本,明确指定每个任务仅需1个CPU核心,降低CPU资源占用,让4个任务能同时启动:
#!/bin/bash #SBATCH --job-name=train #SBATCH --array=0-3 #SBATCH --nodes=1 #SBATCH --gpus-per-node=1 #SBATCH --cpus-per-task=1 # 添加该行限制CPU分配 srun python train.py --config=$SLURM_ARRAY_TASK_ID
2. 检查用户任务数限制
执行以下命令查看你的账号是否有同时运行任务数的限制:
sacctmgr show user $USER format=Name,MaxJobs
如果MaxJobs值为2,需联系集群管理员调整QOS或用户限制。
3. 确认节点GPU资源配置
检查节点是否正确配置了4个GPU:
sinfo -N -O NodeName,Gres
确保目标节点(chili)的Gres字段显示gpu:A6000:4。
4. 验证CPU资源空闲情况
提交任务前,用htop或nproc查看节点的CPU总数和当前占用情况,确保有足够空闲CPU核心供4个任务使用。
内容的提问来源于stack exchange,提问作者Vivek
相关产品推荐
相关产品推荐

