You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过sbatch提交节点间每节点rank数不同的SLURM作业?

实现SLURM集群混合节点rank配置的两种方案

方案一:单作业内分批次启动任务(推荐)

在sbatch脚本中先申请全部36个节点,再通过srun的节点筛选参数分别启动两组不同rank密度的任务:

  1. 编写sbatch脚本(示例命名为mixed_rank_job.sh):
#!/bin/bash
#SBATCH --nodes=36
#SBATCH --job-name=mixed-rank-job
#SBATCH --time=01:00:00

# 针对前24个节点,每节点启动4个rank
srun --nodes=1-24 --ntasks-per-node=4 --exclusive your_mpi_executable --task-args-group1 &

# 针对后12个节点(节点25-36),每节点启动1个rank
srun --nodes=25-36 --ntasks-per-node=1 --exclusive your_mpi_executable --task-args-group2 &

wait
  • --exclusive参数确保每组任务独占对应节点,避免资源冲突
  • &让两组任务并行启动,wait用于等待所有任务执行完成
  1. 提交作业:
sbatch mixed_rank_job.sh

方案二:通过作业依赖提交两组关联作业

若需要更精细化的资源管控,可将两组任务拆分为两个独立作业,通过依赖关系确保同时运行:

  1. 提交第一组作业(24节点,每节点4rank):
sbatch --nodes=24 --ntasks-per-node=4 --job-name=rank-group1 your_mpi_script.sh

记录该作业的ID(示例记为JOBID1)

  1. 提交第二组作业(12节点,每节点1rank),设置依赖于第一组作业启动:
sbatch --nodes=12 --ntasks-per-node=1 --job-name=rank-group2 --dependency=afterany:JOBID1 your_mpi_script.sh
  • --dependency=afterany:JOBID1确保第二组作业在第一组启动后再分配资源,保证两组节点同时可用

关键注意事项

  • 确认你的MPI实现支持跨不同rank密度的节点运行,部分MPI可能需要额外配置参数
  • 若节点存在硬件差异,可结合--constraint参数筛选匹配的节点(例如--constraint="xeon")
  • 使用scontrol show job <JOBID>命令查看作业的节点分配详情,验证rank配置是否符合预期

内容的提问来源于stack exchange,提问作者TheGitPuller

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 01:31:08