Slurm example: Job arrays
Job arrays can be used to submit many (e.g. thousands) similar small/short jobs. They can reduce the load from the central Slurm controller, so prefer job arrays over many small individual jobs!
A job script could look like this:
#!/bin/sh
#SBATCH ... # Other options of sbatch
# Execute a single job (this script)
# with 16 steps (0-15)
# But only execute 4 job steps at the same time (%4)
#SBATCH --array=0-15%4
# Each job array step will run with the resource requirements:
#SBATCH -n16 # Each job array step requires 16 tasks
#SBATCH -N1-2 # Each job array step requires 1 or 2 nodes
# You can use %a to have different output files for each job step:
#SBATCH -o jobarraytests_%a.out
#SBATCH -e jobarraytests_%a.err
# Each job array step executes the following
srun hostname
srun echo $SLURM_ARRAY_TASK_ID
srun sleep 10
It makes sense to use environment variables like ${SLURM_ARRAY_TASK_ID}
, to decide which arguments should go to which process in the job array. More details are available at https://slurm.schedmd.com/job_array.html.