MPICH-A Portable Implementation of MPIMPICH is a freely available, portable implementation of MPI, the Standard for message-passing libraries.
The MPICH Implementation (postscript) is described in this paper. A bibtex bibliography of papers relating to MPICH is available. If you use MPICH for work that appears in a paper or report, please use these references. Additional papers and technical reports are also available.
Getting the MPICH implementationMPICH is freely available and is distributed as source.
A list of known bugs and patchfiles is available.
Bugs, problems, and suggestions should be sent to mpibugs.
MPICH2MPICH2 is an all-new implementation of MPI, designed to support research into high-performance implementations of MPI-1 and MPI-2 functionality. In addition to the features in MPICH, MPICH2 includes support for one-side communication, dynamic processes, intercommunicator collective operations, and expanded MPI-IO functionality. Clusters consisting of both single-processor and SMP nodes are supported. With the exception of users requiring the communication of heterogeneous data, we strongly encourage everyone to consider switching to MPICH2. Researchers interested in using using MPICH as a base for their research into MPI implementations should definitely use MPICH2.
MPICH2 is a unified source distribution, supporting most flavors of Unix and recent versions of Windows. In additional, binary distributions are available for Windows platforms. Please see the MPICH2 home page for more details and for download instructions.
BooksThe books Using MPI and Using MPI-2, published by MIT Press, describe how to use MPI and makes use of some of the special features of this implementation.
Tools for MPICHA list of tools that work with MPICH is available.
Year 2000 StatementMPICH is Y2K compliant. The MPI standard has no calendar or date related operations, and there are no uses of dates or calendar-related operations in any of the MPICH code. For those who are interested, our checks did reveal a use of date information in one of our scripts that we use to develop and manage MPICH; we fixed this in 1998. The script in question was never in any MPICH distribution, so all versions of MPICH are Y2K compliant.
Projects Using MPICHWe have begun a page that describes some projects that are using MPICH. If you would like to be mentioned on this page, please send mail to firstname.lastname@example.org briefly describing your project. The gallery of MPICH projects is here.
DemonstrationsExample programs and output are available.
Supported SystemsMPICH supports a wide range of systems. These include workstation clusters, shared memory systems, and massively parallel supercomputers. A list of supported systems is available.
Thread SafetyThe MPICH implementation is not thread-safe. In many cases, it may be possible to use MPICH in what in MPI-2 are called MPI_THREAD_FUNNELED or MPI_THREAD_SERIALIZED modes when kernel (as opposed to user) threads are used. We plan to support a MPI_THREAD_MULTIPLE in a later release.
Porting MPICH to other systemsMPICH is designed to be relatively easy to port to other systems. Information on the design of MPICH is available here.
MPICH has been used as the basis of many MPI implementations. A page of links to other MPI implementations based on MPICH is available.