Development History of MPICH


Up: Background Next: Related Work Previous: Brief Overview of MPI

At the organizational meeting of the MPI Forum at the Supercomputing '92 conference, Gropp and Lusk volunteered to develop an immediate implementation that would track the Standard definition as it evolved. The purpose was to quickly expose problems that the specification might pose for implementors and to provide early experimenters with an opportunity to try ideas being proposed for MPI before they became fixed. The first version of MPICH, in fact, implemented the prespecification described in [46] within a few days. The speed with which this version was completed was due to the existing portable systems p4 and Chameleon. This first MPICH, which offered quite reasonable performance and portability, is described in [30].

Starting in spring 1993, this implementation was gradually modified to provide increased performance and portability. At the same time the system was greatly expanded to include all of the MPI specification. Algorithms for the collective operations and topologies, together with code for attribute management, were borrowed from Zipcode and tuned as the months went by.

What made this project unique was that we had committed to following the MPI specification as it developed---and it changed at every MPI Forum meeting. Most system implementors wait for a stable specification. The goals of this project dictated that, in the short term, we deliberately choose a constantly changing specification. The payoff came, of course, when the MPI Standard was released in May 1994: the MPICH implementation was complete, portable, fast, and available immediately. It is worthwhile to contrast this situation with what happened in the case of the High-Performance Fortran (HPF) Standard. The HPF Forum (which started and finished a year before the MPI Forum) produced their standard specification in much the same way that the MPI Forum did. However, since implementation was left entirely to the vendors, who naturally waited until the specification was complete before beginning to invest implementation effort, HPF implementations are only now (February 1996) becoming available, whereas a large community has been using MPI for over a year.

For the past year, with the MPI Standard stable, MPICH has continued to evolve in several directions. First, the Abstract Device Interface (ADI) architecture, described in Section Architecture of MPICH and central to the performance, has developed and stabilized. Second, individual vendors and others have begun taking advantage of this interface to develop their own highly specialized implementations of it; as a result, extremely efficient implementations of MPI exist on a greater variety of machines than we would have been able to tune MPICH for ourselves. In particular, Convex, Intel, SGI, and Meiko have produced implementations of the ADI that produce excellent performance on their own machines, while taking advantage of the portability of the great majority of the code in MPICH above the ADI layer. Third, the set of tools that form part of the MPICH parallel programming environment has been extended; these are described in Section Toward a Portable Parallel Programming Environment .



Up: Background Next: Related Work Previous: Brief Overview of MPI