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

如何在CentOS 7.7超算服务器批量提交指定范围的SLURM任务

批量提交SLURM任务的实用方案

我经常在CentOS超算集群上处理这类批量计算任务,针对你的需求,我准备了两种解决方案——优先满足你要的Python脚本实现,同时也提供一个更轻量的Shell脚本选项,都能快速完成78到151号任务的批量提交。

一、Python脚本实现

这个方案适合习惯用Python的用户,逻辑清晰,容易扩展修改:

import subprocess

# 设置任务的起始和结束编号
start_task = 78
end_task = 151

# 定义SLURM命令模板,所有需要替换的数字用{task_num}占位
sbatch_command_template = """module load GPAW && sbatch --job-name=job_{task_num} -e error_{task_num}.err -o output_{task_num}.out -n 16 -N 1 -p xeon16 -t 80:00:00 --mail-type=END,FAIL --mail-user=xxxxx@xxx.xx calc.py tmp_folder/input_{task_num}.traj"""

# 循环提交每个任务
for task_num in range(start_task, end_task + 1):
    # 替换模板中的占位符,生成当前任务的提交命令
    current_cmd = sbatch_command_template.format(task_num=task_num)
    print(f"正在提交任务 {task_num}...")
    # 执行提交命令,check=True会在命令执行失败时终止并报错,方便排查问题
    subprocess.run(current_cmd, shell=True, check=True)

注意事项:

  • 请根据你的实际文件名调整模板中的input_{task_num}.traj:如果你的文件是input78.traj(无下划线),就改成input{task_num}.traj
  • 记得把xxxxx@xxx.xx替换成你自己的邮箱地址
  • 可以先把end_task改成79,测试提交一两个任务,确认生成的错误文件、输出文件路径和任务名称都正确后,再全量提交

二、Shell脚本实现

如果不想写Python,这个Shell脚本更轻量,直接在超算终端就能运行:

#!/bin/bash

# 设置任务起始和结束编号
START=78
END=151

# 循环遍历每个任务编号
for ((NUM=START; NUM<=END; NUM++))
do
    echo "提交任务 ${NUM}..."
    module load GPAW && sbatch --job-name=job_${NUM} -e error_${NUM}.err -o output_${NUM}.out -n 16 -N 1 -p xeon16 -t 80:00:00 --mail-type=END,FAIL --mail-user=xxxxx@xxx.xx calc.py tmp_folder/input_${NUM}.traj
done

使用方法:

  1. 把上面的内容保存为submit_jobs.sh
  2. 给脚本添加执行权限:chmod +x submit_jobs.sh
  3. 运行脚本:./submit_jobs.sh

同样要注意文件名格式和邮箱地址的替换,测试一两个任务没问题再全量提交。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 09:07:08