MPI: A Message-Passing Interface Standard
Contents
Contents
Introduction to MPI
Overview and Goals
Who Should Use This Standard?
What Platforms Are Targets For Implementation?
What Is Included In The Standard?
What Is Not Included In The Standard?
Organization of this Document
MPI Terms and Conventions
Document Notation
Procedure Specification
Semantic Terms
Data Types
Opaque objects
Array arguments
State
Named constants
Choice
Addresses
Language Binding
Fortran 77 Binding Issues
C Binding Issues
Processes
Error Handling
Implementation issues
Independence of Basic Runtime Routines
Interaction with signals in POSIX
Examples
Point-to-Point Communication
Introduction
Blocking Send and Receive Operations
Blocking send
Message data
Message envelope
Blocking receive
Return status
Data type matching and data conversion
Type matching rules
Type MPI_CHARACTER
Data conversion
Communication Modes
Semantics of point-to-point communication
Buffer allocation and usage
Model implementation of buffered mode
Nonblocking communication
Communication Objects
Communication initiation
Communication Completion
Semantics of Nonblocking Communications
Multiple Completions
Probe and Cancel
Persistent communication requests
Send-receive
Null processes
Derived datatypes
Datatype constructors
Address and extent functions
Lower-bound and upper-bound markers
Commit and free
Use of general datatypes in communication
Correct use of addresses
Examples
Pack and unpack
Collective Communication
Introduction and Overview
Communicator argument
Barrier synchronization
Broadcast
Example using MPI_BCAST
Gather
Examples using MPI_GATHER, MPI_GATHERV
Scatter
Examples using MPI_SCATTER, MPI_SCATTERV
Gather-to-all
Examples using MPI_ALLGATHER, MPI_ALLGATHERV
All-to-All Scatter/Gather
Global Reduction Operations
Reduce
Predefined reduce operations
MINLOC and MAXLOC
User-Defined Operations
Example of User-defined Reduce
All-Reduce
Reduce-Scatter
Scan
Example using MPI_SCAN
Correctness
Groups, Contexts, and Communicators
Introduction
Features Needed to Support Libraries
MPI's Support for Libraries
Basic Concepts
Groups
Contexts
Intra-Communicators
Predefined Intra-Communicators
Group Management
Group Accessors
Group Constructors
Group Destructors
Communicator Management
Communicator Accessors
Communicator Constructors
Communicator Destructors
Motivating Examples
Current Practice #1
Current Practice #2
(Approximate) Current Practice #3
Example #4
Library Example #1
Library Example #2
Inter-Communication
Inter-communicator Accessors
Inter-communicator Operations
Inter-Communication Examples
Example 1: Three-Group ``Pipeline"
Example 2: Three-Group ``Ring"
Example 3: Building Name Service for Intercommunication
Caching
Functionality
Attributes Example
Formalizing the Loosely Synchronous Model
Basic Statements
Models of Execution
Static communicator allocation
Dynamic communicator allocation
The General case
Process Topologies
Introduction
Virtual Topologies
Embedding in MPI
Overview of the Functions
Topology Constructors
Cartesian Constructor
Cartesian Convenience Function: MPI_DIMS_CREATE
General (Graph) Constructor
Topology inquiry functions
Cartesian Shift Coordinates
Partitioning of Cartesian structures
Low-level topology functions
An Application Example
MPI Environmental Management
Implementation information
Environmental Inquiries
Tag values
Host rank
IO rank
Clock synchronization
Error handling
Error codes and classes
Timers and synchronization
Startup
Profiling Interface
Requirements
Discussion
Logic of the design
Miscellaneous control of profiling
Examples
Profiler implementation
MPI library implementation
Systems with weak symbols
Systems without weak symbols
Complications
Multiple counting
Linker oddities
Multiple levels of interception
Bibliography
Language Binding
Introduction
Defined Constants for C and Fortran
C bindings for Point-to-Point Communication
C Bindings for Collective Communication
C Bindings for Groups, Contexts, and Communicators
C Bindings for Process Topologies
C bindings for Environmental Inquiry
C Bindings for Profiling
Fortran Bindings for Point-to-Point Communication
Fortran Bindings for Collective Communication
Fortran Bindings for Groups, Contexts, etc.
Fortran Bindings for Process Topologies
Fortran Bindings for Environmental Inquiry
Fortran Bindings for Profiling
Index
Return to
MPI 1.1 Standard Index
Return to
MPI-2 Standard Index
Return to
MPI Forum Home Page
MPI-1.1 of June 12, 1995
HTML Generated on August 6, 1997