When I launch a computation on the cluster, I usually have a separate program doing the post-processing at the end :
sbatch simulation sbatch --dependency=afterok:JOBIDHERE postprocessing
I want to avoid mistyping and automatically have the good job id inserted. Any idea? Thanks
There are two ways of submitting a job to SLURM: Submit via a SLURM job script - create a bash script that includes directives to the SLURM scheduler. Submit via command-line options - provide directives to SLURM via command-line arguments.
The syntax for submitting job arrays is: sbatch --array <indexlist>[%<limit>] arrayscript.sh . The <limit> is optional. Submitting the script to SLURM will return the parent SLURM_ARRAY_JOB_ID.
A job consists in one or more steps, each consisting in one or more tasks each using one or more CPU. Jobs are typically created with the sbatch command, steps are created with the srun command, tasks are requested, at the job level with --ntasks or --ntasks-per-node , or at the step level with --ntasks .
You can do something like this:
RES=$(sbatch simulation) && sbatch --dependency=afterok:${RES##* } postprocessing
The RES
variable will hold the result of the sbatch
command, something like Submitted batch job 102045
. The construct ${RES##* }
isolates the last word (see more info here), in the current case the job id. The &&
part ensures you do not try to submit the second job in the case the first submission fails.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With