双GPU NVIDIA主机SLURM srun资源分配异常问题咨询
SLURM无法同时分配双GPU的问题排查与解决
核心原因
你遇到的问题本质是SLURM默认以节点为最小分配单位,如果没明确配置GPU资源拆分或指定GPU用量,先启动的交互式任务会独占整个节点,导致后续任务排队。
解决步骤
1. 确认节点GPU资源已正确配置
先检查SLURM是否识别到节点的2块GPU:
sinfo -N -l
查看输出中的Gres字段,应该显示gpu:2。如果没有这个字段,需要修改slurm.conf配置文件,在对应节点的配置行添加:
Gres=gpu:2
修改后重启SLURM服务(具体命令依系统而定,比如systemctl restart slurmctld和systemctl restart slurmd)。
2. 提交任务时明确指定GPU数量
使用srun启动交互式任务时,必须加上--gres=gpu:1参数,告诉SLURM只分配1块GPU:
srun --gres=gpu:1 --pty bash
这样每个用户的任务只会占用1块GPU,另一块就能被其他用户的任务正常分配。
3. 检查节点独占设置
如果节点配置了Exclusive或ExclusiveUser参数,会强制独占整个节点。查看slurm.conf,找到对应节点的配置,将:
Exclusive=yes
修改为:
Exclusive=user
或者直接注释掉该参数,允许多用户共享节点资源。
4. 验证资源分配
任务启动后,用以下命令确认资源占用:
- 查看SLURM任务状态:
squeue -l,检查每个任务的GRES列是否为gpu:1 - 查看GPU使用情况:
nvidia-smi,确认两块GPU分别被不同任务占用
内容的提问来源于stack exchange,提问作者Celso Lopes
相关产品推荐
相关产品推荐

