Subject: Process enumeration

From: "Shlomo Kipnis ((914) 945-1281)" <[email-masked]>
Date: Wed, 27 Jan 93 09:50:23 EST

The main goal of the MPI standard is the portability of applications
between different machines.  Linear ordering of process (task) ids in
the range 0..n is the simplest and most portable numbering scheme I
can think of.  As David and Jim state, this numbering scheme is used
by many applications, and most machines provide a virtual domain of
processes in the range 0..n to be used.

Any implementation of MPI, obviously, need to translate this numbering
scheme to the physical process/task/thread ids used in the underlying
system.  However, a portable user's application cannot rely on such a
physical numbering scheme.  The performance of an application may be
very different on different machines, but at least an application that
uses MPI is guaranteed to run on different machines (unlike the state
of the art today).

An interesting feature of the "process groups" idea is that pids in a
process group can always be addressed in the range of 0..n using the
ranks of processes within the group.  By using process groups, one can
avoid the issue of noncontiguous pids range which may be caused by
particular partitions of the machine, processes leaving or joining an
application, running several application codes concurrently under the
same job, etc...  As currently defined, process groups do not address
the issue of an application's topology.  However, topologies can be
defined on top of process groups.  (I hope the topology subcommittee
discusses these issues.)

To summarize, I think that process ids in the range 0..n are the right
approach for ensuring portability of applications.  This scheme also
addresses the virtual organization of processes in a process group.
The virtual-to-physical translation of pids is done in many systems
and is typically very fast.

Shlomo Kipnis
IBM T.J Watson Research Center
Yorktown Heights, NY 10598
(914) 945-1281
[email-masked]