MPI:A Message-Passing Interface Standard Version 3.1 Message Passing Interface Forum June4,2015
MPI: A Message-Passing Interface Standard Version 3.1 Message Passing Interface Forum June 4, 2015
This document describes the Message-Passing Interface(MPI)standard,version 3.1. The MPI standard includes point-to-point message-passing,collective communications,group and communicator concepts,process topologies,environmental management,process cre ation and management one-sided communications extended collective onerations external interfaces,I/O,some miscellaneous topics,and a profiling interface.Language bindings for C and Fortran are defined. Historically,the evolution of the standards is from MPI-1.0 (May 5,1994)to MPI-1.1 (June 12.1995)to MPl-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. 10 to MPI-1.3 (May 30,2008),combining for historical reasons the documents 1.1 and 1.2 11 and some errata documents to one combined document.and to MPl-2.1(June 23.2008) 12 combining the previous documents.Version MPI-2.2(September 4,2009)added additional 13 clarifcation s and seven new routines.Version MPI-3.0(Se otember 21.2012)is an extension 14 of MPI-2.2.This version.MPI-3.1.adds clarifications and minor extensions to MPI-3.0 15 Comments.Please send comments on MPI to the MPI Forum as follows 1.Subscribe to http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi-comments 19 、一2 Send yoMngein oetherith the R.of the mbers on which you are Your comment will be forwarded to MPl Forum committee members for consideration. Messages sent from an unsubscribed e-mail address will not be considered. 25 29 30 31 32 之 9 A0 9193,19041995,196,197,2008,20,2012,2015 University of Te,Knoxvil D on to copy wit of th the Univ of Ter notice is given that copying is by permission of the University of Tennessee ument appear,and
This document describes the Message-Passing Interface (MPI) standard, version 3.1. 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 and Fortran are defined. Historically, the evolution of the standards is from MPI-1.0 (May 5, 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. Version MPI-2.2 (September 4, 2009) added additional clarifications and seven new routines. Version MPI-3.0 (September 21, 2012) is an extension of MPI-2.2. This version, MPI-3.1, adds clarifications and minor extensions to MPI-3.0 Comments. Please send comments on MPI to the MPI Forum as follows: 1. Subscribe to http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi-comments 2. Send your comment to: mpi-comments@mpi-forum.org, together with the URL of the version of the MPI standard and the page and line numbers on which you are commenting. Only use the official versions. Your comment will be forwarded to MPI Forum committee members for consideration. Messages sent from an unsubscribed e-mail address will not be considered. c 1993, 1994, 1995, 1996, 1997, 2008, 2009, 2012, 2015 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. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 ii
Version 3.1:June 4,2015.This document contains mostly corrections and clarifications to the MPI-3.0 do t The la tothe 2 routines to pulate MPI Aint 3 nonblocking collective I/O routines,and routines to get the me for MPIT perfor mance and 5 Version 3.0:September 21.2012. p时Tne Coincident with 7 Forum began dis 8 nent contains the Mh Standard 10 new one-sided communication operations. 11 nd上 e to 13 the MPI standard.As with previous versions,new features have been adopted only when 13 there were compelling needs for the users.Some features,however,may have more than a 14 minor impact on existing MPl implementations 15 16 Version 2.2:September 4.2009.This document contains mostly corrections and clarifi- 17 cations to the mPl21 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 MPl implementations. Version 2.1:June 23,2008. This do ent combines the ous docu ents MPl-1.3(May 30.2008)and MP1-2.0( July 18.1997).Certain MPL-2.0, e section 4 Mis d .Ext of MP-1.Additio ons Forum are cluded in this docume nt Version 1.3:May 30,2008. This document combines the previous documents MPl-1.1 (June 12,1995)and the MP1-1.2 Chapter in MP1-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 do not fit elsewhere, in particular language interoperability. Version 12 luly 18 1997 The MPl-2 For introduced MPI-1.2 as Chapter 3 in the standard"MPI-2:Exter ons to the Me g Interface" contains clarificatio tion s to v ctio in MPI-1.2 i ne for ider all diftow hic the confo T MPI-1 and MPL-1 1 The MP-MP-1.teM- 46 47 48
Version 3.1: June 4, 2015. This document contains mostly corrections and clarifications to the MPI-3.0 document. The largest change is a correction to the Fortran bindings introduced in MPI-3.0. Additionally, new functions added include routines to manipulate MPI_Aint values in a portable manner, nonblocking collective I/O routines, and routines to get the index value by name for MPI_T performance and control variables. Version 3.0: September 21, 2012. Coincident with the development of MPI-2.2, the MPI Forum began discussions of a major extension to MPI. This document contains the MPI-3 Standard. This draft version of the MPI-3 standard contains significant extensions to MPI functionality, including nonblocking collectives, new one-sided communication operations, and Fortran 2008 bindings. Unlike MPI-2.2, this standard is considered a major update to the MPI standard. As with previous versions, new features have been adopted only when there were compelling needs for the users. Some features, however, may have more than a minor impact on existing MPI implementations. Version 2.2: September 4, 2009. This document contains mostly corrections and clarifi- cations 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 do not 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. iii 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
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.The changes from Version 1.0 are minor.A version of this document with all changes marked is available Version 1.0:May,1994.The Message-Passing Interface Forum (MPIF),with participa essage passing any official standards 10 essage-Pas sing Interface, 12 ical,p rtable. sis the fina report, c of the M 15 19 22 32
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. The changes from Version 1.0 are minor. A version of this document with all changes marked is available. 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. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 iv
Contents Acknowledgments Introduction to MPl 11 1 1.2 1.3 nd of MPI-1.1.MPL-1.2.and MPI-2.0 1.4 Background of MPI-1.3 and MPI-2.1 Ba kground of MPL2 d of MPL-3.0 This Standa rnPplaneutation Not In 22344455566 ded In Th ndar ? of this Document 2 MPI Terms and Conventions 9 2.1 Document Notation 9 2.2 Naming Conventions 9 2. Procedure Specification 2.4 Semantic Terms 01 2.5 Data Types 2.51 Opaque Objects 959 Arguments 12124 2.5.3 2.5.4 Named Constants 2.5.5 Choice 2.5.6 Absolute Addresses and Relative Address Displacements 057 File Offsets 2.5.8 Counts 2.6 age Bindin and ren oved Nam 2.6.3 C Binding Iss 2.6.4 ion nd Macros 4500077799000 Error Han dimg
Contents Acknowledgments ix 1 Introduction to MPI 1 1.1 Overview and Goals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 Background of MPI-1.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.3 Background of MPI-1.1, MPI-1.2, and MPI-2.0 . . . . . . . . . . . . . . . . . 2 1.4 Background of MPI-1.3 and MPI-2.1 . . . . . . . . . . . . . . . . . . . . . . 3 1.5 Background of MPI-2.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.6 Background of MPI-3.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.7 Background of MPI-3.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.8 Who Should Use This Standard? . . . . . . . . . . . . . . . . . . . . . . . . 5 1.9 What Platforms Are Targets For Implementation? . . . . . . . . . . . . . . 5 1.10 What Is Included In The Standard? . . . . . . . . . . . . . . . . . . . . . . 5 1.11 What Is Not Included In The Standard? . . . . . . . . . . . . . . . . . . . . 6 1.12 Organization of this Document . . . . . . . . . . . . . . . . . . . . . . . . . 6 2 MPI Terms and Conventions 9 2.1 Document Notation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.2 Naming Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.3 Procedure Specification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.4 Semantic Terms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.5 Data Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.5.1 Opaque Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.5.2 Array Arguments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.5.3 State . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.5.4 Named Constants . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.5.5 Choice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.5.6 Absolute Addresses and Relative Address Displacements . . . . . . . 16 2.5.7 File Offsets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.5.8 Counts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.6 Language Binding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.6.1 Deprecated and Removed Names and Functions . . . . . . . . . . . . 17 2.6.2 Fortran Binding Issues . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.6.3 C Binding Issues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.6.4 Functions and Macros . . . . . . . . . . . . . . . . . . . . . . . . . . 20 2.7 Processes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 2.8 Error Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 v