% -*- latex -*- % % Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana % University Research and Technology % Corporation. All rights reserved. % Copyright (c) 2004-2005 The University of Tennessee and The University % of Tennessee Research Foundation. All rights % reserved. % Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, % University of Stuttgart. All rights reserved. % Copyright (c) 2004-2005 The Regents of the University of California. % All rights reserved. % $COPYRIGHT$ % % Additional copyrights may follow % % $HEADER$ % \chapter{Introduction to Open MPI} \label{sec:introduction} This chapter provides a summary of the MPI standard and the Open MPI implementation of that standard. \section{About MPI} The Message Passing Interface (MPI)~\cite{geist96:_mpi2_lyon,mpi_forum93:_mpi}, is a set of API functions enabling programmers to write high-performance parallel programs that pass messages between processes to make up an overall parallel job. MPI is the culmination of decades of research in parallel computing, and was created by the MPI Forum~-- an open group representing a wide cross-section of industry and academic interests. More information, including the both volumes of the official MPI standard, can be found at the MPI Forum web site.\footnote{\url{http://www.mpi-forum.org/}} MPI is suitable for ``big iron'' parallel machines such as the IBM SP, SGI Origin, etc., but it also works in smaller environments such as a group of workstations. Since clusters of workstations are readily available at many institutions, it has become common to use them as a single parallel computing resource running MPI programs. % The MPI standard was designed to support portability and platform independence. As a result, users can enjoy cross-platform development capability as well as transparent heterogenous communication. For example, MPI codes which have been written on the RS-6000 architecture running AIX can be ported to a SPARC architecture running Solaris with little or no modifications. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{About Open MPI} Open MPI is a project combining technologies and resources from several other projects (FT-MPI, LA-MPI, LAM/MPI, and PACX-MPI) in order to build the best MPI library available. A completely new MPI-2 compliant implementation, Open MPI offers advantages for system and software vendors, application developers, and computer science researchers. Features implemented or in short-term development for Open MPI include: \begin{itemize} \item Full MPI-2 standards conformance \item Thread safety and concurrency \item Dynamic process spawning \item High performance on all platforms \item Reliable and fast job management \item Network and process fault tolerance \item Support data and network heterogeneity \item Single library supports all networks \item Run-time instrumentation \item Many job schedulers supported \item Many OS's supported (32 and 64 bit) \item Production quality software \item Portable and maintainable \item Tunable by installers and end-users \item Extensive user and installer guides \item Internationalized error messages \item Component-based design, documented APIs \item CPAN-like tool for component management \item Active, responsive mailing list \item Open source license based on the BSD license \end{itemize} The organizations (and newly-combined projects) contributing to Open MPI are Indiana University (LAM/MPI), the University of Tennessee (FT-MPI), and Los Alamos National Laboratory (LA-MPI). Additional collaborators are at Sandia National Laboratories and the University of Stuttgart. These developers bring many years of combined experience to the project.