Subject: Some points for the introduction

From: [email-masked]
Date: Mon, 23 Nov 92 10:47:24 CST

I got to thinking about the general issues we were discussing and decided
it would be best to write my thoughts down.  This is an abbreviated form of
what the introduction might look like.  It needs more work (which Jack
volunteered to do) before it even becomes a first draft for the four of us
(Jack, can you send me Tony's address?).

- Rusty

		    The MPI Draft Message-Passing Standard

Introduction

     One of the most widely used paradigms for programming parallel machines
is that of message-passing.  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 algorithms in this paradigm.  Vendors have found ways to implement
it efficiently.  More recently, several systems have demonstrated that it can
be implemented portably as well, and that users appreciate being able to write
a message-passing code that runs unchanged on a variety of parallel computing
environments.  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.

Who Should Use This Standard?

     This standard is intended for use by all those who want to write portable
message-passing programs.  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, it 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.

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 shared-memory multiprocessors, distributed-memory
multiprocessors, networks of workstations, and combinations of all of these.
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.

What Is Included In The Standard?

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

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

What Is Not Included In The Standard?

     The standard does not specify:

    o  Explicit shared-memory operations
    o  Operations that require more operating system support than is currently
          standard; for example, interrupt-driven receives, remote execution,
          or active messages
    o  Program construction tools
    o  Debugging facilities
    o  Tracing facilities
     
Features that are not included may be offered as extensions by specific
implementations.