如何用独立Slurm脚本在同一节点运行多个单核心任务?
解决Slurm单节点多任务分配问题
调整Slurm脚本参数
你的问题核心是--nodes=1参数强制每个任务独占整个节点,哪怕你的任务只需要1个核心。要让同一节点能并行运行多个单核心任务,修改脚本参数如下:
#!/bin/bash #SBATCH --partition=<partition-name> #SBATCH --ntasks=1 #SBATCH --cpus-per-task=1 # 明确每个任务仅占用1个核心 #SBATCH --output=<outputfile> #SBATCH --error=<errorfile> # run command <command to run>
- 移除
--nodes=1,让Slurm自动将任务分配到有空闲核心的节点 - 添加
--cpus-per-task=1,明确告知Slurm任务的核心需求,节点上的空闲核心会被用来调度更多任务
验证资源分配状态
提交一批任务后,用以下命令确认任务是否被分配到同一节点:
# 查看自己的任务列表及节点分配情况 squeue -u $USER # 查看节点的核心使用与空闲状态 sinfo -o "%N %C %E"
可选:限制单节点最大任务数
如果需要控制每个节点最多运行的任务数量,提交任务时可添加--tasks-per-node=<N>参数(N为你设定的阈值):
sbatch --tasks-per-node=16 your_script.sh
若需要全局生效,需联系管理员修改分区的MaxTasksPerNode配置。
常见排查点
- 若任务仍排队,检查分区的
MaxTasksPerNode上限(联系管理员确认) - 确保你的任务实际仅占用1个核心,避免因任务隐性多核心占用导致Slurm资源判断错误
内容的提问来源于stack exchange,提问作者fxm
相关产品推荐
相关产品推荐

