我正在按阵列提交作业。有时,由于难以诊断gpu内存问题,一项作业将出错。只需重新运行该作业即可成功。
我想做的是捕获此错误,将其记录下来,然后将作业放回Slurm的队列中以重新运行。如果不能通过数组作业完成此操作,那很好,使用数组不是必需的(尽管它是首选)。
我尝试使用sbatch --rerun,但是这似乎并没有达到我想要的效果(我认为此选项是在slurm检测到硬件错误后重新运行,或者在作业执行时重新启动节点正在运行-这不是我的工作)。
任何收到好评的建议。
答案 0 :(得分:1)
如果可以检测到GPU内存问题,则可以使用以下结构结束提交工作:
if <gpu memory issue>; then
scontrol requeue $SLURM_JOBID
fi
这会将作业放回调度队列中,并按原样重新启动。有趣的是,SLURM_RESTART_COUNT
环境变量保存了重新排队作业的次数。