At a supercomputing conference in 1992 a committee
was formed to define a message-passing standard.
MPI (Message Passing Interface) was worked out at
meetings. MPI 1 follows from 1993-1995 meetings;
MPI 2 from a 1997 forum.
The
MPI homepage is maintained at Argonne National
Laboratory. Standards, archives, documentation
and links to implementations are available.
MPI is a library of
- subroutines for Fortran
- functions for C
- classes and methods for C++
User programs are compiled as usual (e.g., with
gcc or g++ under Linux on the VDIL beowulf cluster)
and then linked with the appropriate MPI libraries.
Implementations:
-
MPICH is available from Argonne National Laboratory.
It is free and easily downloaded and can be
installed at the user level (i.e., without
superuser privileges). Subroutines are
provided for Fortran 90, C and C++.
-
LAM/MPI is available from Indiana University.
"LAM" stands for Local Area Multicomputer.
It was originally developed at the Ohio Supercomputing Center,
then moved to the University of Notre Dame before
moving to Indiana University in 2001.
Version 6.5.4 (maybe the last from Notre Dame)
is installed on the VDIL beowulf cluster.
The current version of LAM is 7.0.
-
WMPI II is a commercial (but free to academics)
implementation for Windows.
Good code containing MPI calls should run
without change under all implementations.
At the user level implementations differ only
in the way the user initializes processes and
communications.
A helpful book for learning to use MPI:
Using MPI: Portable Parallel Programming with the
Message-Passing Interface
by William Gropp,
Ewing Lusk and Anthony Skjellum,
The MIT Press, Cambridge MA, 1999.
UMD Library QA 76.642 .G76 1999
The book contains general discussion of MPI
and many examples in Fortran, C, and C++.
Message passing is for a set of processes that
have local memory and can communicate with other
processes by sending and receiving messages.
The processes can be running on the same or
different CPUs. The computers and operating
systems need not all be the same (e.g., a mix
of Linux, HP, Sun, IBM, SGI is possible).