MPI: A Message Passing Interface Standard Mpi31 Manual
User Manual:
Open the PDF directly: View PDF
Page Count: 868 [warning: Documents this large are best viewed by clicking the View PDF Link!]
- Abstract
- History
- Contents
- Acknowledgments
- 1 Introduction to MPI
- 1.1 Overview and Goals
- 1.2 Background of MPI-1.0
- 1.3 Background of MPI-1.1, MPI-1.2, and MPI-2.0
- 1.4 Background of MPI-1.3 and MPI-2.1
- 1.5 Background of MPI-2.2
- 1.6 Background of MPI-3.0
- 1.7 Background of MPI-3.1
- 1.8 Who Should Use This Standard?
- 1.9 What Platforms Are Targets For Implementation?
- 1.10 What Is Included In The Standard?
- 1.11 What Is Not Included In The Standard?
- 1.12 Organization of this Document
- 2 MPI Terms and Conventions
- 3 Point-to-Point Communication
- 3.1 Introduction
- 3.2 Blocking Send and Receive Operations
- 3.3 Data Type Matching and Data Conversion
- 3.4 Communication Modes
- 3.5 Semantics of Point-to-Point Communication
- 3.6 Buffer Allocation and Usage
- 3.7 Nonblocking Communication
- 3.8 Probe and Cancel
- 3.9 Persistent Communication Requests
- 3.10 Send-Receive
- 3.11 Null Processes
- 4 Datatypes
- 4.1 Derived Datatypes
- 4.1.1 Type Constructors with Explicit Addresses
- 4.1.2 Datatype Constructors
- 4.1.3 Subarray Datatype Constructor
- 4.1.4 Distributed Array Datatype Constructor
- 4.1.5 Address and Size Functions
- 4.1.6 Lower-Bound and Upper-Bound Markers
- 4.1.7 Extent and Bounds of Datatypes
- 4.1.8 True Extent of Datatypes
- 4.1.9 Commit and Free
- 4.1.10 Duplicating a Datatype
- 4.1.11 Use of General Datatypes in Communication
- 4.1.12 Correct Use of Addresses
- 4.1.13 Decoding a Datatype
- 4.1.14 Examples
- 4.2 Pack and Unpack
- 4.3 Canonical MPI_PACK and MPI_UNPACK
- 4.1 Derived Datatypes
- 5 Collective Communication
- 5.1 Introduction and Overview
- 5.2 Communicator Argument
- 5.3 Barrier Synchronization
- 5.4 Broadcast
- 5.5 Gather
- 5.6 Scatter
- 5.7 Gather-to-all
- 5.8 All-to-All Scatter/Gather
- 5.9 Global Reduction Operations
- 5.10 Reduce-Scatter
- 5.11 Scan
- 5.12 Nonblocking Collective Operations
- 5.12.1 Nonblocking Barrier Synchronization
- 5.12.2 Nonblocking Broadcast
- 5.12.3 Nonblocking Gather
- 5.12.4 Nonblocking Scatter
- 5.12.5 Nonblocking Gather-to-all
- 5.12.6 Nonblocking All-to-All Scatter/Gather
- 5.12.7 Nonblocking Reduce
- 5.12.8 Nonblocking All-Reduce
- 5.12.9 Nonblocking Reduce-Scatter with Equal Blocks
- 5.12.10 Nonblocking Reduce-Scatter
- 5.12.11 Nonblocking Inclusive Scan
- 5.12.12 Nonblocking Exclusive Scan
- 5.13 Correctness
- 6 Groups, Contexts, Communicators, and Caching
- 7 Process Topologies
- 8 MPI Environmental Management
- 9 The Info Object
- 10 Process Creation and Management
- 11 One-Sided Communications
- 12 External Interfaces
- 13 I/O
- 13.1 Introduction
- 13.2 File Manipulation
- 13.3 File Views
- 13.4 Data Access
- 13.5 File Interoperability
- 13.6 Consistency and Semantics
- 13.6.1 File Consistency
- 13.6.2 Random Access vs. Sequential Files
- 13.6.3 Progress
- 13.6.4 Collective File Operations
- 13.6.5 Nonblocking Collective File Operations
- 13.6.6 Type Matching
- 13.6.7 Miscellaneous Clarifications
- 13.6.8 MPI_Offset Type
- 13.6.9 Logical vs. Physical File Layout
- 13.6.10 File Size
- 13.6.11 Examples
- 13.7 I/O Error Handling
- 13.8 I/O Error Classes
- 13.9 Examples
- 14 Tool Support
- 14.1 Introduction
- 14.2 Profiling Interface
- 14.3 The MPI Tool Information Interface
- 14.3.1 Verbosity Levels
- 14.3.2 Binding MPI Tool Information Interface Variables to MPI Objects
- 14.3.3 Convention for Returning Strings
- 14.3.4 Initialization and Finalization
- 14.3.5 Datatype System
- 14.3.6 Control Variables
- 14.3.7 Performance Variables
- 14.3.8 Variable Categorization
- 14.3.9 Return Codes for the MPI Tool Information Interface
- 14.3.10 Profiling Interface
- 15 Deprecated Functions
- 16 Removed Interfaces
- 17 Language Bindings
- 17.1 Fortran Support
- 17.1.1 Overview
- 17.1.2 Fortran Support Through the mpi_f08 Module
- 17.1.3 Fortran Support Through the mpi Module
- 17.1.4 Fortran Support Through the mpif.h Include File
- 17.1.5 Interface Specifications, Procedure Names, and the Profiling Interface
- 17.1.6 MPI for Different Fortran Standard Versions
- 17.1.7 Requirements on Fortran Compilers
- 17.1.8 Additional Support for Fortran Register-Memory-Synchronization
- 17.1.9 Additional Support for Fortran Numeric Intrinsic Types
- 17.1.10 Problems With Fortran Bindings for MPI
- 17.1.11 Problems Due to Strong Typing
- 17.1.12 Problems Due to Data Copying and Sequence Association with Subscript Triplets
- 17.1.13 Problems Due to Data Copying and Sequence Association with Vector Subscripts
- 17.1.14 Special Constants
- 17.1.15 Fortran Derived Types
- 17.1.16 Optimization Problems, an Overview
- 17.1.17 Problems with Code Movement and Register Optimization
- Nonblocking Operations
- Persistent Operations
- One-sided Communication
- MPI_BOTTOM and Combining Independent Variables in Datatypes
- Solutions
- The Fortran ASYNCHRONOUS Attribute
- Calling MPI_F_SYNC_REG
- A User Defined Routine Instead of MPI_F_SYNC_REG
- Module Variables and COMMON Blocks
- The (Poorly Performing) Fortran VOLATILE Attribute
- The Fortran TARGET Attribute
- 17.1.18 Temporary Data Movement and Temporary Memory Modification
- 17.1.19 Permanent Data Movement
- 17.1.20 Comparison with C
- 17.2 Language Interoperability
- 17.1 Fortran Support
- A Language Bindings Summary
- A.1 Defined Values and Handles
- A.2 C Bindings
- A.2.1 Point-to-Point Communication C Bindings
- A.2.2 Datatypes C Bindings
- A.2.3 Collective Communication C Bindings
- A.2.4 Groups, Contexts, Communicators, and Caching C Bindings
- A.2.5 Process Topologies C Bindings
- A.2.6 MPI Environmental Management C Bindings
- A.2.7 The Info Object C Bindings
- A.2.8 Process Creation and Management C Bindings
- A.2.9 One-Sided Communications C Bindings
- A.2.10 External Interfaces C Bindings
- A.2.11 I/O C Bindings
- A.2.12 Language Bindings C Bindings
- A.2.13 Tools / Profiling Interface C Bindings
- A.2.14 Tools / MPI Tool Information Interface C Bindings
- A.2.15 Deprecated C Bindings
- A.3 Fortran 2008 Bindings with the mpi_f08 Module
- A.3.1 Point-to-Point Communication Fortran 2008 Bindings
- A.3.2 Datatypes Fortran 2008 Bindings
- A.3.3 Collective Communication Fortran 2008 Bindings
- A.3.4 Groups, Contexts, Communicators, and Caching Fortran 2008 Bindings
- A.3.5 Process Topologies Fortran 2008 Bindings
- A.3.6 MPI Environmental Management Fortran 2008 Bindings
- A.3.7 The Info Object Fortran 2008 Bindings
- A.3.8 Process Creation and Management Fortran 2008 Bindings
- A.3.9 One-Sided Communications Fortran 2008 Bindings
- A.3.10 External Interfaces Fortran 2008 Bindings
- A.3.11 I/O Fortran 2008 Bindings
- A.3.12 Language Bindings Fortran 2008 Bindings
- A.3.13 Tools / Profiling Interface Fortran 2008 Bindings
- A.4 Fortran Bindings with mpif.h or the mpi Module
- A.4.1 Point-to-Point Communication Fortran Bindings
- A.4.2 Datatypes Fortran Bindings
- A.4.3 Collective Communication Fortran Bindings
- A.4.4 Groups, Contexts, Communicators, and Caching Fortran Bindings
- A.4.5 Process Topologies Fortran Bindings
- A.4.6 MPI Environmental Management Fortran Bindings
- A.4.7 The Info Object Fortran Bindings
- A.4.8 Process Creation and Management Fortran Bindings
- A.4.9 One-Sided Communications Fortran Bindings
- A.4.10 External Interfaces Fortran Bindings
- A.4.11 I/O Fortran Bindings
- A.4.12 Language Bindings Fortran Bindings
- A.4.13 Tools / Profiling Interface Fortran Bindings
- A.4.14 Deprecated Fortran Bindings
- B Change-Log
- Bibliography
- General Index
- Examples Index
- MPI Constant and Predefined Handle Index
- MPI Declarations Index
- MPI Callback Function Prototype Index
- MPI Function Index