Table of Contents | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
...
Expand | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
|
...
1. Slurm sbatch header
Anchor | ||||||
---|---|---|---|---|---|---|
|
The
#SBATCH
macro directives can be used to specify sbatch
options that mostly unchanged, such as partition, time limit, billing account, and so on. For optional options like job name, users can specify them when submitting the script (see Submitting a job). For more details regarding sbatch
options, please visit Slurm sbatch. Mostly, Slurm sbatch
options only define and request computing resources that can be used inside a job script. The actual resources used by a software/executable can be different depending on how it will be invoked/issued (see Stage 5), although these sbatch
options are passed and become the default options for it. For GPU jobs, we recommend using either --gpus
or --gpus-per-node
to request GPUs at this stage ; additionally, please see GPU bindingwill provide the most flexibility for the next stage, GPU binding.
If your application software only supports parallelization by multi-threading, then your software cannot utilize resources across nodes; in this case, therefore, -N
, -n, --ntasks
and --ntasks-per-node
should be set to 1.
2. Loading modules
It is advised to load every module used when installing the software in the job script, although build dependencies such as CMake, Autotools, and binutils can be omitted. Additionally, those modules should be of the same version as when they were used to compile the program.
...
Expand | |||||
---|---|---|---|---|---|
| |||||
When executing your program, if you encounter
Preliminary check could be performed on frontend node by doing something like
|
4. Setting environment variables
Some software requires additional environment variables to be set at runtime; for example, the path to the temporary directory. Parameters Output environment variables set by Slurm sbatch (see Slurm sbatch - output environment variables) could be utilized in setting up used to set software-specific environment variablesparameters.
For application with OpenMP threading, OMP_NUM_THREADS
, OMP_STACKSIZE
, ulimit -s unlimited
are commonly set in a job script. An example is shown below.
...
Usually, either srun
, mpirun
, mpiexec
or aprun
is required to run MPI programs. On LANTA, srun
command MUST be used insteadto launch MPI processes. The table below compares a few options of those commands.
Command | Total MPI processes | CPU per MPI process | MPI processes per node |
---|---|---|---|
srun | -n, --ntasks | -c, --cpus-per-task | --ntasks-per-node |
mpirun/mpiexec | -n, -np | --map-by socket:PE=N | --map-by ppr:N:node |
aprun | -n, --pes | -d, --cpus-per-pe | -N, --pes-per-node |
There is usually no need to explicitly add options option to srun
since, by default, Slurm will automatically derive them from sbatch
, with the exception of --cpus-per-task.
Anchor | ||||
---|---|---|---|---|
|
Expand | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
|
Note |
---|
For multi-threaded hybrid (MPI+Multi-threading) applications, it is essential to specify |
...
Info |
---|
You can test your initial script on compute-devel or gpu-devel partitions, using |
Your entire job script will only run on the first requested node (${SLURMD_NODENAME}). Only the lines starting with srun
could initiate process and run on the other nodes.
...
Example
Installation guide
...