The Message Passing Interface (MPI) is a portable message-passing standard that facilitates the development of parallel applications and libraries. The standard defines the syntax and semantics of a core of library routines useful to a wide range of users writing portable message-passing programs in Fortran 77 or C. MPI also forms a possible target for compilers of languages such as High Performance Fortran [8]. Commercial and free, public-domain implementations of MPI already exist (see sidebar A). These run on both tightly-coupled, massively-parallel machines (MPPs), and on networks of workstations (NOWs).
The MPI standard was developed over a year of intensive meetings and involved over 80 people from approximately 40 organizations, mainly from the United States and Europe. Many vendors of concurrent computers were involved, along with researchers from universities, government laboratories, and industry. This effort culminated in the publication of the MPI specification [5]. Other sources of information on MPI are available or are under development (see sidebar B).
Researchers incorporated into MPI the most useful features of several systems, rather than choosing one system to adopt as the standard. MPI has roots in PVM [6][3], Express [9], P4 [1], Zipcode [10], and Parmacs [2], and in systems sold by IBM, Intel, Meiko, Cray Research, and Ncube.