Intel MPI

Guidance last updated: 20 October 2026

The Intel MPI Library is an implementation of the Message Passing Interface (MPI), compatible with the MPICH ABI.

Usage

After connecting to Stanage (see Establishing a SSH connection), start an interactive session:

salloc

You can load a specific version using one of the following:

module load impi/2021.17.2-intel-compilers-2025.3.3
module load impi/2021.16.1-intel-compilers-2025.2.0
module load impi/2021.8.0-intel-compilers-2023.0.0
module load impi/2021.7.1-intel-compilers-2022.2.1
module load impi/2021.7.0-intel-compilers-2022.2.0

The latest module loads Intel oneAPI compilers and UCX as dependencies. See the matching Intel toolchains.

Examples

Example: MPI performance testing

The following example batch submission script runs the installed Intel MPI Benchmarks with two ranks on one node. It limits the message sizes and iteration count for a short test:

#!/bin/bash
#SBATCH --nodes=1
#SBATCH --ntasks-per-node=2
#SBATCH --cpus-per-task=1
#SBATCH --mem-per-cpu=1000
#SBATCH --time=00:05:00

set -e
export SLURM_EXPORT_ENV=ALL
module load impi/2021.17.2-intel-compilers-2025.3.3

srun IMB-MPI1 -iter 100 -msglog 0:16 PingPong Allreduce

The output contains latency and throughput measurements for the selected benchmarks. Results from this small example are not a production performance assessment. To run the default MPI-1 benchmark suite instead, replace the final command with srun IMB-MPI1.

Example: Using the Intel MPI compiler wrappers

The following example batch submission script copies the installed C and Fortran examples into a new directory, compiles them with the Intel oneAPI wrappers, and runs each with two MPI ranks:

#!/bin/bash
#SBATCH --nodes=1
#SBATCH --ntasks-per-node=2
#SBATCH --cpus-per-task=1
#SBATCH --mem-per-cpu=1000
#SBATCH --time=00:05:00

set -e
export SLURM_EXPORT_ENV=ALL
module load impi/2021.17.2-intel-compilers-2025.3.3

mkdir "impi-example-$SLURM_JOB_ID"
cd "impi-example-$SLURM_JOB_ID"
cp "$I_MPI_ROOT/opt/mpi/test/test.c" .
cp "$I_MPI_ROOT/opt/mpi/test/test.f90" .
mpiicx test.c -o hello_c
mpiifx test.f90 -o hello_fortran

# Show the node used by each MPI task.
srun hostname
srun ./hello_c
srun ./hello_fortran

Each program reports the rank, total number of ranks and hostname. For four ranks across two nodes, change --nodes=1 to --nodes=2 while keeping --ntasks-per-node=2.

Installation notes

This section is primarily for administrators of the system. Intel MPI has been installed using the default Easybuild config files but with the following tweaks made via EasyBuild hooks:

  • Module files are patched so that
    • they instruct Slurm at runtime (via SLURM_MPI_TYPE=pmi2) that the PMI2 API is to be used for launching remote processes using srun, as Intel MPI currently works better with PMI2 than the newer PMIx APIs.

    • for versions greater than 2019.0.0 I_MPI_PMI_LIBRARY is set to the absolute path to libpmi2.so (required by srun).

  • The mpirun executable is patched so that I_MPI_PMI_LIBRARY is explicitly unset at execution time, as I_MPI_PMI_LIBRARY can only be used with srun.

impi was installed using Easybuild, build details can be found in $EBROOTIMPI/easybuild with a given module loaded.

Direct dependencies for latest version of impi