1

我正在以数组形式提交作业。由于难以诊断 gpu 内存问题,有时一项作业会出错。只需重新运行作业即可成功。

我想做的是捕捉这个错误,记录它,然后把作业放回 slurm 的队列中重新运行。如果这不可能通过数组作业完成,那很好,使用数组不是必需的(尽管它是首选)。

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

任何建议都很受欢迎。

4

1 回答 1

1

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

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

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

于 2019-04-25T09:19:35.843 回答