MPI:A Message-Passing Interface Standard Version 4.0 Message Passing Interface Forum June9,2021
MPI: A Message-Passing Interface Standard Version 4.0 Message Passing Interface Forum June 9, 2021
1 This document describes the Message-Passing Interface(MPI)standard,version 4.0. 2 The MPIstandard includes p oint-to-point ollective nicator concepts mmunication nd ntal ,grou ana ation and manage opolo ent.proce ided com tended collectiv eration interfaces.I/o.】 eoustopics,and multiple tool interfaces.Language binding for C and Fortra re defined 7 of the standard s MPI-10(MP1 ddition to MPI-2.0 (July 18,1997),with 10 onts 1.1 and 1.2 mbined nd to MPL-21 (Ju 23.2008 Version MPI-3.0( r21 2012 1 of MPI-2.2.Ve MPI-31 (I was an exten 0015 5 PI-4.0 (June 9, doqpe3nsioms 2021)adds significant new features t 18 Comments.Please send comments on MPI to the MPI Forum as follows: 1.Subscribe to https://lists.mpi-forum.org/mailman/listinfo/mpi-comments t-fortogeher wth the veron Onlyuetheotfdalvesio e page and line numbers on w ch you are commenting 34 Your comment will be forwarded to mpl forum committee members for consideration Messages sent from an unsubscribed e-mail address will not be considered. ©1993,1994,1995,1996,1997,2008,2009,2012,2015,2021 University of Tennessee. 46 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
This document describes the Message-Passing Interface (MPI) standard, version 4.0. 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 multiple tool interfaces. Language bindings for C and Fortran are defined. Historically, the evolution of the standard 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) was an extension of MPI-2.2. Version MPI-3.1 (June 4, 2015) added clarifications and minor extensions to MPI-3.0. Version MPI-4.0 (June 9, 2021) adds significant new features to MPI-3.1. Comments. Please send comments on MPI to the MPI Forum as follows: 1. Subscribe to https://lists.mpi-forum.org/mailman/listinfo/mpi-comments 2. Send your comment to: mpi-comments@lists.mpi-forum.org, together with 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. ©1993, 1994, 1995, 1996, 1997, 2008, 2009, 2012, 2015, 2021 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 4.0:June 9.2021.This version of the MPI-4 Standard is a major update and includes significant new functionality.The largest changes are the addition of large-count versions of many routines to address the limitations of using an int or INTEGER for the 3 count narameter persistent collectives,partitioned communications,an alternative way to initialize MPl,application info assertions,and improvements to the definitions of error 5 handling.In addition,there are a number of smaller improvements and corrections 6 This do in MPI-3.0.Addi nge ally,new added include pula king and rout 10 me for MPI_T riable 12 13 Version 3.0:September 21,2012.Coincident with the development of MPI-2.2,the MPI 4 Forum began discussions of a major extension to MPl.This document contains the MPl 5 3 Standard.This version of the MPl-3 standard contains significant extensions to MP 16 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 18 the MPI standard.As with previous versions,new features have been adopted only when here were compelling needs for the users.Some features.however.may have more than a 20 2 minor impact on existing MPl Implementations Version 2.2:September 4.2009. 23 This docum ont contains mostly corrections and clarifi. ations to the MPL2 1 documen A few extensions have been added.however all correct 25 MPI-2.1 programs are correct MPI-2.2 programs.New features were adopted only when 26 here were compelling needs for users.open source implementations.and minor impact on existing MPI implementations 28 tended Co MP-2.0, Ex fMPI-1.3. re Operations 32 errat rum are uded in this Version 1.3:May 30,2008.This document combines the previous documents MPI-1.1(June 2,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 MPl-1.2 are also included in this document. 38 Version 2 0.luly 18 1997 Beginning after the release of MPl1 1 the MPl 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 43 in particular language interoperability. xten clarifications and mir 1.130 197.3he andard
Version 4.0: June 9, 2021. This version of the MPI-4 Standard is a major update and includes significant new functionality. The largest changes are the addition of large-count versions of many routines to address the limitations of using an int or INTEGER for the count parameter, persistent collectives, partitioned communications, an alternative way to initialize MPI, application info assertions, and improvements to the definitions of error handling. In addition, there are a number of smaller improvements and corrections. 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 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 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
of the MPI Standard the very few difecon between MPLLd MeL12 butre diterences betwern MPk12 and MPI-2. Version 1.1:June,1995 Beginning in March,1995,the Me ge-Passing Interface Forum ow as Version 1.0. from Version 1.0 are minor. 1 Version 1.0:May,1994.The Message-Passing Interface Forum,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.The Message-Passing Interface Forum is 15 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 2 draft was processed by LYTEX on May 5,1994. 2 32 222 2
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. 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, 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. The Message-Passing Interface Forum 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 List of Figures List of Tables Acknowledgments xxii 1 1,MPI-12,and MPL-2.0 3 and MPI- 112234 Background of MPl-2.2 1.6 Background of MF 1.7 Background of MPI-3.1 1.0 of MPI-4.0 1 Who Should Use This Standard? 1.10 What Platforms Are Targets for Implementation? 445555 1.11 What Is Included in the Standard? What Is Not Included in the Standard? 1.13 Organization of This Document 6 2 MPI Terms s and Con nventions 4234 MPL 3 2.5 D Opaqu Objects Array Arguments 2.5 amed Constants 。 resses and Relative Address Displacements 112133157181800022223 2.5.7 File Offsets 2.5.8 Counts 26 Language Binding
Contents List of Figures xviii List of Tables xx Acknowledgments xxii 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 Background of MPI-4.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.9 Who Should Use This Standard? . . . . . . . . . . . . . . . . . . . . . . . 5 1.10 What Platforms Are Targets for Implementation? . . . . . . . . . . . . . . 5 1.11 What Is Included in the Standard? . . . . . . . . . . . . . . . . . . . . . . 5 1.12 What Is Not Included in the Standard? . . . . . . . . . . . . . . . . . . . . 6 1.13 Organization of This Document . . . . . . . . . . . . . . . . . . . . . . . . 6 2 MPI Terms and Conventions 11 2.1 Document Notation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.2 Naming Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.3 Procedure Specification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.4 Semantic Terms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.4.1 MPI Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.4.2 MPI Procedures . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.4.3 MPI Datatypes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.5 Datatypes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.5.1 Opaque Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.5.2 Array Arguments . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 2.5.3 State . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 2.5.4 Named Constants . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 2.5.5 Choice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.5.6 Absolute Addresses and Relative Address Displacements . . . . . 22 2.5.7 File Offsets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.5.8 Counts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.6 Language Binding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 v