Subject: more on the intro

From: Jack Dongarra <[email-masked]>
Date: Tue, 24 Nov 92 15:04:05 -0500

Here is my two cents on the intro. I have taken input from Rusty
and Steven. Comments please.
Jack

\section{Introduction}
\label{sec:intro}

\subsection{Overview and Goals}

Message passing is a paradigm used
widely on certain classes of parallel machines; especially those with
distributed memory.
Although there are many variations, the basic
concept of processes communicating through messages is well understood.
Over the last ten years, substantial progress has been made in casting
significant applications in this paradigm.  Each vendor
has implemented their own variant.
More recently, several systems \cite{need references} have demonstrated 
that a message passing system can be efficiently and
be portably implemented.
It is thus an appropriate time to try to define both the syntax
and semantics of a core of library routines that will be useful to a wide
range of users and efficiently implementable on a wide range of computers.

In designing MPI we have sought to make use of the most attractive features
of a number of existing message passing systems, rather than selecting one
of them and adopting it as the standard. Thus, MPI has been strongly
influenced by work at the IBM T. J. Watson Research Center by
Bala, Kipnis, Snir and colleagues \cite{}, Intel's NX/2 \cite{},
Express \cite{}, nCUBE's Vertex \cite{}, and PARMACS \cite{}.
Other important contributions have come from Zipcode \cite{},
Chimp \cite{}, PVM \cite{}, and PICL \cite{}.

One of the objectives of this paper is to promote a discussion within the
concurrent computing research community of the issues that must be addressed
in establishing a practical, portable, and flexible standard for message
passing. This cooperative process began with a workshop on standards
for message passing held in April 1992 \cite{}.

The main advantages of establishing a message passing standard are portability
and ease-of-use. In a distributed memory communication environment in which
the higher level routines and/or abstractions are build upon lower level
message passing routines the benefits of standardization are particularly
apparent. Furthermore, the definition of a message passing standard, such
as that proposed here, provides vendors with a clearly defined base set of
routines that they can implement efficiently, or in some cases provide
hardware support for, thereby enhancing scalability.

The goal of the Message Passing Interface simply stated is to 
develop a \it{de facto} standard for writing message-passing programs.
As such the interface should
establishing a practical, portable, efficient, and flexible standard for message
passing.

\subsection{Who Should Use This Standard?}

This standard is intended for use by all those who want to write portable
message-passing programs in Fortran 77 and/or C.  
This includes individual application programmers,
developers software designed to run on parallel machines, and creators of
higher-level programming languages, environments, and tools.  In order to be
attractive to this wide audience, the standard must provide a simple, easy-to-use
interface for the basic user while not semantically precluding the
high-performance message-passing operations available on advanced machines.

\subsection{What Platforms Are Targets For Implementation?}

The attractiveness of the message-passing paradigm at least partially
stems from its wide portability.  Programs expressed this way can run
efficiently on distributed-memory
multiprocessors, networks of workstations, and combinations of all of these.
In addition, shared-memory implementations are possible.
The paradigm will not be made obsolete by architectures combining the shared-
and distributed-memory views, or by increases in network speeds.  It thus
should be both possible and useful to implement this standard on a great
variety of machines, including those "machines" consisting of collections of
other machines, parallel or not, connected by a communication network.

\subsection{What Is Included In The Standard?}

The standard includes (this is temporarily as inclusive as possible):

\begin{itemize}
    \item  Point-to-point communication in a variety of modes, including modes
         that allow fast communication and heterogeneous communication
    \item  Collective operations
    \item  Process groups
    \item  Communication contexts
    \item  A simple way to create processes for the SPMD model
    \item  Bindings for both Fortran and C
    \item  A model implementation
\end{itemize}

\subsection{What Is Not Included In The Standard?}

The standard does not specify:

\begin{itemize}
    \item  Explicit shared-memory operations
    \item  Operations that require more operating system support than is currently
          standard; for example, interrupt-driven receives, remote execution,
          or active messages
    \item  Program construction tools
    \item  Debugging facilities
    \item  Tracing facilities
\end{itemize}

Features that are not included can always be offered as extensions 
by specific
implementations.

---

From: Steven Ericsson Zenith <[email-masked]>
Date: Tue, 24 Nov 92 15:34:18 -0600

To be inclusive "What Is Included In The Standard?" should include:

	\item a formal specification.