Сценарий Master SLURM, который вызывает другие SLURM S
Я - исследователь рака, и нам было интересно, знает ли кто-нибудь из вас, как написать сценарий SLURM, который вызывает другие слэмы. Если предыдущий сценарий успешно завершен, перейдите к следующему вызову. IE что-то вроде:
#!/bin/bash
#SBATCH --nodes=1
#SBATCH --tasks-per-node=1
#SBATCH --time=24:00:00
#SBATCH --mem=40GB?
#SBATCH --job-name=Master_script
#call first slurm
sbatch a.slurm
#if it completes successfully
if a.slurm:
sbatch b.slurm
if b.slurm:
sbatch c.slurm
sbatch d.slurm
if c.slurm:
sbatch e.slurm
else:
echo "c.slurm did not complete successfully"
else:
echo "b.slurm did not complete successfully"
else:
echo "a.slurm did not complete successfully"
1 ответ
Вы можете отправить 5 работ с --dependency
вариант sbatch
,
-d, --dependency = Отложить запуск этого задания до тех пор, пока указанные зависимости не будут выполнены.
В вашем случае это будет выглядеть так:
A=$(sbatch --parsable a.slurm)
B=$(sbatch --parsable --dependency=afterok:$A a.slurm)
C=$(sbatch --parsable --dependency=afterok:$B a.slurm)
D=$(sbatch --parsable --dependency=afterok:$B a.slurm)
E=$(sbatch --parsable --dependency=afterok:$D a.slurm)
Обратите внимание, что в таком случае задания, зависящие от других заданий, будут оставаться в ожидании бесконечно, если зависимое задание не выполнится. Вам нужно будет либо очистить их вручную, либо отправить пустые задания для случаев, когда задание не выполняется с --dependency=afternotok:...
,
Если ваш рабочий процесс усложняется, может быть интересно исследовать использование менеджеров рабочих процессов, таких как Bosco или Fireworks.