This website describes an object oriented approach to the Message
Passing Interface (MPI). Object Oriented MPI (OOMPI) is a class
library specification that encapsulates the functionality of MPI into
a functional class hierarchy to provide a simple, flexible, and
With the specification of a C++ class library, we will necessarily be
moving away from the simple one-to-one mapping of MPI function to
language binding (as with C and Fortran). We therefore also run the
risk of adding, losing, or changing MPI-1 specified functionality with
the library specification.
In order to properly delimit the scope of the MPI C++ class library,
we have the following guidelines:
The MPI C++ class library must provide a semantically correct
interface to MPI.
The names of member functions should be consistent with the underlying
MPI functions that are invoked by each member function.
The MPI C++ class library must provide all functionality defined
by MPI-1. To the greatest extent possible, this functionality should
be provided through member functions of objects, although some
globally scoped functions may be permitted.
It is only natural to think of communicating objects in a
message-passing C++ program. The MPI-1 specification, however, does
not deal with objects. It only specifies how data may be
communicated. Thus, we require that the MPI C++ class library
similarly provide the capability for sending the data that is
contained within objects.
Moreover, since the data contained within an object is essentially a
user-defined structure, we require that mechanisms be provided to
build MPI-1 user-defined data types for object data and for
communicating that data in a manner identical to communicating
primitive data types. Objects that have complex data to be
communicated must be explicitly constructed to do so.
The MPI C++ class library must be a layer on top of the C bindings.
In conjunction with the guidelines for functionality, this implies
that the MPI-1 functionality will essentially be provided with calls
to C functions. That is, there will be no attempts for the C++ class
library itself to provide any MPI-1 functionality apart from that
provided by the C bindings.