MPI offers standardization, portability, performance, functionality, and several high quality implementations.
- Standardization
-
MPI is standardized on many levels. For example, since the syntax is standardized, you can rely on your MPI code to execute under any MPI implementation running on your architecture. Since the functional behavior of MPI calls is standardized too, you don't have to worry about which implementation of MPI is currently on your machine; your MPI calls should behave the same regardless of the implementation. Performance, however, will vary slightly among different implementations. Both syntax and the functional behavior of MPI calls is standardized across architectures.
- Portability
-
In the rapidly changing environment of high performance computing and communication technology, portability is extremely important. No one wants to develop a program that can be run on only one machine, or only poorly on others. All massively parallel processing (MPP) systems provide some sort of message passing library specific to their hardware. These provide great performance, but an application code written specifically for one platform cannot be easily ported to another.
With MPI, you can write portable programs that still take advantage of the specifications of the hardware and software provided by vendors. This is mostly taken care of by simply using MPI calls, because the implementors have tuned these calls to the underlying hardware and software environment.
- Performance
-
A number of environments, including PVM, Express, and P4, have attempted to provide a standardized parallel computing environment. However, none of these attempts has shown the high performance of MPI. They are not available on our system.
- Richness
-
MPI has more than one quality implementation. These implementations provide asynchronous communication, efficient message buffer management, efficient groups, and rich functionality. MPI includes a large set of collective communication operations, virtual topologies, and different communication modes, and MPI supports libraries and heterogeneous networks as well.
Implementations currently available include
- MPI/Pro: Verari Systems (formerly MPI Software Technology, Inc.) implementation
- IBM MPI: IBM product implementation for the SP and RS/6000 workstation clusters
- MPICH: Argonne National Lab and Mississippi State University implementation
- UNIFY: Mississippi State University implementation
- CHIMP: Edinburgh Parallel Computing Centre implementation
- LAM: Ohio Supercomputer Center implementation
MPI is available on many massively parallel systems.
Please see the software page for up to date information on the version of MPI installed on the various machines in our cluster.