Skip to main content

PBS/SGE commands vs Slurm

Other HPC clusters may use different schedulers to Slurm. This section provides a brief comparison of PBS, SGE and Slurm input parameters. Please note that in some cases there is no direct equivalent between the different systems.

Basic Job Options​

CommentPBSSGESlurm
Give the job a name.#PBS -N JobName#$ -N JobName#SBATCH --job-name=JobName
or
#SBATCH -J JobName

Note: The job name appears in the queue list, but is not used to name the output files (opposite behavior to PBS, SGE)
Redirect standard output of job to this file.#PBS -o path#$ -o path#SBATCH --output=path/file-%j.ext1
or
#SBATCH -o path/file-%j.ext1

Note: %j is replaced by the job number
Redirect standard error of job to this file.#PBS -e path#$ -e path#SBATCH --error=path/file-%j.ext2
or
#SBATCH -e path/file-%j.ext2

Note: %j is replaced by the job number.

Specify accounts, queues and working directories.​

CommentPBSSGESlurm
Account to charge quota. (if so set up)#PBS -A AccountName#SBATCH --account=AccountName
or
#SBATCH -A AccountName
Walltime#PBS -l walltime=2:23:59:59#$ -l h_rt=hh:mm:ss e.g. #$ -l h_rt=96:00:00#SBATCH --time=2-23:59:59 #SBATCH -t 2-23:59:59 Note '-' between day(s) and hours for Slurm.
Change to the directory that the script was launched fromcd $PBS_O_WORKDIR#$ -cwdThis is the default for Slurm.
Specify a queue (partition)#PBS -q batch#$ -cwd#SBATCH --partition=main
or
#SBATCH -p main

Note: In Slurm a queue is called a partition, and the default is 'batch'.

How to request nodes, sockets and cores.​

CommentPBSSGESlurm
The number of compute cores to ask for#PBS -l nodes=1:ppn=12

Asking for 12 CPU cores, which is all the cores on a MASSIVE node. You could put "nodes=1" for a single CPU core job or "nodes=1:ppn=4" to get four cpu cores on the one node (typically for multithreaded, smp or openMP jobs)
#$ -pe smp 12
#$ -pe orte_adv 12

MCC SGE did not implement running jobs across machines, due to limitations of the interconnection hardware
#SBATCH --nodes=1 --ntasks=12
or
#SBATCH -N1 -n12

--ntasks is not used in isolation but combined with other commands such as --nodes=1
The number of tasks per socket--ntasks-per-socket=Number

Request the maximum ntasks be invoked on each socket. Meant to be used with the --ntasks option. Related to --ntasks-per-node except at the socket level instead of the node level
Cores per task (for use with openMP)--cpus-per-task=ncpus
or
-c ncpus
Request that ncpus be allocated per process. The default is one CPU per process.
Specify per core memory.#PBS -l pmem=4000MB

Specifies how much memory you need per CPU core (1000MB if not specified)
No equivalent. SGE uses memory/process--mem-per-cpu=24576
or
--mem=24576

Slurm default unit is MB.

Notify job progress via email.​

CommentPBSSGESlurm
Email notification when: job fails.#PBS -m a#$ -m a#SBATCH --mail-type=FAIL
Email notification when: job begins.#PBS -m b#$ -m b#SBATCH --mail-type=BEGIN
Email notification when: job stops.#PBS -m e#$ -m e#SBATCH --mail-type=END
Email notification for ALL events#SBATCH --mail-type=ALL
e-mail address to send information to#PBS -M name@email.address#$ -M name@email.address#SBATCH --mail-user=name@email.address