Precursor Systems


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

MPICH came into being quickly because it could build on stable code from existing systems. These systems prefigured in various ways the portability, performance, and some of the other features of MPICH. Although most of that original code has been extensively reworked, MPICH still owes some of its design to those earlier systems, which we briefly describe here.

P4 [8] is a third-generation parallel programming library, including both message-passing and shared-memory components, portable to a great many parallel computing environments, including heterogeneous networks. Although p4 contributed much of the code for TCP/IP networks and shared-memory multiprocessors for the early versions of MPICH, most of that has been rewritten. P4 remains one of the ``devices'' on which MPICH can be built (see Section Architecture of MPICH ), but in most cases more customized alternatives are available.

Chameleon [31] is a high-performance portability package for message passing on parallel supercomputers. It is implemented as a thin layer (mostly C macros) over vendor message-passing systems (Intel's NX, TMC's CMMD, IBM's MPL) for performance and over publicly available systems (p4 and PVM) for portability. A substantial amount of Chameleon technology is incorporated into MPICH (as detailed in Section Architecture of MPICH ).

Zipcode [41] is a portable system for writing scalable libraries. It contributed several concepts to the design of the MPI Standard---in particular contexts, groups, and mailers (the equivalent of MPI communicators). Zipcode also contains extensive collective operations with group scope as well as virtual topologies, and this code was heavily borrowed from in the first version of MPICH.



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