SLURM/ArrayJobs

From UMIACS
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Here is an example to get you started using array jobs in SLURM.

Array computation example job

Save this code to a file called test.py.

import time

print('start at ' + time.strftime('%H:%M:%S'))

print('sleep for 10 seconds ...')
time.sleep(10)

print('stop at ' + time.strftime('%H:%M:%S'))

Submission script

Save this to a file called array.sh and you should be able to submit the job as sbatch array.sh.

#!/bin/bash

#####################
# job-array example #
#####################

#SBATCH --job-name=example
#SBATCH --array=1-16        # run 16 jobs at the same time 
#SBATCH --time=0-00:05:00   # run for 5 minutes (d-hh:mm:ss)
#SBATCH --mem-per-cpu=500MB # use 500MB per core

# all bash commands must be after all SBATCH directives

# define and create a unique scratch directory
SCRATCH_DIRECTORY=/scratch0/${USER}/job-array-example/${SLURM_JOBID}
mkdir -p ${SCRATCH_DIRECTORY}
cd ${SCRATCH_DIRECTORY}

cp ${SLURM_SUBMIT_DIR}/test.py ${SCRATCH_DIRECTORY}

# each job will see a different ${SLURM_ARRAY_TASK_ID}
echo "now processing task id:: " ${SLURM_ARRAY_TASK_ID}
python test.py > output_${SLURM_ARRAY_TASK_ID}.txt

# after the job is done we copy our output back to $SLURM_SUBMIT_DIR
cp output_${SLURM_ARRAY_TASK_ID}.txt ${SLURM_SUBMIT_DIR}

# we step out of the scratch directory and remove it
cd ${SLURM_SUBMIT_DIR}
rm -rf ${SCRATCH_DIRECTORY}

# happy end
exit 0