Job pipeline using slurm dependencies
Some times we need to launch a list of jobs that execute in sequence, one after another. In those cases we will use the --depency sbatch option, check the manual page for more details, we will only present a simple example.
Simple example
Suppose we need to submit the script my_first_job.sh and then mu_second_job.sh that should run after the first one:
[user@cirrus01 ~]$ sbatch my_first_job.sh
Submitted batch job 1843928
[user@cirrus01 ~]$ sbatch --dependency=after:1843928 my_second_job.sh
Submitted batch job 1843921
[user@cirrus01 ~]$ squeue
JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)
1843928 hpc my_first_job.sh user R 0:11 1 hpc046
1843921 hpc my_second_job.sh user PD 0:00 1 hpc047
In this case the second job will run even if the first job fails for some reason. The pending job will execute when the first finish his execution.
Tipical example
On a real case we may need the ensure that a good termination of the first job, for example, the first job may produce some output file needed as input for the second job:
[user@cirrus01 ~]$ sbatch my_first_job.sh
Submitted batch job 1843922
[user@cirrus01 ~]$ sbatch --dependency=afterok:1843922 my_second_job.sh
Submitted batch job 1843923
The afterok parameter states that the second job would start only if the previous job terminate with no errors.
Complex cases
Check the sbatch manual page for more details:
[user@cirrus01 ~]$ man sbatch
search for the -d, --dependency=<dependency_list> options explanation.