错误时自动重新运行以sbatch --array提交的作业

时间:2019-04-25 09:08:42

标签: slurm sbatch

我正在按阵列提交作业。有时,由于难以诊断gpu内存问题,一项作业将出错。只需重新运行该作业即可成功。

我想做的是捕获此错误,将其记录下来,然后将作业放回Slurm的队列中以重新运行。如果不能通过数组作业完成此操作,那很好,使用数组不是必需的(尽管它是首选)。

我尝试使用sbatch --rerun,但是这似乎并没有达到我想要的效果(我认为此选项是在slurm检测到硬件错误后重新运行,或者在作业执行时重新启动节点正在运行-这不是我的工作)。

任何收到好评的建议。

1 个答案:

答案 0 :(得分:1)

如果可以检测到GPU内存问题,则可以使用以下结构结束提交工作:

if <gpu memory issue>; then
    scontrol requeue $SLURM_JOBID
fi

这会将作业放回调度队列中,并按原样重新启动。有趣的是,SLURM_RESTART_COUNT环境变量保存了重新排队作业的次数。