MPI – Message Passing Interface
MPI is a standardized set of functions that programs share data even when they are running in different places. It is used in supercomputers built from many processors and in more ad hoc networks of workstations and PCs. It can even be used on a single PC running multiple processes.
MPI stands for Message Passing Interface, and it emphasizes sharing data by sending messages. In its simplest form, one process sends a message and another receives it. But sending messages also includes one process sending to many (broadcast, scatter), many sending to one (gather), and even many sending to many (alltoall). MPI also provides an interface for reading/writing shared files, and it has some support for shared memory. Shared memory is a more primitive abstraction than message passing, and shares some of the features of both files and message passing.
The MPI interfaces (function names and parameter types) are defined for Fortran and C. Many of these functions are organized around MPI object handles, and it helps in understanding MPI to see it as a set of object types and methods.
To do
Goals of mapping to C++. Make the MPI available with as little overhead as possible while still presenting an object-oriented face. How this might be different from the Boost library.
Source code
Example code
Testing code and strategies. Profiling.
Experiences using different MPI implementations. Linking, etc.
Links to other resources. Alternatives (PVM, MapReduce, Hadoop, OpenMP, Pthreads, mutexes and semaphores, etc)