SLURM配置
-
- [一、先把 /etc/slurm-llnlgres.conf 改成这样](#一、先把 /etc/slurm-llnlgres.conf 改成这样)
- [二、slurm.conf 也必须同步改](#二、slurm.conf 也必须同步改)
- 三、cgroup.conf
- 四、重启并检查
- 五、然后才是限制用户
- 六、脚本里这样写
- 提醒
还没有。 你现在的 gres.conf 里 没有写 Type= ,两张卡都只是普通的 gpu,脚本里写 --gres=gpu:card1:1 会报错(找不到这个类型)。
一、先把 /etc/slurm-llnlgres.conf 改成这样
NodeName=yin-PowerEdge-R750 Name=gpu Type=card0 File=/dev/nvidia0
NodeName=yin-PowerEdge-R750 Name=gpu Type=card1 File=/dev/nvidia1
二、slurm.conf 也必须同步改
你用的是 /etc/slurm-llnl/ 目录(Debian/Ubuntu 的包),所以 slurm.conf 在:
bash
nano /etc/slurm-llnl/slurm.conf
找到你的 NodeName 那一行,加上 Gres(其余参数保持你原来的不动):
GresTypes=gpu
NodeName=yin-PowerEdge-R750 Gres=gpu:card0:1,gpu:card1:1 ...原有参数...
AccountingStorageTRES=gres/gpu,gres/gpu:card0,gres/gpu:card1
AccountingStorageEnforce=limits,qos
gres.conf 和 slurm.conf 里的 Type 必须一致 ,否则节点会变成 drain/inval。
三、cgroup.conf
bash
nano /etc/slurm-llnl/cgroup.conf
加上:
ConstrainDevices=yes
四、重启并检查
bash
systemctl restart slurmctld
systemctl restart slurmd
sudo scontrol reconfig
scontrol show node yin-PowerEdge-R750 | grep -i gres
应该看到 Gres=gpu:card0:1,gpu:card1:1。如果节点状态异常:
bash
sinfo -N -l
scontrol show node yin-PowerEdge-R750 | grep Reason
五、然后才是限制用户
bash
sacctmgr modify user where name=用户名 set GrpTRES=gres/gpu:card0=0
六、脚本里这样写
bash
#SBATCH --gres=gpu:card1:1
提醒
脚本里指定只是"选卡",不是"限制"。 用户随时可以改成 card0。真正禁止用户用 0 号卡的是第五步的 GrpTRES=...card0=0,而这一步需要 slurmdbd 记账功能开着。先检查:
bash
scontrol show config | grep -i AccountingStorageType
如果输出是 accounting_storage/none,第五步不会生效,把输出贴给我,我帮你看怎么开。
补充:如果你不想折腾记账
更简单的办法是直接在 gres.conf 里只暴露一张卡,让 Slurm 根本不知道 card0 的存在:
NodeName=yin-PowerEdge-R750 Name=gpu File=/dev/nvidia1
slurm.conf 里对应改成 Gres=gpu:1。这样所有用户只能用 1 号卡,不用 sacctmgr,也不用写 Type。缺点是这是对所有用户生效,不能只针对某个用户。
只想限制个别用户的话,就用前面的 GrpTRES 方案。