Parallel Programming with MPI

by
Peter Pacheco

Parallel Programming with MPI is an elementary introduction to programming parallel systems that use the MPI 1.1 library of extensions to C and Fortran. It is intended for use by students and professionals with some knowledge of programming conventional, single-processor systems, but who have little or no experience programming multiprocessor systems. It is an extensive revision and expansion of A User's Guide to MPI.

Table of Contents.

Preface.

Information on obtaining a copy of the book can be obtained from Morgan Kaufmann Publishers Inc.

You can download source code for all the programs in the book. The code is available in either C (updated 2000/01/23) or Fortran (updated 2000/08/23). These files were created using the Unix utilities tar and compress. If you're having trouble unpacking them, you can find some help here.

Errata (updated 2002/10/16) and Notes (updated 2000/01/30) will be put online as soon as they become available.

Implementations of MPI

There are a number of freely available implementations of MPI that run on a variety of platforms:
  • The MPICH implementation runs on a wide range of platforms and operating systems including Unix, Windows NT, and Windows 2000/XP Professional.
  • The LAM implementation runs on networks of Unix/Posix workstations.
  • MP-MPICH runs on Unix systems, Windows NT and Windows 2000/XP Professional.
  • The WMPI implementation runs on Windows platforms running Windows 95/98, ME, NT and 2000.
  • MacMPI is a partial implementation of MPI for Macintosh computers.
  • The LAM website maintains a more complete list of MPI implementations. This list includes commercial implementations.

    More about MPI

    Further information on MPI is available from a variety of sources. The MPI Standard is available in postscript, compressed postscript, and html.

    The MPI Forum website has links to all of the MPI documents, errata, and archives of the meetings of the Forum.

    There are web sites devoted to MPI at

  • Argonne National Lab, and
  • Mississippi State University.
  • The Mississippi State University site also has a list of frequently asked questions about MPI (the MPI FAQ).

    If you have questions about MPI that aren't answered in the FAQ, probably the quickest way to get an answer is to post your question to the MPI newsgroup.

    There are also several other books devoted entirely or partially to MPI:

  • Using MPI by William Gropp, Ewing Lusk and Anthony Skjellum.
  • MPI: The Complete Reference by Marc Snir, Steve Otto, Steven Huss-Lederman, David Walker, and Jack Dongarra. The first edition is also available in html.
  • Designing and Building Parallel Programs by Ian Foster.
  • MPI-2

    The MPI-2 documents are available from the MPI Forum website. These documents are available in postscript, compressed postscript and html. There's a companion volume to Using MPI, Using MPI-2, by William Gropp, Ewing Lusk, and Rajeev Thakur. There's also a second volume of MPI: The Complete Reference, by William Gropp, Steven Huss-Lederman, Andrew Lumsdaine, Ewing Lusk, Bill Nitzberg, William Saphir, and Marc Snir. This is devoted to MPI-2.

    C++

    If you want to use MPI with an object-oriented language, the MPI-2 Report has bindings for C++. Indiana University has an implementation which can be used with C implementations. They also have a C++ implementation, OOMPI, which contains more features than the standard specifies.
    In order to contact Peter Pacheco, send email to user: peter, domain: usfca.edu. Last updated February 19, 2006