Open MPI is a relatively new MPI implementation. The project started in 2003 by the developers of LAM-MPI (Indiana University), LA-MPI (Los Alamos) and FT-MPI (University of Tennessee). In 2004 HLRS, the developers of PACX-MPI, joined the project. Some of the Open MPI goals are:
In 2005, the first public release 1.0 was made. Since the first release continuous progress has been made. The current stable release is 1.2.8 and the major release 1.3 is coming soon. Since the first release of the project it has grown up to 15 members and several additional contributors by the end of 2008. These members come from different scientific domains and research areas as well as industrial/commercial partners (IBM, Cisco, Sun, Myricom, Mellanox, etc.).
The Open MPI project itself can be partitioned into 3 logical layers:
Open MPI is based on a component architecture. Component architecture means that for every functionality (e.g. starting processes, sending/receiving data, …) a specific formalized interface is defined. The specified functionality is implemented by different components in different ways. This “black box” approach allows developers to write code that is independent of the current implementation and therefore increase the abstraction. In the current development version of Open MPI almost 30 different kinds of components are defined. When an Open MPI program is started Open MPI will dynamically analyse the system and then “compose” the matching components to the best possible runtime configuration. If for example a system has an Ethernet and a Myricom interconnect, Open MPI will load the corresponding Ethernet component (TCP) and the corresponding Myrinet component (MX or GM). If there are other components available that do not match the current system (e.g. Infiniband) then Open MPI will ignore these components. This dynamic approach of composing the MPI components on demand allows Open MPI to be very flexible and to offer some special features. It is possible to load and use multiple transport systems at the same time. If data needs to be exchanged between processes Open MPI will always try to use the most performant transfer mechanism that is available. If for example one process sends data to another one and both processes are located on the same memory, Open MPI will send the data via the shared memory module. If shared memory transfer is not an option, the next best module will be used. As far as fault tolerance is concerned, the loss of some components (associated resources, e.g a cable or switch failure) at runtime can be tolerated as long as the remaining components offer enough functionality. For example, it is possible to finish a run if the Infiniband network in use becomes unavailable (e.g. failing cable) as long as there is another transport layer (e.g. sockets) available to reach every process in the job.
Open MPI is being installed on all DORII sites which support parallel jobs. The actual status of the installation is listed in the following table:
| CE | Version | Details |
|---|---|---|
| HG-06-EKT (ce01.athena.hellasgrid.gr) | 1.3 | 32-bit version at /opt/openmpi/1.3-i386 and 64-bit version at /opt/openmpi/1.3-x86_64 |
More details about Open MPI can be found at http://www.openmpi.org/ For technical support or reporting troubleshoots please refer to the DORII Helpdesk sercice available at https://dorii-helpdesk.grid.elettra.trieste.it/