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

如何在HPC中批量运行多个基于Python的Slurm任务

批量提交Slurm任务的高效方法

你完全可以不用单独编写100个Slurm脚本,就能批量提交这些任务,不过要避开你示例里的串行执行问题——直接在一个脚本里挨个写python命令会让任务按顺序跑完一个再跑下一个,完全浪费HPC的并行能力。下面是两种更高效的方案:

方案一:批量提交独立Slurm作业(推荐)

这种方式会为每个年份任务创建独立的Slurm作业,能被集群并行调度,充分利用资源。

方法1:模板脚本+循环提交

先写一个通用的Slurm模板脚本job_template.sh:

#!/bin/bash
#SBATCH -n 2
#SBATCH -p main
#SBATCH --qos main 
#SBATCH -N 1                             
#SBATCH -J process_%1
python process%1.py

然后在终端用bash循环批量提交:

for i in {1..100}; do
    sbatch --job-name=process_$i job_template.sh $i
done

方法2:循环内直接生成Slurm脚本

不用单独写模板,直接通过Here Document在循环里生成每个任务的Slurm配置:

for i in {1..100}; do
    sbatch << EOF
#!/bin/bash
#SBATCH -n 2
#SBATCH -p main
#SBATCH --qos main 
#SBATCH -N 1                             
#SBATCH -J process_$i
python process$i.py
EOF
done

方案二:单Slurm作业内并行执行所有任务

如果想把所有任务放在同一个Slurm作业里并行跑,需要调整资源分配参数,用srun启动每个任务:

#!/bin/bash
#SBATCH -n 200  # 100个任务×每个任务2核
#SBATCH -p main
#SBATCH --qos main 
#SBATCH -N 1                             
#SBATCH -J batch_process

# 循环启动所有任务,后台运行
for i in {1..100}; do
    srun --exclusive -n 2 python process$i.py &
done
wait  # 等待所有后台任务完成

这里--exclusive确保每个任务能独占分配的2核资源,&让任务后台并行执行,wait保证脚本在所有任务完成后再退出。

注意:你示例里的写法是串行执行,100个任务会依次运行,效率极低,不建议使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 01:33:22