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

Slurm:自动重新提交达到wall-time限制的作业

解决Slurm作业超wall-time自动重启的问题

可行方案一:在作业脚本内部自动提交新作业

直接修改你的test.sh脚本,在模拟未完成时自动提交新的同脚本作业,核心是让脚本自我触发续跑,同时必须确保模拟程序支持断点续跑(能从上次中断的进度继续执行)。

修改后的test.sh示例:

#!/bin/bash
#SBATCH --time=24:00:00
# 添加你的其他SBATCH配置(比如节点数、内存等)

# 执行模拟,假设你的程序会读取/写入进度文件(比如progress.log)
./your_simulation_executable --resume progress.log

# 判断模拟是否完成(根据实际情况调整判断条件,比如检查是否生成完成标志文件)
if [ ! -f simulation_finished.flag ]; then
    # 提交新作业继续运行
    sbatch test.sh
fi

可行方案二:使用Slurm内置的--requeue参数

Slurm提供了--requeue参数,当作业因wall-time耗尽被系统终止时,会自动将作业重新排入队列,无需手动提交。

提交作业的命令:

sbatch --requeue test.sh

⚠️ 注意:同样需要模拟程序支持断点续跑,否则每次重启都会从头执行;部分集群可能限制重排队的次数,建议提前确认集群的Slurm配置。

为什么你的原方法不可行

你尝试的scontrol update jobid $jobid dependency=after:$jobid逻辑不成立:after:$jobid是指定新作业在原作业结束后运行,但你在提交原作业时无法预知后续新作业的ID,且原作业结束后才会生成新作业,这种循环依赖的方式无法实现自动续跑的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 06:01:16