A.4.1 Point-to-Point Communication Fortran Bindings 763 A.4.2 Datatypes Fortran Bindings 766 A.4.3 Collective Communication Fortran Bindings 768 A.4.4 Groups,Contexts,Communicators,and Caching Fortran Bindings 772 A.4.5 Process Topologies Fortran Bindings 776 A.4.6 MPI Environmental Management Fortran Bindings. 779 A.4.7 The Info Object Fortran Bindings 781 A.4.8 Process creation and management fortran bindings 82 A.4.9 One-Sided Communications Fortran Bindings 78 A.4.10 External Interfaces Fortran Bindings. 87 A.4.11 I/O Fortran Bindings 788 A.4.12 Language Bindings Fortran Bindings 792 A.4.13 Tools Profiling Interface Fortran Bindings A.4.14 Deprecated Fortran Bindings 793 B Change-Log 795 B.1 Changes from Version 3.0 to Version 3.1.. 795 B.1.1 Fixes to Errata in Previous Versions of MPI............. 795 B.1.2 Changes in MPl-3.1 797 B.2 Changes from Version 2.2 to Version 3.0.. 798 B.2.1 Fixes to Errata in Previous Versions of MPI. 798 B.2.2 Changes in MPI-3.0 799 B.3 Changes from Version 2.1 to Version 2.2 803 B.4 Changes from Version 2.0 to Version 2.1 806 Bibliography 811 General Index 816 Examples Index 820 MPI Constant and Predefined Handle Index 823 MPI Declarations Index 828 MPI Callback Function Prototype Index 829 MPI Function Index 830 xvi
A.4.1 Point-to-Point Communication Fortran Bindings . . . . . . . . . . . 763 A.4.2 Datatypes Fortran Bindings . . . . . . . . . . . . . . . . . . . . . . . 766 A.4.3 Collective Communication Fortran Bindings . . . . . . . . . . . . . . 768 A.4.4 Groups, Contexts, Communicators, and Caching Fortran Bindings . 772 A.4.5 Process Topologies Fortran Bindings . . . . . . . . . . . . . . . . . . 776 A.4.6 MPI Environmental Management Fortran Bindings . . . . . . . . . . 779 A.4.7 The Info Object Fortran Bindings . . . . . . . . . . . . . . . . . . . 781 A.4.8 Process Creation and Management Fortran Bindings . . . . . . . . . 782 A.4.9 One-Sided Communications Fortran Bindings . . . . . . . . . . . . . 783 A.4.10 External Interfaces Fortran Bindings . . . . . . . . . . . . . . . . . . 787 A.4.11 I/O Fortran Bindings . . . . . . . . . . . . . . . . . . . . . . . . . . 788 A.4.12 Language Bindings Fortran Bindings . . . . . . . . . . . . . . . . . . 792 A.4.13 Tools / Profiling Interface Fortran Bindings . . . . . . . . . . . . . . 793 A.4.14 Deprecated Fortran Bindings . . . . . . . . . . . . . . . . . . . . . . 793 B Change-Log 795 B.1 Changes from Version 3.0 to Version 3.1 . . . . . . . . . . . . . . . . . . . . 795 B.1.1 Fixes to Errata in Previous Versions of MPI . . . . . . . . . . . . . . 795 B.1.2 Changes in MPI-3.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . 797 B.2 Changes from Version 2.2 to Version 3.0 . . . . . . . . . . . . . . . . . . . . 798 B.2.1 Fixes to Errata in Previous Versions of MPI . . . . . . . . . . . . . . 798 B.2.2 Changes in MPI-3.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . 799 B.3 Changes from Version 2.1 to Version 2.2 . . . . . . . . . . . . . . . . . . . . 803 B.4 Changes from Version 2.0 to Version 2.1 . . . . . . . . . . . . . . . . . . . . 806 Bibliography 811 General Index 816 Examples Index 820 MPI Constant and Predefined Handle Index 823 MPI Declarations Index 828 MPI Callback Function Prototype Index 829 MPI Function Index 830 xvi
List of Figures 5.1 Collective communications,an overview 143 5.2 Intercommunicator allgather. 146 5.3 Intercommunicator reduce-scatter 147 5.4 Gather example. 153 5.5 Gatherv example with strides 154 5.6 Gatherv example,2-dimensional 155 5 7 Cathery examnle 2.dimensional subarrays with different sizes 156 5.8 Gathery example.2-dimensional.subarrays with different sizes and strides 158 5.9 Scatter example 16g 5.10 Scatterv example with strides 163 5.11 Scattery le with different strides and counts 5.12 Race conditions with point-to-point and collective communications 217 5.13 Overlapping Communicators Example 221 6.1 Intercommunicator creation using MPI_COMM_CREATE 6.2 Intercommunicator construction with MPl_.COMM_SPLIT·········· 24 6.3 Three-group pipeline..................... 3 6.4 Three-group ring.....。.,.,...。..,..,,。。.. 264 71 Neighborhood gather communication example 316 72 pof】 allel Pois 7.3 ation routine all-to-all. 331 74 with spar rhood all-to-all-w and without local data copying. 332 11.1 Schematic description of the public/private window operations in the MPI_WIN_SEPARATE memory model for two overlapping windows....... 430 11.2 Active target communication.... 438 11.3 Active target communication.with weak synchronization........... 9 11.4 Passive target communication 440 11.5 Active target communication with several processes 444 11.6 Symmetric communication. 462 11 7 Deadlock situation 463 11.8 No deadlock. 463 e among parallel processes xvii
List of Figures 5.1 Collective communications, an overview . . . . . . . . . . . . . . . . . . . . 143 5.2 Intercommunicator allgather . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 5.3 Intercommunicator reduce-scatter . . . . . . . . . . . . . . . . . . . . . . . . 147 5.4 Gather example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 5.5 Gatherv example with strides . . . . . . . . . . . . . . . . . . . . . . . . . . 154 5.6 Gatherv example, 2-dimensional . . . . . . . . . . . . . . . . . . . . . . . . 155 5.7 Gatherv example, 2-dimensional, subarrays with different sizes . . . . . . . 156 5.8 Gatherv example, 2-dimensional, subarrays with different sizes and strides . 158 5.9 Scatter example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 5.10 Scatterv example with strides . . . . . . . . . . . . . . . . . . . . . . . . . . 163 5.11 Scatterv example with different strides and counts . . . . . . . . . . . . . . 164 5.12 Race conditions with point-to-point and collective communications . . . . . 217 5.13 Overlapping Communicators Example . . . . . . . . . . . . . . . . . . . . . 221 6.1 Intercommunicator creation using MPI_COMM_CREATE . . . . . . . . . . . 242 6.2 Intercommunicator construction with MPI_COMM_SPLIT . . . . . . . . . . 246 6.3 Three-group pipeline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263 6.4 Three-group ring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264 7.1 Neighborhood gather communication example. . . . . . . . . . . . . . . . . 316 7.2 Set-up of process structure for two-dimensional parallel Poisson solver. . . . 330 7.3 Communication routine with local data copying and sparse neighborhood all-to-all. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331 7.4 Communication routine with sparse neighborhood all-to-all-w and without local data copying. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332 11.1 Schematic description of the public/private window operations in the MPI_WIN_SEPARATE memory model for two overlapping windows. . . . . . . 436 11.2 Active target communication . . . . . . . . . . . . . . . . . . . . . . . . . . 438 11.3 Active target communication, with weak synchronization . . . . . . . . . . . 439 11.4 Passive target communication . . . . . . . . . . . . . . . . . . . . . . . . . . 440 11.5 Active target communication with several processes . . . . . . . . . . . . . . 444 11.6 Symmetric communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462 11.7 Deadlock situation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463 11.8 No deadlock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463 13.1 Etypes and filetypes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492 13.2 Partitioning a file among parallel processes . . . . . . . . . . . . . . . . . . 492 13.3 Displacements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505 xvii
13.4 Example array file layout. l3.5 Example local array filetype for process1,,···· 559 l7.1 Status conversion routines:··.·······················: 657 xvi进
13.4 Example array file layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558 13.5 Example local array filetype for process 1 . . . . . . . . . . . . . . . . . . . 559 17.1 Status conversion routines . . . . . . . . . . . . . . . . . . . . . . . . . . . . 657 xviii
1 2 3 4 List of Tables 7 10 2.1 Deprecated and Removed constructs.······· 8 12 Pdefi MPldatatypeso toortran datatypes d MPI datatypes corresponding toC datatypes..··· tatypes correspon ding to both C and Fortran datatypes. 15 datatypes corresponding to C++datatypes......... 4.1 combiner values returned from MPI_TYPE_GET_ENVELOPE........ 117 1 6.1 MPI_COMM_*Function Behavior(in Inter-Communication Mode)..... 259 8.1 Error classes (Part 1). 348 8.2 Error classes (Part 2). 349 11.1 C types MPI_V ll.2 Error classes in one-sided communication routines············· 13.1 Data access routines 27 507 13.2 "external32"sizes of predefined datatypes..... 540 13.3 I/O Error Classes. 556 14.1 MPI tool information interface verbosity levels................. 14.2 Constants to identify associations of variables 14.3 MPI datatypes that can be used by the MPI tool information interface... 57 14.4 Scopes for control variables.. 14.5 Return codes used in functions of the MPI tool information interface.... 07 16.1 Removed MPL-1 functions and their replacements 608 16.2 Reme ved MPI1 datat es and their replacements 604 ”””””””””””” 16.3 Remc ved MPI cous 604 16 Removed prototypes and their replacements l7.1 Specific Fortran procedure names and related calling conventions·····. l7.2 Occurrence of Fortran optimization problems.,.·,,,.,,。,·,·,, 63 4 46 xix
List of Tables 2.1 Deprecated and Removed constructs . . . . . . . . . . . . . . . . . . . . . . 18 3.1 Predefined MPI datatypes corresponding to Fortran datatypes . . . . . . . . 25 3.2 Predefined MPI datatypes corresponding to C datatypes . . . . . . . . . . . 26 3.3 Predefined MPI datatypes corresponding to both C and Fortran datatypes . 27 3.4 Predefined MPI datatypes corresponding to C++ datatypes . . . . . . . . . 27 4.1 combiner values returned from MPI_TYPE_GET_ENVELOPE . . . . . . . . 117 6.1 MPI_COMM_* Function Behavior (in Inter-Communication Mode) . . . . . 259 8.1 Error classes (Part 1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348 8.2 Error classes (Part 2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349 11.1 C types of attribute value argument to MPI_WIN_GET_ATTR and MPI_WIN_SET_ATTR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414 11.2 Error classes in one-sided communication routines . . . . . . . . . . . . . . 452 13.1 Data access routines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507 13.2 “external32” sizes of predefined datatypes . . . . . . . . . . . . . . . . . . . 540 13.3 I/O Error Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 556 14.1 MPI tool information interface verbosity levels . . . . . . . . . . . . . . . . . 568 14.2 Constants to identify associations of variables . . . . . . . . . . . . . . . . . 569 14.3 MPI datatypes that can be used by the MPI tool information interface . . . 571 14.4 Scopes for control variables . . . . . . . . . . . . . . . . . . . . . . . . . . . 575 14.5 Return codes used in functions of the MPI tool information interface . . . . 597 16.1 Removed MPI-1 functions and their replacements . . . . . . . . . . . . . . . 603 16.2 Removed MPI-1 datatypes and their replacements . . . . . . . . . . . . . . . 604 16.3 Removed MPI-1 constants . . . . . . . . . . . . . . . . . . . . . . . . . . . . 604 16.4 Removed MPI-1 callback prototypes and their replacements . . . . . . . . . 604 17.1 Specific Fortran procedure names and related calling conventions . . . . . . 613 17.2 Occurrence of Fortran optimization problems . . . . . . . . . . . . . . . . . 639 xix 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
Acknowledgments This document is the product of a number of distinct efforts in three distinct phases one for each of MPI-1,MPI-2,and MPI-3.This section descr in histor ical order ith rts part of MPI-2,had distinct groupso 10 1 This document represents the work of many people who have served on the MPI Forum 3 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. 15 The technical development was carried out by subgroups,whose work was reviewed 16 by the full committee.During the period of development of the Message-Passing Interface (MPI).many people helped with this effort. 18 Those who served as primary coordinators in MPl-1.0 and MPI-1.1 are: 0 Jack Dongarra,David Walker,Conveners and Meeting Chairs Ewing Lusk,Bob Knighten,Minutes .Marc Snir,William Gropp,Ewing Lusk,Point-to-Point Communication .Al Geist,Mare Snir,Steve Otto,Collective Communication ·Steve Otto,Editor .Rolf Hempel,Process Topologies Ewing Lusk,Language Binding .William Gropp,Environmental Management James Cownie,Profiling Tony Skjellum,Lyndon Clarke,Marc Snir,Richard Littlefield,Mark Sears,Groups, Contexts.and Communicators Steven Huss-Lederman,Initial Implementation Subset The following list includes some of the active participants in the MPl-1.0 and MPI-1.1 process not mentioned above
Acknowledgments This document is the product of a number of distinct efforts in three distinct phases: one for each of MPI-1, MPI-2, and MPI-3. This section describes these in historical order, starting with MPI-1. Some efforts, particularly parts of MPI-2, had distinct groups of individuals associated with them, and these efforts are detailed separately. 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: • Jack Dongarra, David Walker, Conveners and Meeting Chairs • Ewing Lusk, Bob Knighten, Minutes • Marc Snir, William Gropp, Ewing Lusk, Point-to-Point Communication • Al Geist, Marc Snir, Steve Otto, Collective Communication • Steve Otto, Editor • Rolf Hempel, Process Topologies • Ewing Lusk, Language Binding • William Gropp, Environmental Management • James Cownie, Profiling • Tony Skjellum, Lyndon Clarke, Marc Snir, Richard Littlefield, Mark Sears, Groups, Contexts, and Communicators • Steven Huss-Lederman, Initial Implementation Subset The following list includes some of the active participants in the MPI-1.0 and MPI-1.1 process not mentioned above. 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 xx