About Parallel Execution

Parallel execution of Abaqus is implemented using two different schemes: threads and message passing. Threads are lightweight processes that can perform different tasks simultaneously within the same application. Threads can communicate relatively easily by sharing the same memory pool. Thread-based parallelization is readily available on all shared memory platforms.

Parallelization with message passing uses multiple analysis processes that communicate with each other via the Message Passing Interface (MPI). This requires MPI components to be installed. On the command line you can set mp_mode=mpi to indicate that MPI components are available on the system. Alternatively, set mp_mode=MPI in the environment file (see Environment File Settings). The MPI-based implementation is the default on all platforms where it is supported.

Output the local installation notes for your system to learn about local multiprocessing capabilities (see Obtaining Information). From the Support page at , refer to the System Information page for the current release of Abaqus for complete information about parallel processing support on various platforms, including information about MPI requirements and availability.

This page discusses:

Parallel Processing Support for Abaqus Features

The following Abaqus/Standard features can be executed in parallel: analysis input preprocessing, the direct sparse solver, the iterative solver, the eigensolvers, and element operations. Analysis input preprocessing uses only MPI-based parallelization and will not be executed in parallel if only data checking is performed. For Abaqus/Explicit all of the computations other than those involving the analysis input preprocessor and the packager can be executed in parallel. Each of the features that are available for parallel execution has certain limitations, which are documented in detail; see Parallel Execution in Abaqus/Standard and Parallel Execution in Abaqus/Explicit.

Parallel Execution on Shared Memory Computers

Abaqus/Standard and Abaqus/Explicit can be executed in parallel on shared memory computers by using threads or the MPI. When the MPI is available, Abaqus runs all available parallel features with MPI-based parallelization and activates thread-based parallel implementations for cases where an equivalent MPI-based implementation does not exist (e.g., direct sparse solver).

Parallel Execution on Computer Clusters

Abaqus can be executed in parallel on computer clusters by using MPI-based parallelization. For parallel execution on computer clusters, the list of machines or hosts is given with the mp_host_list environment file parameter. This parameter also defines the number of processors to be used on each host.

Parallel Execution Using GPGPU Hardware

The direct solver in Abaqus/Standard can be executed in parallel on computers equipped with compute-capable GPGPU cards.

Use with User Subroutines

User subroutines can be used when running jobs in parallel. In a distributed run, the entire model is decomposed into separate domains (partitions). Each domain is serviced by a separate MPI process. Abaqus provides well-defined synchronization points at which it is possible to exchange information across all MPI ranks, using the MPI communications facilities. All native MPI calls are supported, in both Fortran and C++. In addition, for cases of hybrid execution, user subroutines and any subroutines called by them must be thread safe. This precludes the use of common blocks, data statements, and save statements. To work around these limitations and for guidelines and techniques, see Ensuring Thread Safety.