Code execution
To execute your code you need to
- have a binary, which is the result of code compilation,
- create a slurm job script,
- submit the slurm jobs script.
Submission of a job
blogin> sbatch myjobscipt.slurm Submitted batch job 8028673 blogin> ls slurm-8028673.out slurm-8028673.out
The examples for slurm job scripts, e.g. myjobscipt.slurm, that cover the setup
- n nodes,
- 1 OpenMP code running.
MPI, full node
#!/bin/bash #SBATCH --nodes=2 #SBATCH --partition=standard96:test module load impi/2019.5 export SLURM_CPU_BIND=none mpirun -ppn 96 ./hello.bin
Binding with OpenMPI
When using OpenMPI, binding is controlled using the –-bind-to
parameter. To bind processes to cores, use --bind-to core
. Possible other values can be found in the man page.
mpirun --bind-to core ./yourprogram
Our hardware supports hyperthreading, allowing you start 192 processes on Cascade Lake machines (*96 partitions) and 80 on Skylake machines.
If no specific requests regarding the number of tasks has been done, mpirun
defaults to hyperthreading and starts cores*2
processes. If a number of tasks has been specified (with -N
and/or --tasks-per-node
), an (Open) mpirun
honors this via the flag -map-by. For example: