How to Submit Abaci Jobs to a SLURM Cluster#
If your project is already setup to run jobs with Abaci, then submitting jobs to a HPC
cluster is easily achieved using the
abaci submit command.
Prerequisites: this guide will assume you have installed abaci (does not require administrator rights) in your home folder on a SLURM-based Linux HPC cluster and have added the relevant module files for Abaqus and the Intel Fortran compiler.
Quick Submit (Interactive)#
If your project is already setup to use abaci to run jobs, then you may simply submit a job to the SLURM cluster with the follow command:
abaci submit -i <job>
where <job> is the path to an Abaqus inp file or the name/tag of a job specified
in your configuration file abaci.toml.
The -i/--interactive flag will tell Abaci
to prompt you interactively for various SLURM settings:
mp_mode: mpi
mem-per-cpu: 4000m
account: aero000001
partition: compute
tasks-per-node: 12
time: 01:00:00
nodes: 1
email:
Without the -i/--interactive flag, Abaci
will use default values specified in the configuration file (see next section).
Tip
You can use any of the abaci compile command line flags
with abaci submit to control the compilation process.
Cluster Configuration Defaults#
Default values for the various SLURM configuration settings can be specified in
the configuration file (abaci.toml) for all jobs and on a per-job basis.
To set defaults for all jobs, add the [cluster] section to your configuration file
(before any [[job]] entries).
Example: global cluster defaults
[cluster]
account = 'aero01234'
partition = 'compute'
email = 'ab12345@bristol.ac.uk'
See also
See the cluster configuration reference for more information about each SLURM setting field (behaviour and defaults).
To override defaults on a per-job basis, add fields to each [[job]] entry
prefixed with cluster.
Example: per-job cluster settings
[[job]]
job-file = 'my-abaqus-job.inp'
name = 'job1'
mp-mode = 'threads'
cluster.mem-per-cpu = '8000M'
cluster.time = '1-00:00:00'
Tip
All jobs inherit defaults from the global [cluster] settings unless they
are overridden in the [[job]] entry.
MPI vs Threads#
Abaci will formulate your SLURM submission script differently depending on whether
you specify mp_mode=threads or mp_mode=mpi for your job.
Threads (single-node)#
If mp_mode=threads, then the SLURM submission script will be formulated for a
single node job with multiple threads.
In this case, the number of threads is controlled by the
cpus-per-task configuration field only.
Note
When mp_mode=threads, then the nodes and tasks-per-node fields are ignored
and set to 1.
Example: job configuration for a single-node job
[[job]]
job-file = 'my-abaqus-job.inp'
name = 'job1'
mp-mode = 'threads'
cluster.cpus-per-task = 16
cluster.mem-per-cpu = '8000M'
cluster.time = '1-00:00:00'
MPI (single- or multi-node)#
If mp_mode=mpi, then the SLURM submission script will be formulated for a
multitask MPI job.
In this case, the number of MPI tasks is the product of both:
nodesand;
Note
When mp_mode=mpi, then the cpus-per-task field is ignored
and set to 1.
Example: job configuration for a multi-node job
[[job]]
job-file = 'my-abaqus-job.inp'
name = 'job1'
mp-mode = 'threads'
cluster.nodes = 4
cluster.tasks-per-node = 16
cluster.mem-per-cpu = '8000M'
cluster.time = '1-00:00:00'
In this example, the total number of MPI tasks is 64 (4x16).
Prepare Job Submission Script Only#
If you wish to prepare a SLURM job for submission but not submit it to
SLURM straightaway, you can add the -n/--no-submit
flag.
In this case, abaci will do everything to prepare the job folder and submission script, but will not submit the job to SLURM.
This allows you to inspect and modify the job submission script if necessary.
The SLURM job script is called sljob located in the job folder.
Example: prepare SLURM job only
abaci submit --no-submit <job>
Environment Modules#
When the abaci submit command is executed, abaci will take a snapshot
of any environment modules that are currently loaded, and add those
to the job SLURM submission script.
Important
You should ensure you have all required environment modules loaded for your
job before running abaci submit