This document describes the Message-Passing Interface ( MPI)   
   standard, version 2.2.   
   The  MPI standard includes point-to-point message-passing,  
   collective communications, group and communicator concepts,  
   process topologies, environmental management,   
   process creation and management, one-sided communications,  
   extended collective operations, external interfaces, I/O,  
   some miscellaneous topics, and a profiling interface.   
   Language bindings for C, C++ and Fortran are defined.  
  
   Technically, this version of the standard is based on  
   `` MPI: A Message-Passing Interface Standard, version 2.1, June 23, 2008.  
   The MPI Forum added seven new routines and a number of enhancements and   
   clarifications to the standard.  
   
Historically, the evolution of the standards is from  
    MPI-1.0 (June 1994) to  MPI-1.1 (June 12, 1995) to  
    MPI-1.2 (July 18, 1997), with several clarifications and additions  
   and published as part of the  MPI-2 document, to  
    MPI-2.0 (July 18, 1997), with new functionality, to  
    MPI-1.3 (May 30, 2008),   
   combining for historical reasons   
   the documents 1.1 and 1.2 and some errata   
   documents   
   to one combined document,   
   and to  MPI-2.1 (June 23, 2008), combining the   
   previous documents.  
   This version,  MPI-2.2, is based on   
    MPI-2.1 and provides  
   additional clarifications and errata corrections as well as a few   
   enhancements.  
  
   
   
  
(c) 1993, 1994, 1995, 1996, 1997,   
2008, 2009   
University of Tennessee, Knoxville, Tennessee.  
Permission to copy without fee all or part of this material is  
granted, provided the University of Tennessee copyright notice and the  
title of this document appear, and notice is given that copying is by  
permission of the University of Tennessee.  
  
  
  
  
Version 2.2:  September 4, 2009. This document contains mostly corrections and clarifications to the  
MPI 2.1 document.  A few extensions have been added; however all  
correct MPI 2.1 programs are correct MPI 2.2 programs.  New features  
were adopted only when there were compelling needs for users, open  
source implementations, and minor impact on existing MPI  
implementations.    
  
  
  
Version 2.1: June 23, 2008. This document combines the previous documents   
 MPI-1.3 (May 30, 2008)   
and  MPI-2.0 (July 18, 1997).   
Certain parts of  MPI-2.0, such as some sections of Chapter 4,   
Miscellany, and Chapter 7, Extended Collective Operations have   
been merged into the Chapters of  MPI-1.3. Additional errata and   
clarifications collected by the  MPI Forum are also included in   
this document.  
  
  
Version 1.3: May 30, 2008. This document combines the previous   
documents  MPI-1.1 (June 12, 1995) and the  MPI-1.2 Chapter in  MPI-2   
(July 18, 1997). Additional errata collected by the  MPI Forum   
referring to  MPI-1.1 and  MPI-1.2 are also included in this   
document.  
  
  
Version 2.0: July 18, 1997. Beginning after the release of   
 MPI-1.1, the  MPI Forum began meeting to consider corrections and   
extensions.  MPI-2 has been focused on process creation and   
management, one-sided communications, extended collective   
communications, external interfaces and parallel I/O. A miscellany   
chapter discusses items that don't fit elsewhere, in particular   
language interoperability.  
  
  
Version 1.2: July 18, 1997. The  MPI-2 Forum introduced  MPI-1.2 as   
Chapter 3   
in the standard " MPI-2: Extensions to the Message-Passing  
Interface", July 18, 1997.  This section contains clarifications   
and minor corrections to Version 1.1 of the  MPI Standard. The only   
new function in  MPI-1.2 is one for identifying to which version of   
the  MPI Standard the implementation conforms. There are small   
differences between  MPI-1 and  MPI-1.1. There are very few differences   
between  MPI-1.1 and  MPI-1.2, but large differences between  MPI-1.2  
and  MPI-2.  
  
  
Version 1.1: June, 1995. Beginning in March, 1995, the Message-Passing Interface Forum reconvened to   
correct errors and make clarifications in the  MPI document of May 5, 1994,  
referred to below as Version 1.0.  These discussions resulted in Version 1.1,  
which is this document.  The changes from Version 1.0 are minor.  A version  
of this document with all changes marked is available.  This paragraph is an  
example of a change.  
  
  
Version 1.0:  May, 1994. The Message-Passing Interface Forum (MPIF), with participation from over  
40 organizations, has been meeting since January 1993 to discuss and  
define a set of library interface standards for message  
passing.  
MPIF is not sanctioned or supported by any official  
standards organization.  
  
The goal of the Message-Passing Interface, simply stated, is to  
develop a widely used  
standard for writing message-passing programs.  
As such the interface should  
establish a practical, portable, efficient, and flexible standard   
for message-passing.  
  
This is the final report, Version 1.0, of  
the Message-Passing Interface Forum.  This document contains all the  
technical features proposed for the interface.  This copy of the draft  
was processed by LaTeX on  
  
May 5, 1994.  
  
Please send comments on  MPI to   
 mpi-comments@mpi-forum.org.  
Your comment will be forwarded to   
 MPI Forum   
committee members who will  
attempt to respond.  
   
  
  
  
  
  
  
  
  
  
     
  
  
  
   
  
  
   
  
  
 Acknowledgments   
  
  
  
  
  
This document represents the work of many people who have served on  
the  MPI Forum.  The meetings have been attended by dozens of people  
from many parts of the world.  It is the hard and dedicated work of  
this group that has led to the  MPI standard.  
  
The technical development was carried out by subgroups, whose work was  
reviewed by the full committee.  During the period of development of  
the Message-Passing Interface ( MPI), many people helped with this  
effort.    
  
Those who served as primary coordinators in  MPI-1.0 and  MPI-1.1 are:  
  
 
 
 
  
The following list includes some of the active participants in  
the  MPI-1.0 and  MPI-1.1 process not mentioned above.  
  
  
| Ed Anderson | Robert Babb | Joe Baron | Eric Barszcz | 
| Scott Berryman | Rob Bjornson | Nathan Doss | Anne Elster | 
| Jim Feeney | Vince Fernando | Sam Fineberg | Jon Flower | 
| Daniel Frye | Ian Glendinning | Adam Greenberg | Robert Harrison | 
| Leslie Hart | Tom Haupt | Don Heller | Tom Henderson | 
| Alex Ho | C.T. Howard Ho | Gary Howell | John Kapenga | 
| James Kohl | Susan Krauss | Bob Leary | Arthur Maccabe | 
| Peter Madams | Alan Mainwaring | Oliver McBryan | Phil McKinley | 
| Charles Mosher | Dan Nessett | Peter Pacheco | Howard Palmer | 
| Paul Pierce | Sanjay Ranka | Peter Rigsbee | Arch Robison | 
| Erich Schikuta | Ambuj Singh | Alan Sussman | Robert Tomlinson | 
| Robert G. Voigt | Dennis Weeks | Stephen Wheat | Steve Zenith | 
The University of Tennessee and Oak Ridge National Laboratory made the draft available by anonymous FTP mail servers and were instrumental in distributing the document.
The work on the MPI-1 standard was supported in part by ARPA and NSF under grant ASC-9310330, the National Science Foundation Science and Technology Center Cooperative Agreement No. CCR-8809615, and by the Commission of the European Community through Esprit project P6643 (PPPE).