IMPI is the Intel implementation of the MPI interface for
parallel programming.

In particular, IMPI provides the necessary include files or modules,
the compilers (mpiicc, mpiicpc, mpiifort),
and the run time command mpirun that allow a user program to
run a distributed memory program on a cluster under the MPI interface.

Web Site:


  • William Gropp, Ewing Lusk, Anthony Skjellum,
    Using MPI: Portable Parallel Programming with the
    Message-Passing Interface,
    Third Edition,
    MIT Press, 2014,
    ISBN: 978-026-252-7392,
    LC: QA76.642.G76.
  • Peter Pacheco,
    Parallel Programming with MPI,
    Morgan Kaufman, 1996,
    ISBN: 978-155-860-3394,
    LC: QA76.642.P3.


On any ARC cluster, check the installation details
by typing "module spider impi".

IMPI requires that the appropriate modules be loaded before it can be run.
In general, the user must choose a compiler family before choosing the
MPI implementation.
One version of the appropriate commands for use on NewRiver is:

module purge
module load intel/15.3
module load impi/5.0


In the following batch file, a program counts the number of primes
between 2 and some upper limit. This is a process that can easily
be done in parallel, and so the program experiments with 1, 2, 4
and 8 MPI processes.

#! /bin/bash
#PBS -l walltime=00:05:00
#PBS -l nodes=1:ppn=8
#PBS -W group_list=newriver
#PBS -q open_q
#PBS -j oe
module purge
module load intel/15.3
module load impi/5.0
#  Compile the program.
mpiicc -o prime prime.c
#  Run the program with 1, 2, 4 and 8 processes.
for processes in 1 2 4 8
  mpirun -np $processes ./prime

A complete set of files to carry out a similar process are available in