Template.slurm

#!/bin/sh

## General comments about SLURM batch scripts ## - Lines begining with "#SBATCH" give info to Slurm, but ignored otherwise ## - An SBATCH command is "commented out" (ignored) if line begins with 2 "#" ## - If a command is repeated with different values, later overrides earlier ## - Try to avoid using this override feature.  It may cause confusion. ## - Anything inneeds to be modified by you (remove <> too)

## Slurm glossary: ##  Partition - A Job queue, submitted jobs stay here until resources are free ##  Node      - A computer in the cluster (e.g. NODE020) ##  Core      - This is essentially a CPU in a node ##  Task      - A standard heavy-weight process (i.e. not a thread) ##  Array Job - A job that runs multiple sub-jobs (e.g. for parameter sweeps)

## Specify the name for your job, this is the job name by which Slurm will ## refer to your job.  This can be different from the name of your executable ## or the name of your script file. #SBATCH --job-name=

## General partitions: all-LoPri, all-HiPri, bigmem-LoPri, bigmem-HiPri, gpuq ##    all-*     Will run jobs on (almost) any node available ##    bigmem-*  Will run jobs only on nodes with 512GB memory ##    *-HiPri   Will run jobs for up to 12 hours ##    *-LoPri   Will run jobs for up to 5 days ##    gpuq      Will run jobs only on nodes with GPUs (40, 50, 55, 56) ## Restricted partitions: CDS_q, CS_q, STATS_q, HH_q, GA_q, ES_q, COS_q ##                        Provide high priority access for contributors #SBATCH --partition=all-HiPri

## Deal with output and errors.  Separate into 2 files (not the default). ## May help to put your result files in a directory: e.g. /scratch/%u/logs/... ## NOTE: %u=userID, %x=jobName, %N=nodeID, %j=jobID, %A=arrayID, %a=arrayTaskID #SBATCH --output=/scratch/%u/%x-%N-%j.out  # Output file #SBATCH --error=/scratch/%u/%x-%N-%j.err   # Error file #SBATCH --mail-type=BEGIN,END,FAIL         # ALL,NONE,BEGIN,END,FAIL,REQUEUE,.. #SBATCH --mail-user=@gmu.edu     # Put your GMU email address here

## You can improve your scheduling priority by specifying upper limits on ## needed resources, but jobs that exceed these values will be terminated. ## Check your "Job Ended" emails for actual resource usage info as a guide. #SBATCH --mem=M        # Total memory needed per task (units: K,M,G,T) #SBATCH --time=# Total time needed for job: Days-Hours:Minutes

## ##### Optional stuff ##### ## From this point on, Slurm SBATCH commands are commented out (ignored). ## If you want to use any of them, remove one of the '#' before the SBATCH. ## If there is a similar command above this point, it is a good idea to ## comment that out as well to avoid confusion.

## ----- GPU Jobs ----- ## Jobs that use one or more GPUs need to both run on the gpuq partition ## and to request gpus using "--gres=gpu:". ##SBATCH --partition=gpuq ##SBATCH --gres=gpu:# Number of GPUs needed ##SBATCH --nodelist=NODE0# If you want to run on a specific node

## ----- Parallel Jobs ----- ## Parallel jobs may involve running multiple heavy-weight processes on one ## or more nodes, or multiple light-weight threads (always on the same node), ## or some combination of these.  Make sure that the resources you request ## are feasible, e.g. --cpus-per-task must be <= # of cores on a node. ##SBATCH --cpus-per-task# Request extra CPUs for threads ##SBATCH --ntasks# Number of processes you plan to launch ##SBATCH --nodes# If you want some control over how tasks are #    distributed on nodes.>= ##SBATCH --ntasks-per-node# If you want more control over how tasks are #    distributed on nodes.=*

## ----- Array Jobs ----- ## Array jobs run multiple similar sub-jobs (e.g. for parameter sweeps). ## Programs can find out which sub-job they belong to by checking ## the SLURM_ARRAY_TASK_ID environment variable. ##SBATCH --array=2,7,10       # List of arrayTaskIDs -or- ##SBATCH --array=1-12:2%3     # Start-End[:Increment][%MaxAtOnce] []=optional ##SBATCH --output=/scratch/%u/%x-%N-%A-%a.out  # Output file ##SBATCH --error=/scratch/%u/%x-%N-%A-%a.err   # Error file

## Load the relevant modules needed for the job module load

## Run your program or script <command(s) to run your program>