Slurm Tips & Tricks¶
Here are a few advanced Slurm usage tricks to the experienced user
Slurm Job Arrays¶
Slurm job arrays allow you to submit multiple, similar jobs at once without creating separate scripts for each. Each job in the array is called a task and gets its own array ID. This is particularly useful for parameter sweeps, batch simulations, or processing multiple files in parallel.
Basic Syntax¶
sbatch --array=0-9 myscript.sh
--array=0-9creates 10 tasks with IDs from 0 to 9.you can also pass a comma-separated list of ids if you wish
Each task runs
myscript.shindependently.Slurm sets the environment variable
$SLURM_ARRAY_TASK_IDto the task’s ID.
Accessing Task ID in Script¶
Inside myscript.sh, you can use the array ID to differentiate tasks. For example:
#!/bin/bash
#SBATCH --job-name=array_example
#SBATCH --output=output_%A_%a.txt
#SBATCH --error=error_%A_%a.txt
#SBATCH --time=00:10:00
# $SLURM_ARRAY_TASK_ID is the task ID
echo "Running task $SLURM_ARRAY_TASK_ID"
# Example: process different input files INPUT_FILE="input_$SLURM_ARRAY_TASK_ID.txt" cat $INPUT_FILE`
%A→ master job ID%a→ array task ID
This ensures each task writes to a separate output file.
Submitting a Job Array¶
sbatch --array=0-99 myscript.sh
Creates 100 tasks (IDs 0–99).
Slurm can limit concurrent tasks using
%:
sbatch --array=0-99%10 myscript.sh
Only 10 tasks run simultaneously; the rest wait in the queue.
Dumping a Run-script¶
One of Slurm’s best features is accounting. A really handy feature is the ability to dump previous jobs’ run-scripts.
First, run sacct -X to get the job ID; you may need to add -S YEAR-MM-DD to include older jobs.
Then, dump the run-script.
sacct --batch-script --jobs <jobid>
This will print your subscript exactly as it was submitted to the scheduler, very helpful for when a particular run did well but you don’t remember which parameters it used.