Subject: our chapter

From: Jack Dongarra <[email-masked]>
Date: Sun, 7 Mar 93 12:16:37 -0500

I would like to get our chapter of MPI finalized.
Enclosed is the current draft. Please send me any
updates or corrections you would like to see made.
I will then mail it to everyone on the general mailing
list so we can have the first-reading next meeting.
Regards,
Jack

\documentstyle[11pt]{article}
\textwidth=6.0in
\textheight=9.0in
\hoffset=-0.5in
\voffset=-1.0in
\parskip=.1in

\begin{document}
\begin{center}
{\Large \bf Introduction to MPI}
\end{center}

\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 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{IBM-report1,IBM-report2}, 
Intel's NX/2 \cite{NX-2},
Express \cite{express}, nCUBE's Vertex \cite{Vertex}, P4 \cite{p4book}, and PARMACS \cite{parmacs1,parmacs2}.
Other important contributions have come from Zipcode \cite{zipcode1,zipcode2},
Chimp \cite{chimp1,chimp2}, PVM \cite{PVM2,PVM1}, and PICL \cite{picl}.

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{walker92b}.

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 widely used
standard for writing message-passing programs.
As such the interface should
establishing a practical, portable, efficient, and flexible standard for message
passing.

A complete list of goals follow.

\begin{itemize}

\item
Design an application programming interface (not necessarily for compilers
or a system implementation library).

\item
Allow efficient communication: Avoid memory to memory copying
and allow overlap of computation and communication and offload to communication
coprocessor, where available.

\item
Allow (but no mandate) extensions for use in heterogeneous environment.

\item
Allow convenient C, Fortran 77, Fortran 90, and C++ bindings for interface.

\item
Assume a reliable communication interface:
User need not cope with communication failures.
Such failures are dealt by the underlying communication subsystem.

\item
Focus on a proposal that can be agreed upon in 6 months.

\item
Define an interface that is not too different from current practice,
such as PVM, Express, P4, etc.

\item
Define an interface that can be quickly implemented on many
vendor's platforms, with no significant changes in the underlying
communication and system software.

\item 
The interface should
not contain more functions than are really necessary.

\item 
Semantics of the interface should be language independent.
\end{itemize}

\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, C, Fortran 90, or C++.
This includes individual application programmers,
developers of software designed to run on parallel machines, and creators of
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 may run
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.

NEED to add some words about MIMD environments and threads.

\subsection{What Is Included In The Standard?}

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

\begin{itemize}
    \item  Point-to-point communication 
    \item  Collective operations
    \item  Process groups
    \item  Communication contexts
    \item  A simple way to create processes for the SPMD model
    \item  Bindings for Fortran 77, Fortran 90, C and C++
    \item  A model implementation
    \item  A formal specification.
    \item  Process topology
    \item  A validation suite

\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  Auxiliary functions such as timers
\end{itemize}

There are many features that have been considered and
not included in this standard. This happened for 
a number of reasons, one of which is the time constraint
that was self imposed in finishing the standard.
Features that are not included can always be offered as extensions
by specific
implementations.

% \bibliographystyle{plain}
% \bibliography{refs}
\begin{thebibliography}{10}

\bibitem{IBM-report1}
V.~Bala and S.~Kipnis.
\newblock Process groups: a mechanism for the coordination of and communication
  among processes in the {V}enus collective communication library.
\newblock Technical report, {IBM} {T}. {J}. {W}atson {R}esearch {C}enter,
  October 1992.
\newblock Preprint.

\bibitem{IBM-report2}
V.~Bala, S.~Kipnis, L.~Rudolph, and Marc Snir.
\newblock Designing efficient, scalable, and portable collective communication
  libraries.
\newblock Technical report, {IBM} {T}. {J}. {W}atson {R}esearch {C}enter,
  October 1992.
\newblock Preprint.

\bibitem{PVM2}
A.~Beguelin, J.~J. Dongarra, G.~A. Geist, R.~Manchek, and V.~S. Sunderam.
\newblock A users' guide to {PVM} parallel virtual machine.
\newblock Technical Report {TM}-11826, Oak {R}idge {N}ational {L}aboratory,
  July 1991.

\bibitem{p4book}
R.~Butler and E.~Lusk.
\newblock User's guide to the p4 programming system.
\newblock Technical Report {TM}-{ANL}--92/17, Argonne {N}ational {L}aboratory,
  1992.

\bibitem{chimp1}
Edinburgh Parallel Computing Centre, University of Edinburgh.
\newblock {\em {CHIMP} Concepts}, June 1991.

\bibitem{chimp2}
Edinburgh Parallel Computing Centre, University of Edinburgh.
\newblock {\em {CHIMP} Version 1.0 Interface}, May 1992.

\bibitem{picl}
G.~A. Geist, M.~T. Heath, B.~W. Peyton, and P.~H. Worley.
\newblock A user's guide to {PICL}: a portable instrumented communication
  library.
\newblock Technical Report {TM}-11616, Oak {R}idge {N}ational {L}aboratory,
  October 1990.

\bibitem{parmacs1}
R.~Hempel.
\newblock The {ANL/GMD} macros ({PARMACS}) in fortran for portable parallel
  programming using the message passing programming model -- users' guide and
  reference manual.
\newblock Technical report, {GMD}, Postfach 1316, {D}-5205 {S}ankt {A}ugustin
  1, {G}ermany, November 1991.

\bibitem{parmacs2}
R.~Hempel, H.-C. Hoppe, and A.~Supalov.
\newblock A proposal for a {PARMACS} library interface.
\newblock Technical report, {GMD}, Postfach 1316, {D}-5205 {S}ankt {A}ugustin
  1, {G}ermany, October 1992.

\bibitem{Vertex}
{nCUBE} Corporation.
\newblock {\em {nCUBE} 2 Programmers Guide, r2.0}, December 1990.

\bibitem{express}
Parasoft {C}orporation.
\newblock {\em Express Version 1.0: A Communication Environment for Parallel
  Computers}, 1988.

\bibitem{NX-2}
Paul Pierce.
\newblock The {NX/2} operating system.
\newblock In {\em Proceedings of the Third Conference on Hypercube Concurrent
  Computers and Applications}, pages 384--390. ACM Press, 1988.

\bibitem{zipcode1}
A.~Skjellum and A.~Leung.
\newblock Zipcode: a portable multicomputer communication library atop the
  reactive kernel.
\newblock In D.~W. Walker and Q.~F. Stout, editors, {\em Proceedings of the
  Fifth Distributed Memory Concurrent Computing Conference}, pages 767--776.
  {IEEE} {P}ress, 1990.

\bibitem{zipcode2}
A.~Skjellum, S.~Smith, C.~Still, A.~Leung, and M.~Morari.
\newblock The {Z}ipcode message passing system.
\newblock Technical report, Lawrence {L}ivermore {N}ational {L}aboratory,
  September 1992.

\bibitem{PVM1}
V.~Sunderam.
\newblock {PVM}: a framework for parallel distributed computing.
\newblock {\em Concurrency: Practice and Experience}, 2(4):315--339, 1990.

\bibitem{walker92b}
D.~Walker.
\newblock Standards for message passing in a distributed memory environment.
\newblock Technical Report {TM}-12147, Oak {R}idge {N}ational {L}aboratory,
  August 1992.

\end{thebibliography}
\newpage

\end{document}