IMPI

What is IMPI?

IMPI, or Intel MPI, is Intel's MPI wrapper library. As opposed to MPICH or MVAPICH, the RC systems do not load a specific compiler suite; this is because others have found increased efficiency when using IMPI with GCC.

How is IMPI loaded?

The below can be used to view all of the installations of IMPI on a particular system, where this example uses Coeus.

$ module avail |& grep -i "^impi"

impi

Which version should be used?

The RC systems may contain many different versions of this software. The reason behind keeping all the old versions is because some applications cannot or do not update to the most recent version, so the modules are kept for legacy support. In general, it is best to use the most recent major release, unless some software requires a different version.

How is something ran with IMPI?

It is recommended to use mpiexec to start an MPI program. The example on Coeus (below) will compile the program and then create four copies of the executable and run them all where they all can communicate using MPI.

$ module load impi

$ module load gcc-9.2.0

$ mpicc -o my_example my_example.c

$ mpiexec -n 4 my_example

How are IMPI compilers invoked?

To compile MPI programs, the program must be compiled using MPI libraries and with the MPI compiler (for more, refer to here).

IMPI provides a slew of MPI compiler wrappers, as listed below, and broken down by which compiler collection it is paired with (recall that the user must load the compiler collection manually as IMPI does not load any).

IMPI paired with Intel's Compiler Suite

IMPI paired with GCC