Submitting an OpenMP Job

Submitting an OpenMP job is different from Submitting an MPI Job since you must request multiple cores from a single node.

OpenMP example submission
#!/bin/sh
#SBATCH --ntasks-per-node=16     # 16 cores
#SBATCH --nodes=1                # 1 node
#SBATCH --mem-per-cpu=1024       # Minimum memory required per CPU (in megabytes)
#SBATCH --time=03:15:00          # Run time in hh:mm:ss
#SBATCH --error=/work/[groupname]/[username]/job.%J.err
#SBATCH --output=/work/[groupname]/[username]/job.%J.out
 
export OMP_NUM_THREADS=${SLURM_NTASKS_PER_NODE}
./openmp-app.exe 

Notice that we used ntasks-per-node to specify the number of cores we want on a single node.  Additionally, we specify that we only want 1 node.  

OMP_NUM_THREADS is required to limit the number of cores that OpenMP will use on the node.  It is set to ${SLURM_NTASKS_PER_NODE} to automatically match the ntasks-per-node value (in this example 16).

Compiling

Directions to compile OpenMP can be found on  Compiling an OpenMP Application.  

Further Documentation

Further OpenMP documentation can be found on LLNL’s OpenMP website.