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
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 usingsrun, as Intel MPI currently works better with PMI2 than the newer PMIx APIs.for versions greater than 2019.0.0
I_MPI_PMI_LIBRARYis set to the absolute path tolibpmi2.so(required bysrun).
The
mpirunexecutable is patched so thatI_MPI_PMI_LIBRARYis explicitly unset at execution time, asI_MPI_PMI_LIBRARYcan only be used withsrun.
impi was installed using Easybuild, build details can be found in $EBROOTIMPI/easybuild with a given module loaded.