Configuring/writing SLURM/PBS/Sun Grid Engine scripts from the Makefile

To write a SLURM, PBS or Sun Grid Engine script in the run directory, use

make qscript INFILE=blah.in > run.job

where blah.in is the name of the Phantom input file. This writes a batch submission script that can be used to submit a Phantom calculation to a job submission queue:

sbatch run.job

or, using PBS:

qsub run.job

The output of the command above can be configured in the SYSTEM block in build/Makefile, meaning that you can configure the script according to the queueing system of the machine that you are running Phantom on.

Here is an example from the Monarch machine, which uses the SLURM queueing engine:

ifeq ($(SYSTEM), monarch)
    FC= ifort
    ...
    QSYS = slurm
    QPROJECT='p01'
    WALLTIME='100:59:59'
endif

where we have specified our project ID and the maximum wall time limit allowed by the local admins.

Below is a second example, showing the configuration for the vayu machine, which uses the PBS queueing system:

if ($(SYSTEM), vayu)
    FC=ifort
   ...
    QSYS= pbs
    MAIL=daniel.price@monash.edu
    PBSRESUBMIT=yes
    ifneq ($(MPI),yes)
       NOMP=8
       NPAR='8:8'
    endif
endif

Finally, here is another example from the Monash Sun Grid, which uses the Sun Grid Engine:

ifeq ($(SYSTEM), msg)
    ...
    QSYS = sge
    QSHELL = tcsh
    MAIL = daniel.price@monash.edu
    ifeq ($(OPENMP),yes)
       QPE = smp
       NOMP = '$$NSLOTS'
       ifndef NPAR
          NPAR = '4-32'
       endif
    endif
    ifeq ($(MPI),yes)
       QPE = mpi
       ifeq ($(OPENMP),yes)
            QPE = mqu4
            NOMP = 4
       endif
    endif
endif

In the above, $NPAR is the number of requested slots, whereas $NSLOTS is a variable set by the Sun Grid Engine to be the actual number of cpus allocated.

A full description of the options are given below:

option

settings

description

QSYS=pbs

slurm, pbs or sge

specifies whether a SLURM, PBS or Sun Grid Engine script should be written.

QSHELL=tcsh

tcsh or bash

specifies whether or not the submission script and runtime shell is tcsh or bash

WALLTIME=‘500:00:00’

dd:hh:mm:ss

default hard walltime limit for job scripts

PBSRESUBMIT=yes

yes or no

specifies whether or not to write a self-resubmitting PBS script (e.g. if the queue has runtime limits)

NPAR=4-32

number or range

specifies requested number of cpus (fixed for pbs scripts, can be a range for sge scripts)

NOMP=16

a number

specifies number of openMP threads in job scripts

QPE=smp

string dependent on queue config

specifies parallel environment in sge scripts: use qconf -spl to see the parallel environments setup for your queueing system.

QNODES=‘nodes=1:ppn=’ $(NOMP)

a string

specifies any node configuration specific to the machine