Chapter 18. MPI Implementations

Table of Contents

18.1. MPI
18.1.1. What is MPI?
18.1.2. The main implementations
18.2. MPICH-A Portable Implementation of MPI
18.2.1. What is MPICH ?
18.2.2. Current Release
18.2.3. How does it works ?
18.2.4. More documentation
18.3. LAM (Local Area Multicomputer)
18.3.1. What is LAM ?
18.3.2. Current Release
18.3.3. How does it works ?
18.3.4. More documentation

18.1. MPI

18.1.1. What is MPI?

MPI is a library specification for message-passing, proposed as a standard by a broadly based committee of vendors, implementors, and users.

MPI was designed for high performance on both massively parallel machines and on workstation clusters.

MPI is widely available, with both free available and vendor-supplied implementations. A number of MPI home pages are available.

MPI was developed by a broadly based committee of vendors, implementors, and users

18.1.2. The main implementations

There is multiple implementations of MPI protocol but the main's one are MPICH and LAM.

18.2. MPICH-A Portable Implementation of MPI

18.2.1. What is MPICH ?

The project to provide a portable implementation of MPI began at the same time as the MPI definition process itself. The idea was to provide early feedback on decisions being made by the MPI Forum and provide an early implementation to allow users to experiment with the definitions even as they were being developed. Targets for the implementation were to include all systems capable of supporting the message-passing model. MPICH is a freely available, complete implementation of the MPI specification, designed to be both portable and efficient. The ``CH'' in MPICH stands for ``Chameleon,'' symbol of adaptability to one's environment and thus of portability. Chameleons are fast, and from the beginning a secondary goal was to give up as little efficiency as possible for the portability.

18.2.2. Current Release

IGGI contains the 1.2.5.2 and mpich2-1.0.4 version of MPICH, with no major patches. This version includes the c, c++ and gfortran version of the MPI compiler. Mpich is installed by default on client and server side.

18.2.3. How does it works ?

Mpich-1.2 uses a file (called machine.LINUX) which contain the list of available nodes. The mpirun command allow users to send mpi command on the cluster.

I.e mpirun -np 4 testmpi.mpich will run the "testmpi.mpich" on 4 nodes. You can find this sample test program in /usr/share/doc/mpich-1.2.5 directory.

Mpich uses rsh to execute remote commands on nodes, so rsh should be configured for allowing remote user to logon. Home directories should contains a .rhosts file which contain the list of nodes/users allowed to logon. This file is autogenerated by the "adduserNis" script.

18.2.4. More documentation

You can find more documentation about MPICH at http://www-unix.mcs.anl.gov/mpi/mpich/

18.3. LAM (Local Area Multicomputer)

18.3.1. What is LAM ?

LAM (Local Area Multicomputer) is an MPI programming environment and development system for heterogeneous computers on a network. With LAM, a dedicated cluster or an existing network computing infrastructure can act as one parallel computer solving one problem. LAM features extensive debugging support in the application development cycle and peak performance for production applications. LAM features a full implementation of the MPI communication standard.

18.3.2. Current Release

IGGI contains the 7.2.3 version of LAM, with no major patches. This version includes the c, c++ and gfortran version of the MPI compiler. Lam doesn't conflicts anymore with Mpich. The "mpirun" command has been renamed in "mpirun-lam".

18.3.3. How does it works ?

LAM uses a file (called lam-bhost.def) which contain the list of available nodes. Then use the "lamboot" command to start LAM on all the nodes specified in the node list. As with Mpich, the "mpirun-lam" command allow users to send mpi commands on the cluster. Use "lamhalt" command to stop all the LAM daemons.

18.3.4. More documentation

You can find more documentation about LAM at http://www.lam-mpi.org/faq/