Click for detailed status
Abaqus
Abaqus is a software suite for finite element analysis and computer-aided engineering.
Abaqus on Euler¶
On Euler the following versions are available via modules:
| Version | Module command |
|---|---|
| 2023 | module load stack/2024-06 intel-oneapi-compilers/2023.2.0 abaqus/2023 libjpeg-turbo/3.0.0 |
Documentation¶
Thread-Based Parallelization¶
You can execute Abaqus in thread mode within one node of a compute cluster. This approach takes advantage of the shared memory available to the threads that are running on different processors. (From Abaqus' documentation)
CPU nodes in Euler have up to 192 cores. So you can run Abaqus in parallel with up to 192 threads; this is configurable with Abaqus' command line argument cpus=. Please find below an example job script for Slurm:
#!/bin/bash
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=8
#SBATCH --time=08:00:00
#SBATCH --mem-per-cpu=4G
#SBATCH --tmp=50G
module load stack/2024-06 intel-oneapi-compilers/2023.2.0 abaqus/2023 libjpeg-turbo/3.0.0
abaqus job=test cpus=8 input=my_abaqus_input_file scratch=$TMPDIR mp_mode=THREADS
It will use 1 process (--ntasks=1) on 1 node (because a task can't be distributed to multiple nodes) and 8 cores (--cpus-per-task=8) to run an instance of Abaqus with 8 threads (cpu=8).
MPI-Based Parallelization¶
Abaqus provides different MPI implementations that can be used with the software. On Euler we only tested the default IntelMPI implementation.
Because Abaqus does not provide built-in support of the Slurm batch system, you need to provide it with a host list. Its format is mp_host_list=[['host1',n1],['host2',n2],...,['hostx',nx]] and it must be named abaqus_v6.env. There are 3 locations that Abaqus is checking for such a file:
abaqus_install_directory/os/SMA/site/abaqus_v6.env$HOME/abaqus_v6.envcurrent_working_directory/abaqus_v6.env
But because the host list depends on the Slurm job, we generally recommend current_working_directory/abaqus_v6.env.
Please find below an example Slurm job script to run Abaqus with MPI on multiple nodes:
#!/bin/bash
#SBATCH --nodes=2
#SBATCH --tasks-per-node=4
#SBATCH --time=08:00:00
#SBATCH --mem-per-cpu=4000
#SBATCH --tmp=50g
#SBATCH --constraint=ib
module load stack/2024-06 intel-oneapi-compilers/2023.2.0 abaqus/2023 libjpeg-turbo/3.0.0
echo "mp_host_list=[$(srun hostname | uniq -c | awk '{print("[\047"$2"\047,"$1"]")}' | paste -s -d ",")]" > abaqus_v6.env
abaqus job=test cpus=8 input=my_abaqus_input_file scratch=$TMPDIR mp_mode=MPI
Please note the following differences to running Abaqus in thread mode:
#SBATCH --constraint=ibdemands InfiniBand network to handle internode communication effectively.- It is important to unset the variable
SLURM_GTIDS, because the MPI implementations bundled with Abaqus do not support Slurm. - The job script will create a file
abaqus_v6.envin the current directory. If a file by this name already exists, it will be overwritten.