11.3.3 Examples for Communication Calls 421 423 424 Get accumulate Functior 426 Fetch and on Functio Compare Com and S 1135R ication Operations 43d 11 4 Mer 435 12 11.5.1 Fence 1150 eral Active Target Synch atio 4 E 1154F11s1 and Syn A 1155 5 11.6 1.6 'dlers 452 11.7 11.6.2 Erro 5家 ses 66 11.7.3 Progress 11.7.4 Registers and Compiler Optimizations 1l.8 Examples······· 价66 12 External Interfaces 47 12.1 Introduction 175 12.2 Generalized Requests 475 1221xa 12.3 Asociating Information with Status 480 12.4 MPI and Thr eads 8 12 4 1 Genera 1242 Clarification 485 12 4 3 Initialization 487 13/0 49] 13.1 Introduction 491 13.1.1 Definitions 1 13.2 File Manipulation 49 132 1 Opening a file 493 1322 Closing a File 495 13.2.3 Deleting a File 496 13.2.4 Resizing a File 497 13.2.5 Preallocating Space for a File 498 13.2.6 Querying the Size of a File 498 13.2.7 Querying File Parameters 499 13.2.8 File Info 500 Reserved File Hints 503
11.3.3 Examples for Communication Calls . . . . . . . . . . . . . . . . . . . 421 11.3.4 Accumulate Functions . . . . . . . . . . . . . . . . . . . . . . . . . . 423 Accumulate Function . . . . . . . . . . . . . . . . . . . . . . . . . . 424 Get Accumulate Function . . . . . . . . . . . . . . . . . . . . . . . . 426 Fetch and Op Function . . . . . . . . . . . . . . . . . . . . . . . . . 427 Compare and Swap Function . . . . . . . . . . . . . . . . . . . . . . 429 11.3.5 Request-based RMA Communication Operations . . . . . . . . . . . 430 11.4 Memory Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435 11.5 Synchronization Calls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436 11.5.1 Fence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440 11.5.2 General Active Target Synchronization . . . . . . . . . . . . . . . . . 441 11.5.3 Lock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445 11.5.4 Flush and Sync . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 448 11.5.5 Assertions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 450 11.5.6 Miscellaneous Clarifications . . . . . . . . . . . . . . . . . . . . . . . 452 11.6 Error Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452 11.6.1 Error Handlers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452 11.6.2 Error Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452 11.7 Semantics and Correctness . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453 11.7.1 Atomicity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461 11.7.2 Ordering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461 11.7.3 Progress . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462 11.7.4 Registers and Compiler Optimizations . . . . . . . . . . . . . . . . . 464 11.8 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464 12 External Interfaces 475 12.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475 12.2 Generalized Requests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475 12.2.1 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 480 12.3 Associating Information with Status . . . . . . . . . . . . . . . . . . . . . . 482 12.4 MPI and Threads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484 12.4.1 General . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484 12.4.2 Clarifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485 12.4.3 Initialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487 13 I/O 491 13.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491 13.1.1 Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491 13.2 File Manipulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493 13.2.1 Opening a File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493 13.2.2 Closing a File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495 13.2.3 Deleting a File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496 13.2.4 Resizing a File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 497 13.2.5 Preallocating Space for a File . . . . . . . . . . . . . . . . . . . . . . 498 13.2.6 Querying the Size of a File . . . . . . . . . . . . . . . . . . . . . . . 498 13.2.7 Querying File Parameters . . . . . . . . . . . . . . . . . . . . . . . . 499 13.2.8 File Info . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 500 Reserved File Hints . . . . . . . . . . . . . . . . . . . . . . . . . . . 502 xi
13.3 File Views. 503 13.4 Data Access 506 13.4.1 Data Access Routines 50 Positioning 507 Svnchronism 508 Coordination Data Access conventions 508 13.4.2 Data Access with Explicit Offsets 509 13.4.3 Data Access with Individual File Pointers 512 13.4.4 Data access with shared file pointers 522 Noncollective Operations 522 Collective Operations 525 520 13.4.5 Split Collective Data Access Routines 527 13.5 File Interoperability 534 13.5.1 Datatypes for File Interope rabilit 36 13 5 2 Evternal Data Re ntation ,“external32 53s 13.5.3 User-Defined Data Representations 20 Extent Callback Dot 541 A 136 1 File Consist 44 13.6.2 Random Acc ys Se uential Files 547 1363pr File O atio 4 ctive File Operation 13.6.6T Clarifications ype vs.Physical File Layout 50 5 13.71/0E ndling 55 I/O Error Classes uble Buffering with Split Collective I/O 13.9.2 Subarray Filetype Constructor 61 14.2 Profiling Interface 561 1A01D ents 561 14.2.2DSe 562 1423 Logic of the Desi 562 14 2 4 Misco rol of Profiling 563 1425 Profiler Impler 564 xii
13.3 File Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503 13.4 Data Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506 13.4.1 Data Access Routines . . . . . . . . . . . . . . . . . . . . . . . . . . 506 Positioning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507 Synchronism . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 508 Coordination . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 508 Data Access Conventions . . . . . . . . . . . . . . . . . . . . . . . . 508 13.4.2 Data Access with Explicit Offsets . . . . . . . . . . . . . . . . . . . . 509 13.4.3 Data Access with Individual File Pointers . . . . . . . . . . . . . . . 514 13.4.4 Data Access with Shared File Pointers . . . . . . . . . . . . . . . . . 522 Noncollective Operations . . . . . . . . . . . . . . . . . . . . . . . . 522 Collective Operations . . . . . . . . . . . . . . . . . . . . . . . . . . 525 Seek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526 13.4.5 Split Collective Data Access Routines . . . . . . . . . . . . . . . . . 527 13.5 File Interoperability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534 13.5.1 Datatypes for File Interoperability . . . . . . . . . . . . . . . . . . . 536 13.5.2 External Data Representation: “external32” . . . . . . . . . . . . . . 538 13.5.3 User-Defined Data Representations . . . . . . . . . . . . . . . . . . . 539 Extent Callback . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 541 Datarep Conversion Functions . . . . . . . . . . . . . . . . . . . . . 541 13.5.4 Matching Data Representations . . . . . . . . . . . . . . . . . . . . . 544 13.6 Consistency and Semantics . . . . . . . . . . . . . . . . . . . . . . . . . . . 544 13.6.1 File Consistency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544 13.6.2 Random Access vs. Sequential Files . . . . . . . . . . . . . . . . . . 547 13.6.3 Progress . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 548 13.6.4 Collective File Operations . . . . . . . . . . . . . . . . . . . . . . . . 548 13.6.5 Nonblocking Collective File Operations . . . . . . . . . . . . . . . . 548 13.6.6 Type Matching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549 13.6.7 Miscellaneous Clarifications . . . . . . . . . . . . . . . . . . . . . . . 549 13.6.8 MPI_Offset Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549 13.6.9 Logical vs. Physical File Layout . . . . . . . . . . . . . . . . . . . . . 550 13.6.10 File Size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550 13.6.11 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550 Asynchronous I/O . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553 13.7 I/O Error Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555 13.8 I/O Error Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555 13.9 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555 13.9.1 Double Buffering with Split Collective I/O . . . . . . . . . . . . . . 555 13.9.2 Subarray Filetype Constructor . . . . . . . . . . . . . . . . . . . . . 558 14 Tool Support 561 14.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 561 14.2 Profiling Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 561 14.2.1 Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 561 14.2.2 Discussion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 562 14.2.3 Logic of the Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . 562 14.2.4 Miscellaneous Control of Profiling . . . . . . . . . . . . . . . . . . . 563 14.2.5 Profiler Implementation Example . . . . . . . . . . . . . . . . . . . . 564 xii
14.2.6 MPI Library Implementation Example 56 Systems Without Weak Symbols 5 14.2.7 Complications 565 ing Linker Oddities 566 ort Methods 66 Is of Inte 14.3 The MPI Tool Info nlhtergtio 14 3 1 Vorhosity Lo 14.3.Binding MPI Tool Information Interface Variables to MPI Objects 14.3.3Com for Ro 14.3.4 Initializatio n and Fin 14.3.5D ntrol Variable Qu 573 ontrol V mple: the Value of a Control Variable 14.3.7 Performan ariable Query Functions e Experi s1011s Handle e Allo ation and D ting and opping of Performance Variables Performance V Access Functions Example: Tool to Detect Receives with Long Unexpected Message 90 14.3.8 Variable Categorization 14.3.9 Return Codes for the MPI Tool Information Interface 3 14.3.10 Profiling Interface cated Function 59g nce 15.2D 16 Removed Interfaces 603 16.1 Removed MPI-1 Bindings 60g 16 11 Overview 603 161.2 Removed MPl-1 Functions 603 1613 Removed MPL-1 Datatvnes 603 16 1 4 Removed MPl-1 Constants 603 16.1.5 Removed MPI-1 Callback Prototypes 04 16.2 C++Bindings 604 xiii
14.2.6 MPI Library Implementation Example . . . . . . . . . . . . . . . . . 564 Systems with Weak Symbols . . . . . . . . . . . . . . . . . . . . . . 564 Systems Without Weak Symbols . . . . . . . . . . . . . . . . . . . . 565 14.2.7 Complications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565 Multiple Counting . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565 Linker Oddities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 566 Fortran Support Methods . . . . . . . . . . . . . . . . . . . . . . . . 566 14.2.8 Multiple Levels of Interception . . . . . . . . . . . . . . . . . . . . . 566 14.3 The MPI Tool Information Interface . . . . . . . . . . . . . . . . . . . . . . 567 14.3.1 Verbosity Levels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568 14.3.2 Binding MPI Tool Information Interface Variables to MPI Objects . 568 14.3.3 Convention for Returning Strings . . . . . . . . . . . . . . . . . . . . 569 14.3.4 Initialization and Finalization . . . . . . . . . . . . . . . . . . . . . . 570 14.3.5 Datatype System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 571 14.3.6 Control Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573 Control Variable Query Functions . . . . . . . . . . . . . . . . . . . 573 Example: Printing All Control Variables . . . . . . . . . . . . . . . . 576 Handle Allocation and Deallocation . . . . . . . . . . . . . . . . . . 577 Control Variable Access Functions . . . . . . . . . . . . . . . . . . . 578 Example: Reading the Value of a Control Variable . . . . . . . . . . 579 14.3.7 Performance Variables . . . . . . . . . . . . . . . . . . . . . . . . . . 580 Performance Variable Classes . . . . . . . . . . . . . . . . . . . . . . 580 Performance Variable Query Functions . . . . . . . . . . . . . . . . . 582 Performance Experiment Sessions . . . . . . . . . . . . . . . . . . . . 585 Handle Allocation and Deallocation . . . . . . . . . . . . . . . . . . 585 Starting and Stopping of Performance Variables . . . . . . . . . . . 587 Performance Variable Access Functions . . . . . . . . . . . . . . . . 588 Example: Tool to Detect Receives with Long Unexpected Message Queues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 590 14.3.8 Variable Categorization . . . . . . . . . . . . . . . . . . . . . . . . . 592 14.3.9 Return Codes for the MPI Tool Information Interface . . . . . . . . 596 14.3.10 Profiling Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . 596 15 Deprecated Functions 599 15.1 Deprecated since MPI-2.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 599 15.2 Deprecated since MPI-2.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 602 16 Removed Interfaces 603 16.1 Removed MPI-1 Bindings . . . . . . . . . . . . . . . . . . . . . . . . . . . . 603 16.1.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 603 16.1.2 Removed MPI-1 Functions . . . . . . . . . . . . . . . . . . . . . . . . 603 16.1.3 Removed MPI-1 Datatypes . . . . . . . . . . . . . . . . . . . . . . . 603 16.1.4 Removed MPI-1 Constants . . . . . . . . . . . . . . . . . . . . . . . . 603 16.1.5 Removed MPI-1 Callback Prototypes . . . . . . . . . . . . . . . . . . 604 16.2 C++ Bindings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 604 xiii
17 Language Bindings 605 17.1 Fortran Support 605 1711 Overview G05 17.1.2 Fortran Support Through the mpi_fo8 Module 606 17 13 Fortran Su pport Through the mpi Module 609 17.1.4 Fortran Support Through the mpif.h Include File 611 17 1 5 Interface Specifications procedure Names and the profiling Interface 612 17.1.6 MPl for Different.Fortran Standard versions 617 691 17.1.8 Additional Support for Fortran Register-Memory-Synchronization 622 171.9 Additional Su rt for Fortran Numeric Intrinsic Types 69 Parameterized Datatypes with Specified Precision and Exponent Range624 Support for Size c MPI Datatypes 62 munication With Size R20 ngs for MPI 631 Due to Strong Typing 633 17.1.12 Problems Due to Data Cop and Se nce association with sub cript Triplets 633 17.1.13 Problems Due to Data Copying nd So e Association with Vector 3 17.1.14Special Constants 17 1 15Fortran Derived Ty 171160 63 with Code Mo ent and Register Optimization tion 6A0 rsistent ation 6 MPI_BOTTOM and Combining Independent Variables in Data ASYNCHRONOUS Attril MPI_F_SYNC_REG A Use _F_SYNC_REC 45 an The OLATILE Attribute The F TAI GET Attribut 646 emporar ata Temporary Memory Modification D omparison with C 17.2 172 perability introdu 17.2. sumptions 17.2. Initialization 17.2. Transfer of Handles 。。。。。。。。,。。。 17.2. 17.2.6 MPl Opaque Objects Dat types Callback Functions Error Handlers xiv
17 Language Bindings 605 17.1 Fortran Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 605 17.1.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 605 17.1.2 Fortran Support Through the mpi_f08 Module . . . . . . . . . . . . 606 17.1.3 Fortran Support Through the mpi Module . . . . . . . . . . . . . . . 609 17.1.4 Fortran Support Through the mpif.h Include File . . . . . . . . . . 611 17.1.5 Interface Specifications, Procedure Names, and the Profiling Interface 612 17.1.6 MPI for Different Fortran Standard Versions . . . . . . . . . . . . . . 617 17.1.7 Requirements on Fortran Compilers . . . . . . . . . . . . . . . . . . 621 17.1.8 Additional Support for Fortran Register-Memory-Synchronization . 622 17.1.9 Additional Support for Fortran Numeric Intrinsic Types . . . . . . . 623 Parameterized Datatypes with Specified Precision and Exponent Range624 Support for Size-specific MPI Datatypes . . . . . . . . . . . . . . . . 627 Communication With Size-specific Types . . . . . . . . . . . . . . . 630 17.1.10 Problems With Fortran Bindings for MPI . . . . . . . . . . . . . . . 631 17.1.11 Problems Due to Strong Typing . . . . . . . . . . . . . . . . . . . . 633 17.1.12 Problems Due to Data Copying and Sequence Association with Subscript Triplets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 633 17.1.13 Problems Due to Data Copying and Sequence Association with Vector Subscripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 636 17.1.14 Special Constants . . . . . . . . . . . . . . . . . . . . . . . . . . . . 637 17.1.15 Fortran Derived Types . . . . . . . . . . . . . . . . . . . . . . . . . . 637 17.1.16 Optimization Problems, an Overview . . . . . . . . . . . . . . . . . . 639 17.1.17 Problems with Code Movement and Register Optimization . . . . . 640 Nonblocking Operations . . . . . . . . . . . . . . . . . . . . . . . . . 640 Persistent Operations . . . . . . . . . . . . . . . . . . . . . . . . . . 641 One-sided Communication . . . . . . . . . . . . . . . . . . . . . . . . 641 MPI_BOTTOM and Combining Independent Variables in Datatypes 641 Solutions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 641 The Fortran ASYNCHRONOUS Attribute . . . . . . . . . . . . . . 643 Calling MPI_F_SYNC_REG . . . . . . . . . . . . . . . . . . . . . . 644 A User Defined Routine Instead of MPI_F_SYNC_REG . . . . . . . 645 Module Variables and COMMON Blocks . . . . . . . . . . . . . . . 646 The (Poorly Performing) Fortran VOLATILE Attribute . . . . . . . 646 The Fortran TARGET Attribute . . . . . . . . . . . . . . . . . . . . 646 17.1.18 Temporary Data Movement and Temporary Memory Modification . 646 17.1.19 Permanent Data Movement . . . . . . . . . . . . . . . . . . . . . . . 648 17.1.20 Comparison with C . . . . . . . . . . . . . . . . . . . . . . . . . . . 648 17.2 Language Interoperability . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 17.2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 17.2.2 Assumptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 17.2.3 Initialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 17.2.4 Transfer of Handles . . . . . . . . . . . . . . . . . . . . . . . . . . . 654 17.2.5 Status . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 656 17.2.6 MPI Opaque Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . 658 Datatypes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 659 Callback Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 660 Error Handlers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 660 xiv
Reduce Operations 661 172 7 Attributes 661 17.2.8 Extra-State 66 1720 Con nts 66H 17.2.10Interlan 666 A Language Bindings Summary 669 A.1 Defined Values and Handles 669 A.1.1 Defined Constants 669 A.1.2 Types 682 A.1.3 Prototype Definitions 68 C Bindings 684 Fortran 2008 Bindings with the mpi fo8 module 684 Fortran Bindings with mpif.h or the mpi Module 68 A.1.4 Deprecated Prototype Definitions 68g A.1.5 Info Keys 600 A.1.6 Info Values 690 A.2 C Bindings 692 A.2.1 Point-to-Point Communication C Bindings 699 A.2.2 Datatypes c Bindings 694 A.2.3 Collective Communication C Bindings 69 A.2.4 Groups,Contexts,Communicators,and Caching C Bindings 69 s Topologies c binding 701 A.2.6 MPI Environm ment C Bindings 703 A.2.7 The Info Obiect C Binding 704 A 2&D tion and mar ent C Binding 704 A29 One-Sided Communications C Bindings 70 A.2.10 External Interfaces C Bindings 07 A.2.11 I/O C Bindi 70 ge Bins 711 A 2 14 Tools /MDI T nation Interfa eC Binding 711 A2.15D cated C Bindin 719 A.3 Fortran 20 vith i_f08 Module 714 A Point-to-Point Fortran 2008 Bindin 712 2009 719 Collecti tion Fo 2008 Binding ching ortran Rin 0P log PI E tal M ortran 200 d Ma 2008 Bindings 746 -Sided C dings 74 nal In dings 08E g 2008 Bindi /Pro ng I Bindings A.4 Fortran lings with mpif.h or the mpi Mod 763
Reduce Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . 661 17.2.7 Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 661 17.2.8 Extra-State . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 665 17.2.9 Constants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 665 17.2.10 Interlanguage Communication . . . . . . . . . . . . . . . . . . . . . . 666 A Language Bindings Summary 669 A.1 Defined Values and Handles . . . . . . . . . . . . . . . . . . . . . . . . . . . 669 A.1.1 Defined Constants . . . . . . . . . . . . . . . . . . . . . . . . . . . . 669 A.1.2 Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 682 A.1.3 Prototype Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . 684 C Bindings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 684 Fortran 2008 Bindings with the mpi_f08 Module . . . . . . . . . . . 684 Fortran Bindings with mpif.h or the mpi Module . . . . . . . . . . . 687 A.1.4 Deprecated Prototype Definitions . . . . . . . . . . . . . . . . . . . . 689 A.1.5 Info Keys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 690 A.1.6 Info Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 690 A.2 C Bindings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 692 A.2.1 Point-to-Point Communication C Bindings . . . . . . . . . . . . . . 692 A.2.2 Datatypes C Bindings . . . . . . . . . . . . . . . . . . . . . . . . . . 694 A.2.3 Collective Communication C Bindings . . . . . . . . . . . . . . . . . 696 A.2.4 Groups, Contexts, Communicators, and Caching C Bindings . . . . 698 A.2.5 Process Topologies C Bindings . . . . . . . . . . . . . . . . . . . . . 701 A.2.6 MPI Environmental Management C Bindings . . . . . . . . . . . . . 703 A.2.7 The Info Object C Bindings . . . . . . . . . . . . . . . . . . . . . . . 704 A.2.8 Process Creation and Management C Bindings . . . . . . . . . . . . 704 A.2.9 One-Sided Communications C Bindings . . . . . . . . . . . . . . . . 705 A.2.10 External Interfaces C Bindings . . . . . . . . . . . . . . . . . . . . . 707 A.2.11 I/O C Bindings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 708 A.2.12 Language Bindings C Bindings . . . . . . . . . . . . . . . . . . . . . 710 A.2.13 Tools / Profiling Interface C Bindings . . . . . . . . . . . . . . . . . 711 A.2.14 Tools / MPI Tool Information Interface C Bindings . . . . . . . . . 711 A.2.15 Deprecated C Bindings . . . . . . . . . . . . . . . . . . . . . . . . . 713 A.3 Fortran 2008 Bindings with the mpi_f08 Module . . . . . . . . . . . . . . . 714 A.3.1 Point-to-Point Communication Fortran 2008 Bindings . . . . . . . . 714 A.3.2 Datatypes Fortran 2008 Bindings . . . . . . . . . . . . . . . . . . . . 719 A.3.3 Collective Communication Fortran 2008 Bindings . . . . . . . . . . . 724 A.3.4 Groups, Contexts, Communicators, and Caching Fortran 2008 Bindings731 A.3.5 Process Topologies Fortran 2008 Bindings . . . . . . . . . . . . . . . 738 A.3.6 MPI Environmental Management Fortran 2008 Bindings . . . . . . . 743 A.3.7 The Info Object Fortran 2008 Bindings . . . . . . . . . . . . . . . . 745 A.3.8 Process Creation and Management Fortran 2008 Bindings . . . . . . 746 A.3.9 One-Sided Communications Fortran 2008 Bindings . . . . . . . . . . 748 A.3.10 External Interfaces Fortran 2008 Bindings . . . . . . . . . . . . . . . 753 A.3.11 I/O Fortran 2008 Bindings . . . . . . . . . . . . . . . . . . . . . . . 754 A.3.12 Language Bindings Fortran 2008 Bindings . . . . . . . . . . . . . . . 762 A.3.13 Tools / Profiling Interface Fortran 2008 Bindings . . . . . . . . . . . 762 A.4 Fortran Bindings with mpif.h or the mpi Module . . . . . . . . . . . . . . . 763 xv