Skip to content
System Status: All systems are operational • Services are available and operational.
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

Abaqus 2024

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.env
  • current_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=ib demands 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.env in the current directory. If a file by this name already exists, it will be overwritten.