HP-MPI User's Guide (11th Edition)

Introduction
The message passing model
Chapter 1 3
The message passing model
Programming models are generally categorized by how memory is used.
In the shared memory model each process accesses a shared address
space, while in the message passing model an application runs as a
collection of autonomous processes, each with its own local memory. In
the message passing model processes communicate with other processes
by sending and receiving messages. When data is passed in a message,
the sending and receiving processes must work to transfer the data from
the local memory of one to the local memory of the other.
Message passing is used widely on parallel computers with distributed
memory, and on clusters of servers. The advantages of using message
passing include:
Portability—Message passing is implemented on most parallel
platforms.
Universality—Model makes minimal assumptions about underlying
parallel hardware. Message-passing libraries exist on computers
linked by networks and on shared and distributed memory
multiprocessors.
Simplicity—Model supports explicit control of memory references for
easier debugging.
However, creating message-passing applications may require more effort
than letting a parallelizing compiler produce parallel applications.
In 1994, representatives from the computer industry, government labs,
and academe developed a standard specification for interfaces to a
library of message-passing routines. This standard is known as MPI 1.0
(MPI: A Message-Passing Interface Standard). Since this initial
standard, versions 1.1 (June 1995), 1.2 (July 1997), and 2.0 (July 1997)
have been produced. Versions 1.1 and 1.2 correct errors and minor
omissions of MPI 1.0. MPI-2 (MPI-2: Extensions to the Message-Passing
Interface) adds new functionality to MPI 1.2. You can find both standards
in HTML format at http://www.mpi-forum.org.
MPI-1 compliance means compliance with MPI 1.2. MPI-2 compliance
means compliance with MPI 2.0. Forward compatibility is preserved in
the standard. That is, a valid MPI 1.0 program is a valid MPI 1.2
program and a valid MPI-2 program.