Моя цель - построить конвейер с использованием зависимостей slurm и обработать случай, когда задание slurm вылетает из строя.
На основании следующего ответа и guide В 29-м разделе рекомендуется использовать scontrol requeue $jobID
, который повторно поставит в очередь уже отмененное задание.
если сбои задания могут быть обнаружены из сценария отправки, а сбои являются случайными, вы можете просто повторно поставить задание в очередь с помощью
scontrol requeue $SLURM_JOB_ID
, чтобы оно снова запустилось.
После того, как я повторно поставил отмененное задание в очередь, его зависимое задание останется как DependencyNeverSatisfied
, и даже зависимое задание завершено, ничего не происходит. Есть ли способ обновить состояние зависимого задания, если отмененное задание снова ставится в очередь?
Пример:
$ sbatch run.sh
Submitted batch job 1
$ sbatch --dependency=aftercorr:1 run.sh
$ squeue
JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)
89 debug run.sh alper PD 0:00 1 (Dependency)
88 debug run.sh alper R 0:23 1 ebloc1
$ scancel 1
$ squeue
JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)
89 debug run.sh alper PD 0:00 1 (DependencyNeverSatisfied)
$ scontrol requeue 1
$ squeue
JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)
89 debug run.sh alper PD 0:00 1 (DependencyNeverSatisfied)
88 debug run.sh alper R 0:00 1 ebloc1
#After running job completed dependent job still remain as DependencyNeverSatisfied state:
$ squeue
JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)
89 debug run.sh alper PD 0:00 1 (DependencyNeverSatisfied)