Mon Nov 23 16:03:13 EST 1992
From owner-mpi-ptop@CS.UTK.EDU  Wed Nov 25 13:39:28 1992
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA21716; Wed, 25 Nov 92 13:39:28 -0500
Received:  by CS.UTK.EDU (5.61++/2.8s-UTK)
	id AA09797; Wed, 25 Nov 92 13:14:37 -0500
Received: from relay2.UU.NET by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA09791; Wed, 25 Nov 92 13:14:32 -0500
Received: from uunet.uu.net (via LOCALHOST.UU.NET) by relay2.UU.NET with SMTP 
	(5.61/UUNET-internet-primary) id AA22187; Wed, 25 Nov 92 13:14:33 -0500
Received: from kailand.UUCP by uunet.uu.net with UUCP/RMAIL
	(queueing-rmail) id 131337.3987; Wed, 25 Nov 1992 13:13:37 EST
Received: from brisk.kai.com (brisk) by kailand.kai.com via SMTP
  (5.65d-92031301) id AA12688; Wed, 25 Nov 1992 12:06:04 -0600
Received: by brisk.kai.com
  (920330.SGI-92101201) id AA08958; Wed, 25 Nov 92 12:06:02 -0600
Date: Wed, 25 Nov 92 12:06:02 -0600
Message-Id: <9211251806.AA08958@brisk.kai.com>
To: mpi-pt2pt@cs.utk.edu, mpi-collcomm@cs.utk.edu, mpi-formal@cs.utk.edu,
        mpi-ptop@cs.utk.edu
Reply-To: William.Gropp's.message.of.Wed@kai.com,
        25 Nov 92 09:28:43 CST <9211251528.AA12985@godzilla.mcs.anl.gov>
Subject: Nonblocking functions and handlers.
From: Steven Ericsson Zenith <zenith@kai.com>
Sender: zenith@kai.com
Organization: 	Kuck and Associates, Inc.
		1906 Fox Drive, Champaign IL USA 61820-7334,
		voice 217-356-2288, fax 217-356-5199


Bill Gropp writes:

    (Warning: radical position that I'm not sure even I hold follows:)
    An interesting issue is whether we should defer all nonblocking communications
    to a thread-based execution model.

I'm not so sure this is a radical position Bill since even
nonsynchronized communication will need to be defined formally this way.
Nonsynchronized communication is in effect creating a parallel process
that has the job of passing the communication on. Al Geist earlier asked
the question wheather buffers used by nonsynchronized communication
should be accessible after the communication has started - the answer
should be - no, unless by some explicit mechanism that formally amounts
to a communication with the process mentioned above.  Any nonexplicit
interaction (e.g. a write to the buffer) would have to be specified as
formally equivalent to an explicit interaction.

Also, there is quite a range of terminology in use.  One common error:
"Asynchronous" and "synchronous" has quite a particular meaning in EE
and when CS people use the terms in relation to message passing they
usually mean NONSYNCHRONIZED and SYNCHRONIZED. Also BLOCKING =
SYNCHRONIZED. Let us begin a glossary that defines the terms we use - if
no-one else volunteers I'll take this to be the responsibility of the
Formal Specification Subcommittee. So I'm looking for volunteers from
that subcommittee.

Steven

From owner-mpi-ptop@CS.UTK.EDU  Wed Dec  2 15:08:45 1992
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA12207; Wed, 2 Dec 92 15:08:45 -0500
Received:  by CS.UTK.EDU (5.61++/2.8s-UTK)
	id AA24266; Wed, 2 Dec 92 14:56:52 -0500
Received: from super.super.org by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA24261; Wed, 2 Dec 92 14:56:46 -0500
Received: from b125 (b125.super.org) by super.super.org (4.1/SMI-4.1)
	id AA00585; Wed, 2 Dec 92 14:56:38 EST
Received: by b125 (4.1/SMI-4.1)
	id AA02506; Wed, 2 Dec 92 14:56:37 EST
Date: Wed, 2 Dec 92 14:56:37 EST
From: lederman@b125.super.org (Steve Lederman)
Message-Id: <9212021956.AA02506@b125>
To: mpi-ptop@cs.utk.edu
Subject: hello

Most of the other subcommittees are having discussions and (hopefully
:-) making progress.  As a member of this group, I was wondering if
there has been some discussion I missed?  If not, I feel we have a
number of potential issues to discuss before the next meeting in
Dallas.  Given the holidays coming up, I don't think that leaves much
time.  Does anyone have any topics or suggestion on how we should
proceed?

Steve Huss-Lederman
From owner-mpi-ptop@CS.UTK.EDU  Thu Dec  3 02:38:33 1992
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA25221; Thu, 3 Dec 92 02:38:33 -0500
Received:  by CS.UTK.EDU (5.61++/2.8s-UTK)
	id AA05999; Thu, 3 Dec 92 02:10:42 -0500
Received: from gmdzi.gmd.de by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA05995; Thu, 3 Dec 92 02:10:39 -0500
Received: from f1neuman.gmd.de (f1neuman) by gmdzi.gmd.de with SMTP id AA06896
  (5.65c/IDA-1.4.4 for <mpi-ptop@cs.utk.edu>); Thu, 3 Dec 1992 08:10:10 +0100
Received: by f1neuman.gmd.de id AA14748; Thu, 3 Dec 1992 08:09:55 +0100
Date: Thu, 3 Dec 1992 08:09:55 +0100
From: Rolf.Hempel@gmd.de
Message-Id: <9212030709.AA14748@f1neuman.gmd.de>
To: mpi-ptop@cs.utk.edu
Subject: Getting started


I agree with Steve Huss-Lederman that we have to get started immediately
in order to get something done before our next meeting. I'm sorry that
as the chairman of this group I didn't take the initiative earlier,
but after my return from SUPERCOMPUTING 92 there were a lot of things
to be done first. 

How should we get things going most effectively? At the moment I don't
have any input from others. So, the only document I have is my own
proposal which I distributed at the Minneapolis meeting. In that
paper I tried to integrate the concept of virtual topologies (Tori and
more general graphs) into the current MPI1 proposal. I suggest that
we take this paper as a starting point of our discussions.

>From the (hopefully starting) e-mail avalanche we can then distill the
open questions and controversial points for discussion at the January
meeting.

I assume that there are some people in our group who were not present
at the Minneapolis meeting, so they do not have the paper I mentioned. 
Therefore, with another mail I send you the text again as a PostScript
file. I processed it first using "compress" and then "uuencode". Before
printing, you thus have to do the reverse operations. If you have any
problems, please let me know.

Rolf Hempel
From owner-mpi-ptop@CS.UTK.EDU  Thu Dec  3 02:39:47 1992
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA25246; Thu, 3 Dec 92 02:39:47 -0500
Received:  by CS.UTK.EDU (5.61++/2.8s-UTK)
	id AA06040; Thu, 3 Dec 92 02:14:55 -0500
Received: from gmdzi.gmd.de by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA06036; Thu, 3 Dec 92 02:14:41 -0500
Received: from f1neuman.gmd.de (f1neuman) by gmdzi.gmd.de with SMTP id AA06999
  (5.65c/IDA-1.4.4 for <mpi-ptop@cs.utk.edu>); Thu, 3 Dec 1992 08:14:11 +0100
Received: by f1neuman.gmd.de id AA15778; Thu, 3 Dec 1992 08:13:54 +0100
Date: Thu, 3 Dec 1992 08:13:54 +0100
From: Rolf.Hempel@gmd.de
Message-Id: <9212030713.AA15778@f1neuman.gmd.de>
To: mpi-ptop@cs.utk.edu
Subject: proposal
Cc: gmap10@f1neuman.gmd.de


begin 664 virt.ps.Z
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
8%.J.\X2V@$(AG]!0(!I$%"0$?8$G0*D"
`
end
From owner-mpi-ptop@CS.UTK.EDU  Mon Dec  7 15:09:32 1992
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA05769; Mon, 7 Dec 92 15:09:32 -0500
Received:  by CS.UTK.EDU (5.61++/2.8s-UTK)
	id AA21151; Mon, 7 Dec 92 14:43:08 -0500
Received: from super.super.org by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA21147; Mon, 7 Dec 92 14:43:05 -0500
Received: from b125 (b125.super.org) by super.super.org (4.1/SMI-4.1)
	id AA12334; Mon, 7 Dec 92 14:43:03 EST
Received: by b125 (4.1/SMI-4.1)
	id AA03830; Mon, 7 Dec 92 14:43:02 EST
Date: Mon, 7 Dec 92 14:43:02 EST
From: lederman@b125.super.org (Steve Lederman)
Message-Id: <9212071943.AA03830@b125>
To: mpi-ptop@cs.utk.edu
Subject: thoghts on Rolf proposal

I am sorry to have started up this discussion and then not followed up
quickly but I have been fighting a cold since late last week.  (I
think I may actually be winning :-)

I have read Rolf's Virtual Topologies proposal and think it is a good
place to start our discussions.  Before I go into the details, I
thought I would bring up a few "global" issues that came to my mind
during my reading:

1) I think this subgroup is likely to get some resistance to inclusion of
topologies into MPI1.  I think there are some good points made for their
inclusion but anything to strengthen that position would be good.

2) The document has two classes of topologies: general graphs and tori
(including meshes and rings).  My first question is how useful are the
general graphs in practicality.  I must show my ignorance on this and
say I have never used such a capability.  It appears that it could be
very useful but it would also appear that it could significantly
increase the complexity of implementing the package.  Can anyone give
some information here?  The second question regards what topologies
should be given special treatment.  Tori are clearly important.  What
about hypercubes (Intel i860, NCUBE), trees (CM5) and even less common
ones like a ring of rings on the KSR.  I don't think (though I don't
have the proof) that all these structures can, in general, be embedded
contention free in a torus.  And even if they could, if they are
common enough, they would be a nice convenience.  The general question
is what special topologies should this standard support and what is
the basis for the decision.  More is nice but also more complex.

3) An argument is made for including topologies at the start since the
onion-skin model does not hold because of the calls needed.  I think
this group should define what information and calls are needed in MPI1
to support the type of topology system being proposed.  I think this
will help define the complexity of the system.  Also, even if the full
topology system is not adopted for MPI1, I think a good case can be
made for including the necessary calls as is being done for collective
communications. 

4) A small point: I have found all the references except the two to
PARMACS.  Are these available electronically?

These are just some starting thoughts.  What do you all think?

Steve
From owner-mpi-ptop@CS.UTK.EDU  Tue Dec  8 15:42:15 1992
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA27195; Tue, 8 Dec 92 15:42:15 -0500
Received:  by CS.UTK.EDU (5.61++/2.8s-UTK)
	id AA23925; Tue, 8 Dec 92 15:38:55 -0500
Received: from sampson.ccsf.caltech.edu by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA23921; Tue, 8 Dec 92 15:38:53 -0500
Received: from elephant by sampson.ccsf.caltech.edu with SMTP id AA27482
  (5.65c/IDA-1.4.4 for mpi-ptop@cs.utk.edu); Tue, 8 Dec 1992 12:38:41 -0800
Received: from lion.parasoft by elephant (4.1/SMI-4.1)
	id AA16279; Tue, 8 Dec 92 12:38:12 PST
Received: by lion.parasoft (4.1/SMI-4.1)
	id AA00574; Tue, 8 Dec 92 12:38:16 PST
Date: Tue, 8 Dec 92 12:38:16 PST
From: jwf@lion.Parasoft.COM (Jon Flower)
Message-Id: <9212082038.AA00574@lion.parasoft>
To: mpi-ptop@cs.utk.edu
Subject: Thoughts.....


Just a few random thoughts inspired by Steve Lederman's mail...

I agree that a general version of a "graph" topology
might pose too high constraints on an MPI1 implementation. HOWEVER,
this appears to be a problem that research groups have spent
and are spending quite a lot of time on. Maybe we could get
them to volunteer to contribute some code......????

I have also never used a general graph in my code, but quite a
few Express users have asked us for n-ary trees. I think this
would suit both the CM5 and KSR structures quite reasonably.

I believe that a hypercube is a torus with only two nodes
in each dimension, so it IS a subset of the tori proposed
by Rolf.

I would like to see something to deal with the periodicity
(or otherwise) of boundary conditions. In particular I
think you want to distinguih between a mesh and a periodic
two dimensional grid. Many applications need to distinguish
these cases. I would suggest that the function that returns
a processor number be allowed to return a "magic" processor
number that means "there's noone there". If at all possible,
however, I would like this to be a different number from
the error condition because I like to see us able to pass
it to the MPI1 communication primitives and have them
know how to deal with it. If this is possible a lot of
messy "if(this), else(that)" logic can be left out of
user code. 

	Jon Flower
From owner-mpi-ptop@CS.UTK.EDU  Wed Dec  9 08:39:32 1992
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA10629; Wed, 9 Dec 92 08:39:32 -0500
Received:  by CS.UTK.EDU (5.61++/2.8s-UTK)
	id AA10654; Wed, 9 Dec 92 08:30:57 -0500
Received: from gmdzi.gmd.de by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA10650; Wed, 9 Dec 92 08:30:53 -0500
Received: from f1neuman.gmd.de (f1neuman) by gmdzi.gmd.de with SMTP id AA28376
  (5.65c/IDA-1.4.4 for <mpi-ptop@cs.utk.edu>); Wed, 9 Dec 1992 14:30:25 +0100
Received: by f1neuman.gmd.de id AA15353; Wed, 9 Dec 1992 14:30:01 +0100
Date: Wed, 9 Dec 1992 14:30:01 +0100
From: Rolf.Hempel@gmd.de
Message-Id: <9212091330.AA15353@f1neuman.gmd.de>
To: mpi-ptop@cs.utk.edu
Subject: Thoughts on Thoughts...
Cc: gmap10@f1neuman.gmd.de



I would like to comment on the notes of Steve Lederman and Jon Flower.

1. There was the question of what the graph mapping is useful for.
   I have two answers to this:

   First, in the PARMACS project we had requests from users (mainly in
   the CFD field) who had very complicated geometrical domains on which
   they solve their partial differential equations. The parallelization
   of such (large) codes usually leads to so-called block-structured
   domains, in which each block is logically rectangular, but the
   blocks may be connected in any way. This cannot be embedded into
   grid or torus structures. On the other hand, the communication is
   mainly local (between neighboring blocks) also in this case, so a
   good mapping of the process graph on the hardware helps a lot in
   minimizing the overall communication.
  
   We have implemented the graph mapping on a number of architectures.
   I did it myself for hypercubes, and the result is near-optimal in
   most cases. I agree with Jon that there is a lot of theoretical
   material on mapping strategies. But even if at the moment it seems
   to be too difficult for some weird architecture, it is still an
   advantage if the user code contains the logical topology information.
   If a good mapping cannot be constructed, an implementation may opt
   to use just random mapping instead. After all, that is what would
   happen if the user did not specify a topology.

   Second, there are many different topologies that users might come
   up with, and you cannot have special functions for all of them.
   The choice I made in my proposal was to treat the case of n-dim
   tori separately, but to subsume all the rest in the general graph
   structure. This makes it possible to specify any topology, and it
   does not impose all the overhead of the graph definition in the
   special case of simple tori.

   I would recommend that if anybody finds it useful to have special
   functions for other topologies, that he then make a proposal
   how this should look like, and how it could be integrated into
   MPI.

2. Jon raised the issue of handling periodicity in a grid/torus
   topology. I think this is a good idea. The MPI_TORUS function
   should in this case be renamed MPI_GRID, and an additional
   argument (vector) could be used to specify periodicity. Do other
   people agree? Any proposal for concrete syntax? 
   
Rolf
From owner-mpi-ptop@CS.UTK.EDU  Wed Dec  9 14:10:01 1992
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA18505; Wed, 9 Dec 92 14:10:01 -0500
Received:  by CS.UTK.EDU (5.61++/2.8s-UTK)
	id AA17251; Wed, 9 Dec 92 13:49:23 -0500
Received: from fslg8.fsl.noaa.gov by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA17247; Wed, 9 Dec 92 13:49:18 -0500
Received: by fslg8.fsl.noaa.gov (5.57/Ultrix3.0-C)
	id AA27235; Wed, 9 Dec 92 18:49:06 GMT
Received: by macaw.fsl.noaa.gov (4.1/SMI-4.1)
	id AA01554; Wed, 9 Dec 92 11:48:10 MST
Date: Wed, 9 Dec 92 11:48:10 MST
From: hender@macaw.fsl.noaa.gov (Tom Henderson)
Message-Id: <9212091848.AA01554@macaw.fsl.noaa.gov>
To: mpi-ptop@cs.utk.edu
Subject: ...and yet more thoughts...


I would like to comment on Rolf's comments and generally toss in my two cents 
worth...  

1.  I agree that grids and tori should be handled differently.  As a user, 
    I would like to see some sort of error message (or at least some condition 
    I can detect and print my own message) any time I try to communicate with 
    a non-existent logical process.  Any time an MPI routine can inform me 
    that I'm doing something stupid, I'll avoid hours of debugging.  


2.  It is possible that a user may want periodicity in some dimensions and 
    not in others.  An example might be a global weather model.  Often the 
    polar regions are excluded to avoid singularity.  This type of model is 
    periodic in the east-west direction and non-periodic in the north-south 
    and vertical directions.  Maybe it would be best to have a single 
    general-purpose Cartesian mapping routine and specify periodicity 
    in each dimension instead of having two functions (MPI_TORUS and 
    MPI_GRID).  Here's a shot at it:  

NAME
    MPI_CART    Arrange the processes of a process group in a Cartesian grid 
                structure with n dimensions.  

SYNOPSIS
    integer function MPI_CART (gid, ndim, dims, boundaries)
    integer gid
    integer ndim
    integer dims(*)
    integer boundaries(*)

INPUT ARGUMENTS
    gid         the ID number of the process group to be structured.
    ndim        the number of dimensions of the grid.
    dims        the number of process per coordinate direction.
    boundaries  the boundary characteristics in each coordinate direction.

DESCRIPTION
    The processes of the group with ID number gid are arranged in a grid 
    structure.  By assigning neighboring positions in the logical process grid 
    to neighboring processors in the hardware the system can optimize the 
    locality of inter-process communications.  The number of dimensions is 
    specified by ndim.  The number of logical processes in each coordinate 
    direction is specified by array dims.  Array boundaries specifies the 
    periodicity in each coordinate dimension.  If boundaries(i) is set to 
    MPI_PER then dimension i is treated as periodic.  If boundaries(i) is set 
    to MPI_NPER then dimension i is treated as non-periodic.  If all 
    bounaries(i) are set to MPI_PER, then the topology is a torus.  

RETURN VALUE
    If the calling process is assigned a position in the grid, MPI_CART 
    returns the total number of processes in the grid.  If the calling process 
    is not in the grid, the return value is set to 0.  A value of -1 is 
    returned if an error occurs.  

I'm not sure that the constants MPI_PER and MPI_NPER (or MPI_CART) have the 
best names.  Any ideas?  


3.  In Rolf's parallel Poisson solver example (p. 5), array dims(*) is set up 
    explicitly.  It would be nice to have an automatic way of distributing 
    processes among dimensions so recompilation would not be required to run 
    on different numbers of processors.  An example of this kind of utility is 
    Parasoft's exgridsplit() routine (KXGDSP()).  I'd like to propose a 
    similar routine for MPI-- basically exgridsplit() with a bit more 
    flexibility.  This routine should be fairly easy to port since there is 
    no machine-dependent stuff inside.  Here's a proposal:  

NAME
    MPI_MAKDIM  Divide the processes of a process group among n dimensions of 
                a Cartesian grid.  

SYNOPSIS
    integer function MPI_MAKDIM (gid, ndim, dims)
    integer gid
    integer ndim
    integer dims(*)

INPUT ARGUMENTS
    gid         the ID number of the process group to be structured.
    ndim        the number of dimensions of the grid.
    dims        the number of process desired per coordinate direction.

OUTPUT ARGUMENTS
    dims        the number of process per coordinate direction.

DESCRIPTION
    The processes of the group with ID number gid are divided as evenly as 
    possible among ndim dimensions, subject to the constraint that all 
    processes in the group are used.  The caller may further constrain the 
    operation of this routine by specifying elements of array dims.  If 
    dims(i) is set to a positive number, the routine will fix the number of 
    process in coordinate direction i to dims(i).  Processes will then be 
    distributed among dimensions where dims(i) is set to 0, subject to the 
    above constraints.  Note that an error will occur if dims(i) is positive 
    and does not evenly divide the number of processes in the group.  Negative 
    input values of dims(i) will also cause an error.  All elements of dims(*) 
    must be set to 0 for completely automatic process distribution.  
    When the function returns, dims(i) will be set to the number of processes 
    in coordinate direction i.  For dims(i) not set by the user, dims(i) will 
    be ordered (MAXIMUM, ..., MINIMUM).  Array dim(*) is suitable for use as 
    input to routine MPI_CART().  

RETURN VALUE
    If the routine completes without error, the return value is set to 0.  A 
    value of -1 is returned if an error occurs.  



EXAMPLES

        integer ndim
        parameter (ndim=3)
        integer gid, dims(ndim), ret, dummy, boundaries(ndim)
C    Set process grid size
        do 10 i=1,ndim
            dims(i) = 0
10          continue
        gid = ALL
        ret = MPI_MAKDIM(gid, ndim, dims)
C    Should really do error control here...
        if (ret .ne. 0) stop
C    Set up Cartesian process grid for weather model example above.  
C    Dimensions 1, 2, and 3 are East-West, North-South, and vertical.  
        boundaries(1) = MPI_PER
        boundaries(2) = MPI_NPER
        boundaries(3) = MPI_NPER
        ret = MPI_CART(gid, ndim, dims, boundaries)
C    (etc.)


Suppose numprocs is the number of processes in group gid.  Here are some 
examples of how MPI_MAKDIM() would behave in the above example:  

numprocs = 27
dims(1) = 3
dims(2) = 3
dims(3) = 3

numprocs = 33
dims(1) = 11
dims(2) = 3
dims(3) = 1

numprocs = 512
dims(1) = 8
dims(2) = 8
dims(3) = 8

numprocs = 1024
dims(1) = 16
dims(2) = 8
dims(3) = 8

If dims(*) were set as follows before calling MPI_MAKDIM():  

        dims(1) = 0
        dims(2) = 0
C    Restrict number of processes in "vertical" dimension to 3
        dims(3) = 3

The same values of numprocs would produce:  

numprocs = 27
dims(1) = 3
dims(2) = 3
dims(3) = 3

numprocs = 33
dims(1) = 11
dims(2) = 1
dims(3) = 3

numprocs = 512
ERROR (512 not evenly divisible by dims(3))

numprocs = 1024
ERROR (512 not evenly divisible by dims(3))

Any comments?  Is the extra flexibility of allowing user-specified constraints 
on dims(*) worth including?  Is MPI_MAKDIM worth having at all?  


    Tom Henderson

From owner-mpi-ptop@CS.UTK.EDU  Wed Dec  9 15:39:49 1992
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA20328; Wed, 9 Dec 92 15:39:49 -0500
Received:  by CS.UTK.EDU (5.61++/2.8s-UTK)
	id AA20006; Wed, 9 Dec 92 15:32:23 -0500
Received: from super.super.org by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA20000; Wed, 9 Dec 92 15:32:19 -0500
Received: from b125 (b125.super.org) by super.super.org (4.1/SMI-4.1)
	id AA07951; Wed, 9 Dec 92 15:32:17 EST
Received: by b125 (4.1/SMI-4.1)
	id AA04444; Wed, 9 Dec 92 15:32:16 EST
Date: Wed, 9 Dec 92 15:32:16 EST
From: lederman@b125.super.org (Steve Lederman)
Message-Id: <9212092032.AA04444@b125>
To: mpi-ptop@cs.utk.edu
Subject: additional thoughts

A few thoughts:

I have thought about the definition of the torus given by Rolf and I
now agree that a hypercube can be embedded into it.  I was thinking of
a torus in the less general and more geometric sense.  Given the fact
that you can embed regular graphs into hypercubes this seems like a
general enough topology.  Some of the latest discussion seems centered
on whether or not it is "too general."  As Rolf points out, a grid is
a subset of a torus where you ignore the extra link.  If you had all
the hypercube connections, then this would not be a major issue.
However, on many real systems you cannot embed the general torus or
hypercube so that each logical link gets a contention free physical
link.  In this case the algorithm for placing the logical processes on
the physical nodes needs to decide which links will get one hop
contention free physical links and which will get physical links that
would require multiple hops and potential contention.  Thus, being
able to specify important topologies that are simplier than the tori
would allow (but not require) the mapping algorithm not to worry about
the links that will not be used.  Given this idea, I think that grids
are a useful concept in addition to tori since they are used with some
frequency.  Do people agree with this concept?  Are there other
geometries that should be given special recognition?

I still have some reservations about general graphs because they may
scare some people from the complexity point of view.  However, given
Rolf's argument that a random mapping can always be used then I think
it is good to include this functionality.  It allows for any easy way
out for those vendors that wish to do that and still allows vendors to
write more intelligent mappers if they can.  It also allows for future
research to come up with better heuristics that could be incorporated.
Along this line of thinking, would it be useful to include weights in
MPI_GRAPH?  They can always be ignored but might be useful for some
mapping algorithms and a new algorithm might be able to effectively
use them.  A value of zero would be given the default weight of one.
The negative I see to this is that it takes up storage and adds some
complexity to the user.  I think it might be worth it if others feel
that it is a feature that users would like and might be used in some
mapping algorithms.  What do you think?

I think it is worth while to support periodic boundary conditions.

I don't have a strong opinion yet about the MPI_MAKDIM routine.  It
seems simple and can be provided to all vendors for inclusion so my
inclination is to include it if enough users feel it would help.

Steve
From owner-mpi-ptop@CS.UTK.EDU  Mon Dec 21 03:27:57 1992
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA07780; Mon, 21 Dec 92 03:27:57 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA21765; Mon, 21 Dec 92 03:27:35 -0500
X-Resent-To: mpi-ptop@CS.UTK.EDU ; Mon, 21 Dec 1992 08:27:34 GMT
Errors-To: owner-mpi-ptop@CS.UTK.EDU
Received: from gmdzi.gmd.de by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA21757; Mon, 21 Dec 92 03:27:30 -0500
Received: from f1neuman.gmd.de (f1neuman) by gmdzi.gmd.de with SMTP id AA11139
  (5.65c/IDA-1.4.4 for <mpi-ptop@cs.utk.edu>); Mon, 21 Dec 1992 09:26:53 +0100
Received: by f1neuman.gmd.de id AA11153; Mon, 21 Dec 1992 09:26:23 +0100
Date: Mon, 21 Dec 1992 09:26:23 +0100
From: Rolf.Hempel@gmd.de
Message-Id: <9212210826.AA11153@f1neuman.gmd.de>
To: mpi-ptop@cs.utk.edu
Subject: draft meeting agenda
Cc: gmap10@f1neuman.gmd.de


Based on the email I saw so far on MPI_PTOP, I gathered the following
points for discussion at our subcommittee meeting in Dallas. I tried to
order the material in some logical way, but for the agenda of our 
meeting we can of course rearrange the points as you like.


 1. Do we want to add functions for grids as opposed to tori?

 2. How to handle periodicity information? Is the specification of
    periodicity per coordinate direction a good idea? (suggestions for
    syntax?) Is Tom's proposal for a function MPI_CART okay with
    everybody?

 3. What about including functions for handling general graphs?

    - is the inclusion of a more general topology than tori or grids
      a good idea?

    - is the difficulty of implementation a problem, or does it help
      to allow a random mapping as a last resort?

    - is the proposed functionality sufficient? Does anybody feel we
      should include more user-supplied info (computational weights of
      nodes, volume of data traffic along edges)?

 4. Should we introduce special functions for hypercubes? As Jon pointed
    out, they could be expressed as tori. Is this sufficient?

 5. What about trees?

 6. What about more esoteric topologies, like rings of rings?
    Are there any other structures people would like to see included?

 7. What about Tom's function MPI_MAKDIM which automatically distributes
    the processes along the coordinate directions?

 8. Should the pid inquiry functions return some magic number, if there
    is not such a process (as Jon suggested)?

 9. What can we do to convince the general MPI committee that virtual
    topologies are to be included in the standard?

10. Do we propose to include the PTOP functions into MPI-1? If not, how
    can they be based on MPI-1?


Please check whether all the points you would like to discuss at our
meeting are somehow covered by this list. If not, send a note. I will
send out an updated list on January 4th.

I wish everybody on the committee a Merry Christmas
and a Happy New Year!

Rolf
From owner-mpi-ptop@CS.UTK.EDU  Thu Dec 31 22:14:03 1992
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA14662; Thu, 31 Dec 92 22:14:03 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA12437; Thu, 31 Dec 92 22:13:48 -0500
X-Resent-To: mpi-ptop@CS.UTK.EDU ; Fri, 01 Jan 1993 03:13:47 GMT
Errors-To: owner-mpi-ptop@CS.UTK.EDU
Received: from pnlg.pnl.gov by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA12429; Thu, 31 Dec 92 22:13:45 -0500
Received: from carbon.pnl.gov (130.20.65.121) by pnlg.pnl.gov; Thu, 31 Dec 92
 19:09 PST
Received: from fermi.pnl.gov by carbon.pnl.gov (4.1/SMI-4.1) id AA21172; Thu,
 31 Dec 92 19:08:30 PST
Received: by fermi.pnl.gov (4.1/SMI-4.1) id AA11537; Thu, 31 Dec 92 19:08:29 PST
Date: Thu, 31 Dec 92 19:08:29 PST
From: d3g681@fermi.pnl.gov
To: littlefield@fermi.pnl.gov, mpi-collcomm@cs.utk.edu, mpi-ptop@cs.utk.edu
Message-Id: <9301010308.AA11537@fermi.pnl.gov>
X-Envelope-To: mpi-ptop@cs.utk.edu, mpi-collcomm@cs.utk.edu

Posted to mpi-collcomm and mpi-ptop.

I have just taken the archived discussion from netlib@ornl and not
found anything more recent than december 15 (collcomm) and 21 (ptop).
Since I asked for my name to be on the mailing lists and have seen
nothing I assume that things have been quiet since then.

Al Geist's proposal (Dec. 5) for collective communication and the
reasoning behind it seems to provide a resonable starting point for
the discussion of interface and functionality.  I have only a few
minor comments in this regard, but given that the efficiency of
collective communications is critically sensitive to hardware topology
it *must* be essential to more closely integrate the definition of
process groups with topology.  I restrict my comments here to
this subject.

For example, on the Touchstone Delta efficient sub-group global-ops
would suggest that process groups map as best possible to square
sub-meshes, on the iPSC as sub-cubes, on the KSR as sub-rings.
Currently, if one's interest is in performing efficient collective
communication in subgroups, there is no way of performing this mapping
in a portable way.  In this instance one might want something that
functions along these lines

  Create NG process groups with P(0), P(1), ..., P(NG-1) processes in each
  group and assign each process to one of these groups so that collective
  communication within each (and perhaps also between all) subgroup is
  optimized.

Such a mapping might also be readily accomodated as a sub-partitioning
of an existing process group, with the default being ALL.  I could
envisage writing, for instance, a fast-multipole integration using this
functionality.

Comments?

Robert J. Harrison

Mail Stop K1-90                             tel: 509-375-2037
Battelle Pacific Northwest Laboratory       fax: 509-375-6631
P.O. Box 999, Richland WA 99352          E-mail: rj_harrison@pnl.gov





From owner-mpi-ptop@CS.UTK.EDU  Fri Jan  1 11:53:58 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA16856; Fri, 1 Jan 93 11:53:58 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA13825; Fri, 1 Jan 93 11:53:48 -0500
X-Resent-To: mpi-ptop@CS.UTK.EDU ; Fri, 01 Jan 1993 16:53:47 GMT
Errors-To: owner-mpi-ptop@CS.UTK.EDU
Received: from msr.EPM.ORNL.GOV by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA13817; Fri, 1 Jan 93 11:53:46 -0500
Received: by msr.EPM.ORNL.GOV (5.61/1.34)
	id AA04566; Fri, 1 Jan 93 11:53:35 -0500
Date: Fri, 1 Jan 93 11:53:35 -0500
From: geist@msr.EPM.ORNL.GOV (Al Geist)
Message-Id: <9301011653.AA04566@msr.EPM.ORNL.GOV>
To: d3g681@fermi.pnl.gov, littlefield@fermi.pnl.gov, mpi-collcomm@cs.utk.edu,
        mpi-ptop@cs.utk.edu
Subject: Re: groups and topology.


>I have only a few
>minor comments in this regard, but given that the efficiency of
>collective communications is critically sensitive to hardware topology
>it *must* be essential to more closely integrate the definition of
>process groups with topology.

>Currently, if one's interest is in performing efficient collective
>communication in subgroups, there is no way of performing this mapping
>in a portable way.

It is critical that MPI be portable even if efficiency suffers.
Portability is primary reason for having a standard.

Efficiency is important and tightly coupled to the implementation
on a given vendor's machine. My feeling is that our MPI work
should specify the functionality at the user level
and not dictate how MPI is implemented underneath.

Mapping is the key word in integrating topology and groups,
and mapping is not defined (so far) in MPI. It is related to
the spawning and placement of tasks. I can envision some implementations
allowing tasks to migrate to improve load balance and fault tolerance.
This greatly compounds the mapping problem, but I don't think MPI
should exclude such implementations.
The hope would be that vendors would supply MPI implementations
that map process number to node number in a way that their
collective routines would be efficient with default ALL group
AND that the vendor's mapping would be documented so that
a user could specify subgroups that could exploit this same efficiency.

Al Geist
From owner-mpi-ptop@CS.UTK.EDU  Mon Jan  4 06:22:14 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA06430; Mon, 4 Jan 93 06:22:14 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA03279; Mon, 4 Jan 93 06:21:55 -0500
X-Resent-To: mpi-ptop@CS.UTK.EDU ; Mon, 04 Jan 1993 11:21:50 GMT
Errors-To: owner-mpi-ptop@CS.UTK.EDU
Received: from gmdzi.gmd.de by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA03271; Mon, 4 Jan 93 06:21:47 -0500
Received: from f1neuman.gmd.de (f1neuman) by gmdzi.gmd.de with SMTP id AA17137
  (5.65c/IDA-1.4.4 for <mpi-ptop@cs.utk.edu>); Mon, 4 Jan 1993 12:21:14 +0100
Received: by f1neuman.gmd.de id AA14884; Mon, 4 Jan 1993 12:20:29 +0100
Date: Mon, 4 Jan 1993 12:20:29 +0100
From: Rolf.Hempel@gmd.de
Message-Id: <9301041120.AA14884@f1neuman.gmd.de>
To: mpi-ptop@cs.utk.edu
Subject: Agenda for subcommittee meeting
Cc: gmap10@f1neuman.gmd.de


Dear All,

in my message of Dec. 21st I asked you for comments on the agenda
I proposed for our working group meeting in Dallas. Since I did not
get any response, I guess that you don't disagree too much. I am looking
forward too seeing you all in Dallas.

Rolf
From owner-mpi-ptop@CS.UTK.EDU  Tue Jan 19 06:28:43 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA01032; Tue, 19 Jan 93 06:28:43 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA08439; Tue, 19 Jan 93 06:28:14 -0500
X-Resent-To: mpi-ptop@CS.UTK.EDU ; Tue, 19 Jan 1993 06:28:13 EST
Errors-To: owner-mpi-ptop@CS.UTK.EDU
Received: from gmdzi.gmd.de by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA08431; Tue, 19 Jan 93 06:28:08 -0500
Received: from f1neuman.gmd.de (f1neuman) by gmdzi.gmd.de with SMTP id AA20278
  (5.65c/IDA-1.4.4 for <mpi-ptop@cs.utk.edu>); Tue, 19 Jan 1993 12:27:30 +0100
Received: by f1neuman.gmd.de id AA13250; Tue, 19 Jan 1993 12:26:35 +0100
Date: Tue, 19 Jan 1993 12:26:35 +0100
From: Rolf.Hempel@gmd.de
Message-Id: <9301191126.AA13250@f1neuman.gmd.de>
To: mpi-ptop@cs.utk.edu
Subject: next activities
Cc: gmap10@f1neuman.gmd.de


Dear All,

this time it's my turn to fight against a bad cold, but I think
I'll make it. We should plan the work our group has to do before the
next Dallas meeting. At the last meeting some points were brought
up in discussions, which we should invest some thoughts into:

1. If more than one topology is assigned to a set of processes (i.e.,
   there are two groups with identical membership, and a topology is
   assigned to both groups), then it might be useful to do the placement
   of processes (mapping) only according to one topology, and then state
   how the logical process coordinates of the second topology should
   correspond to the logical coordinates of the first one. 

   This was the idea of Marc Snir, whereas I favoured the following 
   point of view: for both topologies the assignment of processes
   to positions within the topology should be based on that topology
   alone. As a consequence the mapping can be optimized for both
   topologies. On the other hand, the roles a process plays in both
   topologies are not coordinated.
   
   A third way could be to specify both topologies together, including
   their alignment between each other. It would then be the (nontrivial)
   task of the system to assign the processes in a clever way. Also,
   we would have to think about how the specification in this case
   could look like.

   Any ideas?

2. As it stands now, processes in a group get a number 0 - n-1 following
   an arbitrary scheme. Once a topology is in place, it would be a good
   idea to base the numbering on the topology (e.g. run through a grid
   row/column - wise). I see two alternatives how this can be done:
   a) The numbering is defined only after the topology definition.
      This means that there is no group rank without a topology, which
      contradicts our goal to have a topology as an optional attribute
      to a group.
   b) The group rank of a process changes with the topology definition.
      This might cause some confusion among applications programmers.
      For example, global gather operations before and after the
      topology definition would lead to different ordering of data in
      the buffer. On the other hand, there seems to be no conflict with
      other MPI features.
   What do you think?

3. Should there be any special topology definition / look up functions
   for trees? How should they look like? Since Jon brought this up
   at our meeting, I'm most confident to get some input from him in
   this matter. Does anybody have brilliant suggestions?

4. Bill Gropp claimed that topology mapping could be done in a portable
   way if there are some inquiry functions about the hardware topology.
   Are we able to define a set of such inquiry functions which meet
   the following requirements:
   a) they must provide all information necessary for a portable
      mapping tool for arbitrary application topologies.
   b) they must be applicable to any weird hardware interconnect
      topology.
   Frankly, I have difficulties with this, but perhaps somebody has
   a good idea.

5. - n. Did I forget anything?

I will work the results of the last meeting into the document on
virtual topologies until end of next week and send it out to everybody.

Rolf
From owner-mpi-ptop@CS.UTK.EDU  Tue Jan 19 13:53:39 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA22518; Tue, 19 Jan 93 13:53:39 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA27886; Tue, 19 Jan 93 13:53:14 -0500
X-Resent-To: mpi-ptop@CS.UTK.EDU ; Tue, 19 Jan 1993 13:53:13 EST
Errors-To: owner-mpi-ptop@CS.UTK.EDU
Received: from fslg8.fsl.noaa.gov by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA27878; Tue, 19 Jan 93 13:53:11 -0500
Received: by fslg8.fsl.noaa.gov (5.57/Ultrix3.0-C)
	id AA26554; Tue, 19 Jan 93 18:53:07 GMT
Received: by macaw.fsl.noaa.gov (4.1/SMI-4.1)
	id AA19368; Tue, 19 Jan 93 11:52:05 MST
Date: Tue, 19 Jan 93 11:52:05 MST
From: hender@macaw.fsl.noaa.gov (Tom Henderson)
Message-Id: <9301191852.AA19368@macaw.fsl.noaa.gov>
To: mpi-ptop@cs.utk.edu
Subject: Re: next activities



> 1. If more than one topology is assigned to a set of processes (i.e.,
>    there are two groups with identical membership, and a topology is
>    assigned to both groups), then it might be useful to do the placement
>    of processes (mapping) only according to one topology, and then state
>    how the logical process coordinates of the second topology should
>    correspond to the logical coordinates of the first one. 
> 
>    This was the idea of Marc Snir, whereas I favoured the following 
>    point of view: for both topologies the assignment of processes
>    to positions within the topology should be based on that topology
>    alone. As a consequence the mapping can be optimized for both
>    topologies. On the other hand, the roles a process plays in both
>    topologies are not coordinated.
>    
>    A third way could be to specify both topologies together, including
>    their alignment between each other. It would then be the (nontrivial)
>    task of the system to assign the processes in a clever way. Also,
>    we would have to think about how the specification in this case
>    could look like.
> 
>    Any ideas?

I'm kind of leaning towards the second option, though I might be swayed if I 
could see an example of code that could take advantage of Marc's idea.  Any 
good examples out there?  

At the end of the last meeting, a suggestion was made that group creation and 
topology creation be married.  A group would always have a topology associated 
with it at creation.  A default topology of "linear" or "ring" might be 
supported.  If this idea is adopted, then it seems to me that each group would 
have one and only one topology.  There is no reason that multiple groups could 
not have the same membership.  Each of these groups could have different 
topologies.  I think this ends up being the second idea.  

> 2. As it stands now, processes in a group get a number 0 - n-1 following
>    an arbitrary scheme. Once a topology is in place, it would be a good
>    idea to base the numbering on the topology (e.g. run through a grid
>    row/column - wise). I see two alternatives how this can be done:
>    a) The numbering is defined only after the topology definition.
>       This means that there is no group rank without a topology, which
>       contradicts our goal to have a topology as an optional attribute
>       to a group.
>    b) The group rank of a process changes with the topology definition.
>       This might cause some confusion among applications programmers.
>       For example, global gather operations before and after the
>       topology definition would lead to different ordering of data in
>       the buffer. On the other hand, there seems to be no conflict with
>       other MPI features.
>    What do you think?

I would prefer to see topology inquiry routines that return the "pid" of a 
process specified by logical coordinates.  Inverse routines would also have 
to be provided.  I think that this is safer than either "a" or "b".  

If topology and group creation are married, then option "a" is automatic.  
(Actually, this is a good argument for combining group and topology.)  

I don't have any brilliant (or even reasonably sensible) ideas about items 
3 or 4 yet.  

> ...
> 
> Rolf
> 

Hope you get over your cold soon!

Tom Henderson
hender@fsl.noaa.gov

From owner-mpi-ptop@CS.UTK.EDU  Wed Jan 20 05:13:45 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA11399; Wed, 20 Jan 93 05:13:45 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA02944; Wed, 20 Jan 93 05:13:23 -0500
X-Resent-To: mpi-ptop@CS.UTK.EDU ; Wed, 20 Jan 1993 05:13:22 EST
Errors-To: owner-mpi-ptop@CS.UTK.EDU
Received: from gmdzi.gmd.de by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA02935; Wed, 20 Jan 93 05:13:17 -0500
Received: from f1neuman.gmd.de (f1neuman) by gmdzi.gmd.de with SMTP id AA16345
  (5.65c/IDA-1.4.4 for <mpi-ptop@cs.utk.edu>); Wed, 20 Jan 1993 11:12:40 +0100
Received: by f1neuman.gmd.de id AA16629; Wed, 20 Jan 1993 11:11:44 +0100
Date: Wed, 20 Jan 1993 11:11:44 +0100
From: Rolf.Hempel@gmd.de
Message-Id: <9301201011.AA16629@f1neuman.gmd.de>
To: mpi-ptop@cs.utk.edu
Subject: topologies and groups
Cc: gmap10@f1neuman.gmd.de


I'm not sure whether we really want to have a default topology. I see
some problems arising from that.

1. In some applications it might be completely unimportant how the
   processes are mapped. A default topology then adds an unnecessary
   overhead in group creation. An arbitrary numbering would be much
   better in this case.

2. MPI functions for group creation and topology assignment cannot be
   separated. Otherwise the system does not know whether it should
   apply the default topology (another topology could be defined later
   by the user). I think that especially those people who are not
   completely convinced of the value of the topology stuff would not
   like to see those two concepts integrated into the same functions.

I favour the following strategy:

A group is created without topology (how this is done is a separate
issue which we have to discuss with the CollComm people). An arbitrary
numbering is chosen by the system. Collective communications at this
point follows the arbitrary numbering. 

A topology definition call is a synchronization point for all processes
of the group. The numbering of processes is changed according to the
topology. Consistency of numbering is guaranteed because of the 
synchronization. If applications people want to avoid the different
numbering schemes to be used at different phases of their application,
they just have to apply the topology before they do any collective
communication. Any opinions?

There will be some functions which combine the creation of groups
and topologies, but they can be optional. An example for this is the
subgroup creation along coordinate lines in a cartesian topology.
We have to talk to the CollComm people about those functions. Does
anybody have a good idea for another topology based process group
creation function?

Rolf
From owner-mpi-ptop@CS.UTK.EDU  Wed Jan 20 09:56:37 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA10131; Wed, 20 Jan 93 09:56:37 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA19145; Wed, 20 Jan 93 09:55:55 -0500
X-Resent-To: mpi-ptop@CS.UTK.EDU ; Wed, 20 Jan 1993 09:55:54 EST
Errors-To: owner-mpi-ptop@CS.UTK.EDU
Received: from fslg8.fsl.noaa.gov by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA19137; Wed, 20 Jan 93 09:55:52 -0500
Received: by fslg8.fsl.noaa.gov (5.57/Ultrix3.0-C)
	id AA28601; Wed, 20 Jan 93 14:55:47 GMT
Received: by macaw.fsl.noaa.gov (4.1/SMI-4.1)
	id AA21143; Wed, 20 Jan 93 07:54:46 MST
Date: Wed, 20 Jan 93 07:54:46 MST
From: hender@macaw.fsl.noaa.gov (Tom Henderson)
Message-Id: <9301201454.AA21143@macaw.fsl.noaa.gov>
To: mpi-ptop@cs.utk.edu
Subject: Re:  topologies and groups


> ...
> 2. MPI functions for group creation and topology assignment cannot be
>    separated. Otherwise the system does not know whether it should
>    apply the default topology (another topology could be defined later
>    by the user). I think that especially those people who are not
>    completely convinced of the value of the topology stuff would not
>    like to see those two concepts integrated into the same functions.
> ...

I'll buy the second point.  People who don't need topologies (or think they 
don't) shouldn't be forced to learn about them.  (Just like people who don't 
ever do collective communication should never have to learn about groups...)  

> ...
> A topology definition call is a synchronization point for all processes
> of the group. The numbering of processes is changed according to the
> topology. Consistency of numbering is guaranteed because of the 
> synchronization. If applications people want to avoid the different
> numbering schemes to be used at different phases of their application,
> they just have to apply the topology before they do any collective
> communication. Any opinions?
> ...
> 
> Rolf
> 

I'm still uneasy about topology creation routines changing pid's.  It seems to 
me that this would be a likely place for users to make errors.  The problem is 
that I can imagine situations where unsafe code might work on the machine it 
was developed on (due to "good" luck) and fail when ported to another 
machine (where the pid renumbering works differently).  I know it is not 
possible to make everything idiot-proof but we may hear this objection when 
the idea is proposed to the whole committee.  

Tom


From owner-mpi-ptop@CS.UTK.EDU  Tue Jan 26 06:23:47 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA27461; Tue, 26 Jan 93 06:23:47 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA26404; Tue, 26 Jan 93 06:23:22 -0500
X-Resent-To: mpi-ptop@CS.UTK.EDU ; Tue, 26 Jan 1993 06:23:20 EST
Errors-To: owner-mpi-ptop@CS.UTK.EDU
Received: from gmdzi.gmd.de by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA26396; Tue, 26 Jan 93 06:23:01 -0500
Received: from f1neuman.gmd.de (f1neuman) by gmdzi.gmd.de with SMTP id AA17536
  (5.65c/IDA-1.4.4 for <mpi-ptop@cs.utk.edu>); Tue, 26 Jan 1993 12:22:13 +0100
Received: by f1neuman.gmd.de id AA13867; Tue, 26 Jan 1993 12:21:18 +0100
Date: Tue, 26 Jan 1993 12:21:18 +0100
From: Rolf.Hempel@gmd.de
Message-Id: <9301261121.AA13867@f1neuman.gmd.de>
To: mpi-ptop@cs.utk.edu
Subject: Updated working document
Cc: gmap10@f1neuman.gmd.de


As I promised last week, I have updated the document on process
topologies in MPI. With this mail I send you the PostScript file
which I compressed and then uuencoded. Any corrections/additions
are welcome.

Rolf
------------------------ Cut here --------------------------------------
begin 664 PTOP.ps.Z
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
A"T8"^[ZVP$`A!BA/:`LD%$``1,)\`M$@H;`YZ`L\`4`5
`
end
From owner-mpi-ptop@CS.UTK.EDU  Wed Jan 27 05:38:43 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA09209; Wed, 27 Jan 93 05:38:43 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA25168; Wed, 27 Jan 93 05:38:24 -0500
X-Resent-To: mpi-ptop@CS.UTK.EDU ; Wed, 27 Jan 1993 05:38:23 EST
Errors-To: owner-mpi-ptop@CS.UTK.EDU
Received: from gmdzi.gmd.de by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA25160; Wed, 27 Jan 93 05:38:18 -0500
Received: from f1neuman.gmd.de (f1neuman) by gmdzi.gmd.de with SMTP id AA16655
  (5.65c/IDA-1.4.4 for <mpi-ptop@cs.utk.edu>); Wed, 27 Jan 1993 11:37:24 +0100
Received: by f1neuman.gmd.de id AA16117; Wed, 27 Jan 1993 11:36:31 +0100
Date: Wed, 27 Jan 1993 11:36:31 +0100
From: Rolf.Hempel@gmd.de
Message-Id: <9301271036.AA16117@f1neuman.gmd.de>
To: mpi-ptop@cs.utk.edu
Subject: working document
Cc: gmap10@f1neuman.gmd.de


In an email which he sent to me directly, Tom Henderson made some
comments on our working document on process topologies. He wrote:

>  In section 4 (Overview...), all routines except MPI_INQGR and
>  MPI_MAKDIM are mentioned.  Is this intentional?  (I'm not objecting,
>  just checking to see if this is what you intended.)  

The omission of MPI_INQGR and MPI_MAKDIM in the overview section was
not intentional, but I didn't try to include all single functions in the
chapter, either. What I had in mind was a more general overview of the
functionality. Since it now turnes out that only two routines are not
referred to explicitely, I think we should add them for the sake of
completeness. Here is my proposal for an addition at the end of the
first paragraph:
-------------------
The function MPI_INQMAP is provided for inquiring about the topology
of a process group, whereas MPI_INQCART and MPI_INQGR return the
size of the process structure and the position of the calling process
in a cartesian or graph topology, respectively.

In a portable program the number of available processors usually is not
known at compile time. In the case of a cartesian topology the function
MPI_MAKDIM helps in setting the numbers of processes per coodinate
direction, depending on the number of processes in the group and
optional constraints which can be specified by the user.
-------------------
Okay?

Tom also found the following mis-spelling:

>  Routine MPI_INQCART is spelled MPI_INQCRT in section 4.  Which is the
>  correct spelling?  

I do not know what the correct spelling is, since the names I used are
only first suggestions, and we still have to discuss them. Of course
they should be consistent, though, so I changed everything to MPI_CART
for now.

Finally, Tom made the following suggestion:

> Would it be a good idea to begin the subcommittee session with a
> combined meeting of the Process Topology and Collective Communications
> subcommittees? Maybe we could all decide exactly what a "group" is.

I think this is a good idea. At the Dallas meeting we already decided
that the two subcommittees should cooperate in the handling of groups.

Rolf
From owner-mpi-ptop@CS.UTK.EDU  Mon Feb  1 12:32:41 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA29157; Mon, 1 Feb 93 12:32:41 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA25164; Mon, 1 Feb 93 12:32:07 -0500
X-Resent-To: mpi-ptop@CS.UTK.EDU ; Mon, 1 Feb 1993 12:32:06 EST
Errors-To: owner-mpi-ptop@CS.UTK.EDU
Received: from super.super.org by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA25155; Mon, 1 Feb 93 12:32:02 -0500
Received: from b125 (b125.super.org) by super.super.org (4.1/SMI-4.1)
	id AA10551; Mon, 1 Feb 93 12:31:59 EST
Received: by b125 (4.1/SMI-4.1)
	id AA09570; Mon, 1 Feb 93 12:31:59 EST
Date: Mon, 1 Feb 93 12:31:59 EST
From: lederman@b125.super.org (Steve Huss-Lederman)
Message-Id: <9302011731.AA09570@b125>
To: mpi-ptop@cs.utk.edu
Subject: comments

Well, I've finally had a chance to read over all the topology
subcommittee mail and look over Rolf's latest draft of 1/26/93.  Some
of what follows is small details, but I thought I would send it to
everyone because you can just skip it over.  Also, the volume of mail
isn't yet overloading my disk space :-).

The question has been discussed about how to deal with two groups with
the same membership but different topologies.  A few thoughts.  I
think a useful aspect of Marc's proposal is the relating of processes
between the groups.  I see no conflict here with Rolf's proposal to
optimally map each group.  The thing I don't yet see how to do this
with the proposed functions.  For example, you can use MPI_CART to
define a 2D grid of a group and then use it again on a different group
with the same members to define a 3D torus.  Then, MPI_INQPID can be
used to get the PID of the logical (x,y) coordinate for the 2D grid or
(x,y,z) for the 3D torus.  But suppose you need to talk between these
two topologies.  For example, if you wanted to take your 3D torus
which has a 3D tensor and project it onto the 2D grid so the indices
aligned.  One alternative is that you have to use MPI_PARTC to create
the 2D grid from the 3D torus.  This then raises the issue of how they
are related.  I don't see anything in the standard that says how this
is done.  Will the group ordering stay the same?  For example, if a
node has logical process (3,3) in a 2D grid and you MPI_PARTC it into
rows and columns, will the third member of each group still have what
was logical process (3,3).  Am I making sense?  A second alternative
is to figure out the mapping between topologies.  The way I would do
that with the current definition would be to get the PID for one
topology and search all the PIDs in the other to figure out which was
the same.  Is this the easiest way?  If it is, part of what Marc was
suggesting may have been an easier way to get at this.  I think it
would be useful to allow the user a way to relate the different
topologies.  This also relates to the question of doing a collective
communication before and after a topology definition.  If the user
could determine which was the "first" node that received the result of
a summation before and after the topology s/he could relate the two
results.


I have worried some about the definition of trees.  I have talked to a
couple of people here about this issue.  I pass along several points
that were raised.  Trees are more complicated than tori.  If you
restrict yourself to balanced binary trees with 2^n members, then
things are easier, but there are applications (probably the majority)
that want more general features.  A simple example of the problem is
that if the tree is not balanced. Determining if an logical
address in the tree actually exists requires in depth knowledge of the
tree and not just a couple of values as in a torus.  There are also
applications where the parent has more than 2 children.  Another
attribute of algorithms that use trees is that they often change the
number of members and the depth.  They often add children (leaves) and
after doing this enough need to re-balance the tree because some some
nodes will have too much work.  This raises the issue of the cost of
adding members to a tree whereas a torus generally has a fixed size
for the execution of the code (or does not change frequently).  There
are published algorithms for embedding a tree in another graph (such
as linear, etc.) and they are much better than random.  What does all
this mean?  Trees are used, can be mapped intelligently but are more
difficult than tori.  I think they have merit but I do not have the
expertise to propose a standard.  Does anyone else think they do?  If
not, I would propose we either solicit help to do this or let it go to
be dealt with as a potential add on feature later.


As a general comment, I think the error return codes for the routines
could be more informative.  For example, MPI_CART could return:

-1: Sum(dim(i)) > # proc in group
-2: period specification illegal
-99: other error

Do people think that multiple error codes that specify the type of
error more specifically are useful?  I am will to take a first shot at
the other routines if we agree to this idea.


Now some details about the draft:

p. 2, par. 6: 
There is no need for opening a channel explicitly.  
I would change this to: 
There is no requirement for opening a channel explicitly.
(I would do this because channels might become part of the standard.)

p. 3, top:
On the other hand, a more precise specification....
I would change this to:
Additionally, a more precise specification....
The sentence before implies weights are unnecessary in practice and
this sentence implies they add complexity.  The "On the other hand"
implies to me they are opposites but I think they imply the same
thing: don't have weights.

p. 3, first complete paragraph:
I would something like:
Also, the mapping of grids and tori is generally an easier problem
then that of general graphs.  Thus, it is desirable to do the
mapping as grids and tori rather than obscuring the information in a
graph. 

p. 5, top:
Add something like:
For example, the exchange subroutine might contain
MPI_SEND(...,neigh_pid(1),...) to send to (i-1,j).
(We can be more precise when MPI_SEND is finished).

p. 6, fig. 1:
I think it would be good style to check for error return codes on all
of the MPI calls.  Also, it might be slightly clearer to replace the
value 4 with a parameter.

p. 9, MPI_CART: I would make the hypercube discussion more explicit.
change:
 Note that a hypercube is a torus with 2 processes per
coordinate direction 
to 
Note that a n-dimension hypercube is a torus with 2 processes per
coordinate direction and MPI_PER.  Thus, ndim=n, dims(1:n)=2 and
period(1:n)=MPI_PER.


p. 13: MPI_INQMAP
In spirit with the rest of the document and MPI, the routine should
return "symbolic" values instead of specific integers.  Thus,

MPI_NOMAP: no mapping
MPI_CARTMAP: cartesian map
MPI_GRAPHMAP: graph mapping
MPI_ERRORMAP: error occurred

These, of course, would actually be integer values that are defined by
the system.

p. 15, MPI_INQGR
The value returned is from 1 to nodes.  It seems that lots of other
places in MPI it is zero up numbering.  Should we switch to 0 to
nodes-1?


Wow...What a lot to say.  I probably owe everyone a beer in Dallas who
actually read all the way to here :-)

Steve
From owner-mpi-ptop@CS.UTK.EDU  Mon Feb  1 13:26:29 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA29899; Mon, 1 Feb 93 13:26:29 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA28026; Mon, 1 Feb 93 13:26:10 -0500
X-Resent-To: mpi-ptop@CS.UTK.EDU ; Mon, 1 Feb 1993 13:26:09 EST
Errors-To: owner-mpi-ptop@CS.UTK.EDU
Received: from fslg8.fsl.noaa.gov by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA28018; Mon, 1 Feb 93 13:26:07 -0500
Received: by fslg8.fsl.noaa.gov (5.57/Ultrix3.0-C)
	id AA25619; Mon, 1 Feb 93 18:26:04 GMT
Received: by macaw.fsl.noaa.gov (4.1/SMI-4.1)
	id AA00489; Mon, 1 Feb 93 11:24:59 MST
Date: Mon, 1 Feb 93 11:24:59 MST
From: hender@macaw.fsl.noaa.gov (Tom Henderson)
Message-Id: <9302011824.AA00489@macaw.fsl.noaa.gov>
To: mpi-ptop@cs.utk.edu
Subject: comments on Steve's comments


Here's my two-cents worth of comments on Steve's (probably at least 35 cents 
worth of) comments...    

> I think they have merit but I do not have the
> expertise to propose a standard.  Does anyone else think they do?  If
> not, I would propose we either solicit help to do this or let it go to
> be dealt with as a potential add on feature later.

I agree.  I certainly don't have this expertise.  

> As a general comment, I think the error return codes for the routines
> could be more informative.  For example, MPI_CART could return:
> 
> -1: Sum(dim(i)) > # proc in group
> -2: period specification illegal
> -99: other error
> 
> Do people think that multiple error codes that specify the type of
> error more specifically are useful?  I am will to take a first shot at
> the other routines if we agree to this idea.

Yes!  The more detailed error codes are, the better chance I'll have at 
finding my stupid errors.  Also, error codes should be symbolic (as Steve 
mentions later).  

> 
> Wow...What a lot to say.  I probably owe everyone a beer in Dallas who
> actually read all the way to here :-)
> 
> Steve
> 

Yup, I read it all!  Are you serious about this beer thing?  :)

Tom

From owner-mpi-ptop@CS.UTK.EDU  Tue Feb  2 10:20:12 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA20600; Tue, 2 Feb 93 10:20:12 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA21021; Tue, 2 Feb 93 10:19:46 -0500
X-Resent-To: mpi-ptop@CS.UTK.EDU ; Tue, 2 Feb 1993 10:19:45 EST
Errors-To: owner-mpi-ptop@CS.UTK.EDU
Received: from gmdzi.gmd.de by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA21013; Tue, 2 Feb 93 10:19:37 -0500
Received: from f1neuman.gmd.de (f1neuman) by gmdzi.gmd.de with SMTP id AA01293
  (5.65c/IDA-1.4.4 for <mpi-ptop@cs.utk.edu>); Tue, 2 Feb 1993 16:18:14 +0100
Received: by f1neuman.gmd.de id AA11127; Tue, 2 Feb 1993 16:17:54 +0100
Date: Tue, 2 Feb 1993 16:17:54 +0100
From: Rolf.Hempel@gmd.de
Message-Id: <9302021517.AA11127@f1neuman.gmd.de>
To: mpi-ptop@cs.utk.edu
Subject: Re: comments
Cc: gmap10@f1neuman.gmd.de



It seems the discussion in our working group got some new impetus
thanks to Steve's mail. I would like to add my comments, but since
the Dollar rate isn't bad these days, they are probably less than
one cent worth.

I start with the easiest topics, and then proceed to the more difficult
ones.

1. I appreciate the corrections to the text. I will work them into
   the working document. Almost the only problem I have is the
   suggestion to check the error codes in the example in figure 1.
   I agree that it would improve the style, but I did it this way
   because everything should fit onto one page. I'll think about it.

2. I wondered why nobody complained about the (1,...,nodes) numbering
   in my graph proposal earlier. We had lots of discussions about this
   in the context of PARMACS. The problem is that a zero up numbering
   for a Fortran programmer is at least as ugly as the 1 up numbering
   is for a C programmer. If we want to keep compatibility of the
   Fortran and C versions of MPI on a subroutine basis, we cannot
   please everybody. In PARMACS we ended up with thinking that the
   C programmers tend to be more flexible, so they can take the burdon.
   Any suggestions?

3. I agree that more specific error information is required. However,
   this is a more fundamental question for MPI and does not only relate
   to process topologies. A list of possible user errors (inconsistent
   parameters) would certainly be useful, so any suggestions are
   welcome.

4. I have the same problems with trees as Steve has. I know that they
   are used, and that mapping them is fairly well understood. I just
   don't know in which form they would be best suited for the
   applications people. Trees of the most general form are probably
   best covered by the graph functions, anyway (e.g., varying numbers of
   children, to be specified on a node-to-node basis). We need much
   more information from applications people before we can
   s t a n d a r d i z e   this stuff. Perhaps we should leave this
   as an open issue for a future MPI-2, and just mark it as such in
   the document.

5. I now come to the most difficult point: the alignment of topologies.
   I first would like to comment on Steve's examples. If a group is
   assigned a 3D grid topology which is overlaid by a 2D grid, then the
   latter is not necessarily a projection of the former. This is
   because the 2D grid can have as many nodes as the whole 3D one,
   and not as many as a face of it. Let's take an example: the group
   has 64 processes, the 3D grid is of size (4,4,4), and the 2D grid
   could be of size(4,16). Of course one could set the size of the 2D
   grid also to (4,4) which would mean most processes are not
   represented.
     Such a projection could then be constructed by using MPI_PARTC. 
   Steve's example contains a misunderstanding here: if a 2D grid (4,4)
   is split into columns (4), then only the third column contains
   the process which is (3,3) in the 2D structure. The third elements
   in the other subgroups are (3,1), (3,2), and (3,4).
     We have to be very precise in what we mean with topology
   alignment. If we just want to be able to communicate
   between the two topologies, then MPI_INQPID is sufficient. Any
   process in the 2D grid can look up the pids of processes in the
   3D grid by specifying its group id and the 3D process coordinates.
   As I understood Marc, however, he wanted much more than that:
   he wants to be able to specify that the process (3,2) in the 2D
   grid is the same as (4,2,3) in the 3D grid. In this situation you
   can only do the mapping optimally for one topology, and construct
   the other one as a kind of indirection into the first one. The
   alternative would be to specify both topologies and their alignment
   at once, and try to optimize the mapping under all these constraints.
   Do others think that this is what Marc had in mind?

6. I just want to say that I read all of Steve's message very
   carefully. If the word spreads about this beer thing, I guess
   this one will become the message read by most people in the whole
   MPI effort.

Cheers,
 Rolf
From owner-mpi-ptop@CS.UTK.EDU  Tue Feb  2 13:58:35 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA25972; Tue, 2 Feb 93 13:58:35 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA02369; Tue, 2 Feb 93 13:58:11 -0500
X-Resent-To: mpi-ptop@CS.UTK.EDU ; Tue, 2 Feb 1993 13:58:11 EST
Errors-To: owner-mpi-ptop@CS.UTK.EDU
Received: from super.super.org by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA02361; Tue, 2 Feb 93 13:58:09 -0500
Received: from b125 (b125.super.org) by super.super.org (4.1/SMI-4.1)
	id AA01734; Tue, 2 Feb 93 13:58:08 EST
Received: by b125 (4.1/SMI-4.1)
	id AA09873; Tue, 2 Feb 93 13:58:07 EST
Date: Tue, 2 Feb 93 13:58:07 EST
From: lederman@b125.super.org (Steve Huss-Lederman)
Message-Id: <9302021858.AA09873@b125>
To: mpi-ptop@cs.utk.edu
In-Reply-To: Rolf.Hempel@gmd.de's message of Tue, 2 Feb 1993 16:17:54 +0100 <9302021517.AA11127@f1neuman.gmd.de>
Subject: comments

Well, while we are on a roll....

A few thoughts on Rolf's message:

1. Ah, practical details, ugh!  Even a simple note that checks and
comments were limited for space would seem fine to me.

2. I think we should ask the full committee what MPI is going to do
about numbering so everyone is consistent.  After we settle this one
we can go on to religon :-)

3. I'll think some more about what error code I would want to see.

4. Leaving trees for MPI-2 is ok. Would we dare risk posting to
comp.parallel (or other appropriate newsgroup) and ask for help?  I am
willing to send out such a message to state MPI topology goal and say
we would like ideas/help from others.  We risk opening the flood gates,
but I suspect we will not get much response.  What do you think?

5. I'm sorry my note was somewhat confusing.  I agree with Rolf that
only the third row/column contains (3,3).  What I was wondering is whether
we are going to require that the third PID in the row/column is on the
same processor that had PID for (3,3).  I brought up this one since I
thought (at least at first) that it was a simplier case of different
topologies being alligned.  I agree that this is a difficult and
potentially confusing topic.  My guess is that Marc at least wanted a
mapping between the topologies though one of the topologies may a poor
layout because the other has a good one.  This also raises the issue
of whether a group can have two topologies.  We had better hash
though this one in more details.  I'm open to any ideas?

6. So far only two people have said they acually read this.  Thus, you
may yet get that free beer, but many more and my vacation fund is
gone :-)

Steve
From owner-mpi-ptop@CS.UTK.EDU  Fri Feb  5 15:59:44 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA12320; Fri, 5 Feb 93 15:59:44 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA27071; Fri, 5 Feb 93 15:58:58 -0500
X-Resent-To: mpi-ptop@CS.UTK.EDU ; Fri, 5 Feb 1993 15:58:55 EST
Errors-To: owner-mpi-ptop@CS.UTK.EDU
Received: from super.super.org by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA27061; Fri, 5 Feb 93 15:58:52 -0500
Received: from b125 (b125.super.org) by super (4.1/SMI-4.1)
	id AA07077; Fri, 5 Feb 93 15:58:49 EST
Received: by b125 (4.1/SMI-4.1)
	id AA10426; Fri, 5 Feb 93 15:58:48 EST
Date: Fri, 5 Feb 93 15:58:48 EST
From: lederman@b125.super.org (Steve Huss-Lederman)
Message-Id: <9302052058.AA10426@b125>
To: mpi-ptop@cs.utk.edu

Since I have heard no objections (and one private mail support) about
posting to the net, I propose the below posting.  I had mixed feelings
about whether to have people send their responses to me or to the
whole committee.  I said to me for now so that the real junk would not
bother everyone.  I'm open to suggestion about this and anything else
in the posting.  I will post this message Tuesday morning unless I
hear that people think it is a problem.  You can also tell me you
think it is ok if you want to help my ego :-).

Steve
**********************************************************************
to: comp.parallel
subject: topologies and MPI
----------------------------------------------------------------------
The Message Passing Interface (MPI) working group is trying to create
a standard for message passing.  In other postings to various
newsgroups, people have been invited to become involved and the
proceeding of the meetings have been posted.  The process topology
subcommittee is attempting to define the part of the standard
concerning how a user can specify the topology of her/his algorithm.
Each vendor would then deal with trying to intelligently map the
algorithm topology onto their hardware.  So far general tori (of which
hypercubes are a subset) and general graphs have been tentatively
defined.  The question the subcommittee is trying to answer is: are
there other topologies that should be treated?  One area that has been
raised is trees.  However, there are a number of issue that have been
discussed.  Are trees often used?  Are binary trees sufficient?  Do
applications that use trees vary the number of nodes frequently or
does the tree stay relatively stable?  Other issues?

We are seeking input on the utility of trees and what characteristics
users would like to see.  We would also welcome any suggestions people
have for other topologies and general comments.  Please send your
comments to me (lederman@super.org) and I will make sure they are
passed on to the rest of the committee.

If you are interested in seeing the previous discussions of this
subcommittee, send mail to netlib@ornl.gov and in the mail message
type:
send mpi-ptop from mpi

General information about MPI is avaiable through netlib under:
send mpi-comm from mpi

We thank everyone in the community for their help and support.

Steven Huss-Lederman
lederman@super.org
From owner-mpi-ptop@CS.UTK.EDU  Wed Feb 10 06:46:03 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA12556; Wed, 10 Feb 93 06:46:03 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA28434; Wed, 10 Feb 93 06:45:31 -0500
X-Resent-To: mpi-ptop@CS.UTK.EDU ; Wed, 10 Feb 1993 06:45:28 EST
Errors-To: owner-mpi-ptop@CS.UTK.EDU
Received: from gmdzi.gmd.de by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA28373; Wed, 10 Feb 93 06:45:10 -0500
Received: from f1neuman.gmd.de (f1neuman) by gmdzi.gmd.de with SMTP id AA21176
  (5.65c/IDA-1.4.4 for <mpi-ptop@cs.utk.edu>); Wed, 10 Feb 1993 12:43:29 +0100
Received: by f1neuman.gmd.de id AA14624; Wed, 10 Feb 1993 12:43:01 +0100
Date: Wed, 10 Feb 1993 12:43:01 +0100
From: Rolf.Hempel@gmd.de
Message-Id: <9302101143.AA14624@f1neuman.gmd.de>
To: mpi-ptop@cs.utk.edu
Subject: Trees and MPI document
Cc: gmap10@f1neuman.gmd.de


I'm sorry that I didn't contribute to our discussions for a while,
but I was travelling for some other project. Well, first of all many
thanks to Steve for taking the risk to be bombarded by all that mail
from comp.parallel. Did you get any feedback yet?

It is still unclear to me what we do with the alignment of different
topologies. I would not like to see more than one topology assigned to
the same group. This would not help in defining the alignment, and it
would make things less organized. (I think the 1:1 relation between
topologies and groups is a good feature) I suggest we discuss this
point at the next Dallas meeting.

With this note I send you the latest version of our working document
on process topologies in MPI. As before, this is an uuencoded
compressed PostScript file. I also sent it as a first version of our
contribution to the global MPI document to Steve Otto.

Rolf
------------ uuencoded, compressed PostScript below --------------------
begin 664 ptop.ps.Z
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
6`)X&9@6K`EHAJ\`6<"N4"/8"3P"(!SX[
`
end

From owner-mpi-ptop@CS.UTK.EDU  Fri Feb 12 10:09:41 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA09820; Fri, 12 Feb 93 10:09:41 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA12070; Fri, 12 Feb 93 10:08:59 -0500
X-Resent-To: mpi-ptop@CS.UTK.EDU ; Fri, 12 Feb 1993 10:08:58 EST
Errors-To: owner-mpi-ptop@CS.UTK.EDU
Received: from super.super.org by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA12062; Fri, 12 Feb 93 10:08:52 -0500
Received: from b125 (b125.super.org) by super (4.1/SMI-4.1)
	id AA19655; Fri, 12 Feb 93 10:08:50 EST
Received: by b125 (4.1/SMI-4.1)
	id AA11977; Fri, 12 Feb 93 10:08:49 EST
Date: Fri, 12 Feb 93 10:08:49 EST
From: lederman@b125.super.org (Steve Huss-Lederman)
Message-Id: <9302121508.AA11977@b125>
To: mpi-ptop@cs.utk.edu
Subject: Net responses so far (2)

Well, I haven't been bowled over with responses.  Here are the two so
far.  If more come I'll forward them.  See you all soon in Dallas.

Steve
----------------------------------------------------------------------
Return-Path: <johnn@eiffel.LCS.MIT.EDU>
Date: Wed, 10 Feb 93 18:09:12 -0500
From: johnn@eiffel.LCS.MIT.EDU (John Nguyen)
To: lederman@super.org
Subject: topologies


Some of us here at the Computer Architecture Group at MIT have been
working on topologies that span 3 dimensions, but have lower number of
neighbors than the 6-neighbor cartesian mesh.  Our most notable result
so far is one based on the 4-neighbor diamond (or tetrahedral)
lattice.  I can send you a draft of a working paper if you're
interested.

John Nguyen
johnn@lcs.mit.edu

----------------------------------------------------------------------
Return-Path: <suhler%xanthus.usc.edu@usc.edu>
From: suhler%xanthus.usc.edu@usc.edu (Paul A. Suhler)
Subject: Tree Structures
To: lederman@super.org
Date: Wed, 10 Feb 93 13:29:35 PST
X-Mailer: ELM [version 2.3 PL5]

You might want to look into the X-Tree work by Despain, Patterson,
and Sequin at UC Berkeley in the late 70s.  The initial paper was in
the 1978 Intl. Symposium on Computer Architecture, pg. 144+.

Despain and I published some traffic studies in the 1979 Summer
Computer Simulation Conference.  I graduated in '78 and lost track of
the work after that.  I know that no complete system was ever built.

Good luck,

Paul Suhler

----------------------------------------------------------------------
From owner-mpi-ptop@CS.UTK.EDU  Tue Feb 16 08:48:29 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA18685; Tue, 16 Feb 93 08:48:29 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA20450; Tue, 16 Feb 93 08:48:02 -0500
X-Resent-To: mpi-ptop@CS.UTK.EDU ; Tue, 16 Feb 1993 08:48:00 EST
Errors-To: owner-mpi-ptop@CS.UTK.EDU
Received: from super.super.org by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA20436; Tue, 16 Feb 93 08:47:58 -0500
Received: from b125 (b125.super.org) by super.super.org (4.1/SMI-4.1)
	id AA21547; Tue, 16 Feb 93 08:47:55 EST
Received: by b125 (4.1/SMI-4.1)
	id AA12885; Tue, 16 Feb 93 08:47:55 EST
Date: Tue, 16 Feb 93 08:47:55 EST
From: lederman@b125.super.org (Steve Huss-Lederman)
Message-Id: <9302161347.AA12885@b125>
To: mpi-ptop@cs.utk.edu
Subject: 2 more net responses

Return-Path: <@kakwa.ucs.ualberta.ca:myrias.ab.ca!bhl@myrias>
Date: 	Fri, 12 Feb 1993 16:11:37 -0700
From: bhl@myrias.ab.ca (Brian Lake)
To: lederman@super.org
Subject: mpp topology request

Steven,
 I haven't read the info about mpi that you suggested, but I thought
I'd give you some comments in case I forget to later. If this response
is way off, please accept my apologies.

At Myrias, we describe interconnect in a fairly simple fashion,
and it revolves around a hierarchy of different fanouts. Our last
generation of hardware had 4 processors on a board with their own
interconnect. 16 boards would get collected in a box (cage). The cages
were interconnected with user switchable cables, so one could
connect say 8 cages into two clusters of 4, or whatever. 

It is important that our OS understand the interconnect topology, so
we can optimize the usage of the network and do caching at the right
levels, etc.

A regular interconnect like this is quite easy for a computer to deal
with, and the 'cost' of communications between two nodes is a function
of the depth of the tree you traverse. 

Let me know if you wish to hear more.
Brian
-----
Brian Lake
Myrias Computer Technologies Inc.
8522 Davies Road, Edmonton, Alberta, Canada.  T6E 4Y5
Tel 403-463-1337 Fax 403-465-0130 Email bhl@myrias.ab.ca





Return-Path: <dhd@exnet.co.uk>
Date: Sat, 13 Feb 1993 13:09:36 GMT
From: Damon <d@exnet.co.uk>
To: b125!lederman@super.super.org
Subject: Re: topologies and MPI
Newsgroups: comp.parallel
In-Reply-To: <1993Feb10.123714.24760@hubcap.clemson.edu>
Organization: ExNet Systems Ltd Public Access News, London, UK
Cc: pgram@exnet.co.uk

In article <1993Feb10.123714.24760@hubcap.clemson.edu> you write:
>The Message Passing Interface (MPI) working group is trying to create
>a standard for message passing.  In other postings to various
>newsgroups, people have been invited to become involved and the

Would you like to write a letter to the Editor or Parallelogram (me!)
about this?  I think that a lot of the potential paticipants in this
effort do not read USENET, or at least not much.  If you want to direct
a version of this to me I'll put it on our letters page.  If you can do
this in the next few days I'll get it in this month's issue, space
permitting.

I think you might just catch that slice of people who read more paper
than USENET.  B^>

Damon, Editor
PgramEd@exnet.co.uk

From owner-mpi-ptop@CS.UTK.EDU  Tue Mar  9 05:57:27 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA16057; Tue, 9 Mar 93 05:57:27 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA23618; Tue, 9 Mar 93 05:55:57 -0500
X-Resent-To: mpi-ptop@CS.UTK.EDU ; Tue, 9 Mar 1993 05:55:56 EST
Errors-To: owner-mpi-ptop@CS.UTK.EDU
Received: from gmdzi.gmd.de by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA23610; Tue, 9 Mar 93 05:55:53 -0500
Received: from f1neuman.gmd.de (f1neuman) by gmdzi.gmd.de with SMTP id AA22780
  (5.65c/IDA-1.4.4 for <mpi-ptop@cs.utk.edu>); Tue, 9 Mar 1993 11:54:23 +0100
Received: by f1neuman.gmd.de id AA17533; Tue, 9 Mar 1993 11:55:45 GMT
Date: Tue, 9 Mar 1993 11:55:45 GMT
From: Rolf.Hempel@gmd.de
Message-Id: <9303091155.AA17533@f1neuman.gmd.de>
To: mpi-ptop@cs.utk.edu
Subject: forwarded mail from Lyndon Clarke
Cc: gmap10@f1neuman.gmd.de


Dear PTOP Subcommittee members,

I found a mail from Lyndon Clarke in my mailbox. Since he is not a
member of our subcommittee, he asked me to forward it to you.

Best Regards,
 Rolf
----------------------------- forwarded mail ---------------------------

Dear process topology subcommittee members

It seems to me that from a practical point of view process topologies
can only provide support for a small number of special topologies.  The
subcommittee is currently planning one special topology, cartesian
structures.  This is a good choice, because lots of programs can make
use of it, and lots of programmers can undserstand it also. 

I also seems to me that process topologies should provide some general
purpose capability, so that the user with some other topology can hope
to get some help from MPI.  The subcommittee is currently planning a
general purpose topology, graph structures.  These are specified by
neighbour lists.  This is also a good choice, and I can immediately
think of a few topologies which this might get used for. 

The problem I have is that there appears to be a striking inconsistency,
in the working document.  I shall explain.  Please send you comments to
me personally as well, as I am not in this subcommittee.  I am
lyndon@epcc.edinburgh.ac.uk for email purposes. 

Now I try to explain.  In the first place as discussed at the meeting
the capability of process topologies in MPI is that it can map the
coordinate space of a topology into an existing set of processes which
are already placed on processors.  The intention is that the system is
made able to implelment mapping optimisations, if this should be
possible, from which the user will benefit. 

In the general GRAPH structure the user constructs a neighbour list. 
One can immediately imagine that this is constructed by a rule - such as
a butterfly topology.  Then is it apparent that the user has defined
computable (I did type arithmetic first time!) relations between indices
in the index space of the topology.  For example, the third neighbour of
process 9 is process 13 in a hypercube, which is calculated as 9 ^ (3 -
1).  The point is that the used defines the relations which exist within
the index space.  The system maps the index space onto processes.  Given
the index of a process, there is a well defined way of determining the
indices of neighbour processes.  The user then find from the system it's
position in the index space, and immediately knows the indices of its
neighbours. 

In the case of special topologies which are expressible by the user to
MPI in a more compact form, consistency with general topologies requires
that MPI *defines* the neighbour relations between indices within the
index space and positions of indices within the topology.  For example,
in a 2D (M,N) grid the process topology section of MPI should define
that the coordinate of index I within the grid is given by (and I'm
using C style indexes starting at zero here to make the expression
simpler) (I%M, I/M) (or it may be the other way around :-).  In the
description of the CARTesian topology this is not defined.  I expect
that you mean it to be, perhaps you thought it was obviously the case. 

Please note that I do not mean to say that the user *must* explicitly
calculate neighbours in this way, and of course there is much sense in
providing (special topology specific?) procedures or macros which do the
calculations.  I am just saying that for consistency MPI *should* define
the neighbour relations within the index space.  For example, in a
cartesion structure to calculate the neighbour of a process at a given
displcament (dx,dy,dz) is a calculation which is easily defined but if
the user spreads it over her code and makes just one typo or error in
cut-and-paste style programming (typical of some fortran programmers I
know) then s/he will have difficulty, so for his/her convenience the
process topology section of MPI provides a routine to do the
calculation. 

Please, if you agree with this, or disagree, then I am most interested
to hear your opinion, so CC: you email to lyndon@epcc.edinburgh.ac.uk

Best Wishes
Lyndon

-----------------------------------------------------------------------

         /--------------------------------------------------------\
    e||) | Lyndon J Clarke    Edinburgh Parallel Computing Centre | e||) 
    c||c | Tel: 031 650 5021  Email: lyndon@epcc.edinburgh.ac.uk  | c||c 
         \--------------------------------------------------------/
From owner-mpi-ptop@CS.UTK.EDU  Tue Mar  9 09:23:00 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA05803; Tue, 9 Mar 93 09:23:00 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA06876; Tue, 9 Mar 93 09:22:24 -0500
X-Resent-To: mpi-ptop@CS.UTK.EDU ; Tue, 9 Mar 1993 09:22:22 EST
Errors-To: owner-mpi-ptop@CS.UTK.EDU
Received: from sampson.ccsf.caltech.edu by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA06868; Tue, 9 Mar 93 09:22:20 -0500
Received: from elephant by sampson.ccsf.caltech.edu with SMTP id AA26746
  (5.65c/IDA-1.4.4 for mpi-ptop@cs.utk.edu); Tue, 9 Mar 1993 06:21:46 -0800
Received: from lion.parasoft by elephant (4.1/SMI-4.1)
	id AA10427; Tue, 9 Mar 93 06:14:31 PST
Received: by lion.parasoft (4.1/SMI-4.1)
	id AA21439; Tue, 9 Mar 93 06:14:36 PST
Date: Tue, 9 Mar 93 06:14:36 PST
From: jwf@lion.Parasoft.COM (Jon Flower)
Message-Id: <9303091414.AA21439@lion.parasoft>
To: lyndon@epcc.edinburgh.ac.uk, mpi-ptop@cs.utk.edu
Subject: Topologies & neighbors.


I've now read Lyndon's mail twice and although it's very early in
the morning here I find that I can't really understand the dificulty.

My impression is that the MPI topology computations "don't" specify
the neighbor computations in any way but provide functions that
return to the user the (opaque) processor identifiers used for
neighboring nodes........ for the cartesian case.

Ah.... maybe I see??? Is Lyndon's argument that this is different
in the graph case, cos I suppose it is. In that case the user gives
the ranking in their arbitrarily numbered tree ... but then what do
they use for opaque id's? I guess the tree enquiry function can
still return opaque id's for the nodes but is it obvious that
relationships like parent and child(ren) don't get lost on the
translation..... I suppose you could arrange that they don't.

Hmm. Still not sure I understand. However, my feeling as we head
down the slippery track towards opaque id's is that the topology
stuff becomes clearer becauses to get anywhere at all with opaque
beasts you're going to need someone to tell you what they are for
the processors who you wish to communicate with .... and the only
thing you're realistically going to know about your target is its
rank in some real or imagined group. Then you ask the topology 
call to tell you who that node is.

If I've missed the point entirely, Lyndon, I apologise and please
try to clarify for me!!

	Jon
From owner-mpi-ptop@CS.UTK.EDU  Tue Mar  9 09:39:15 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA06237; Tue, 9 Mar 93 09:39:15 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA07677; Tue, 9 Mar 93 09:38:39 -0500
X-Resent-To: mpi-ptop@CS.UTK.EDU ; Tue, 9 Mar 1993 09:38:38 EST
Errors-To: owner-mpi-ptop@CS.UTK.EDU
Received: from gmdzi.gmd.de by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA07669; Tue, 9 Mar 93 09:38:35 -0500
Received: from f1neuman.gmd.de (f1neuman) by gmdzi.gmd.de with SMTP id AA12565
  (5.65c/IDA-1.4.4 for <mpi-ptop@cs.utk.edu>); Tue, 9 Mar 1993 15:37:06 +0100
Received: by f1neuman.gmd.de id AA16778; Tue, 9 Mar 1993 15:38:29 GMT
Date: Tue, 9 Mar 1993 15:38:29 GMT
From: Rolf.Hempel@gmd.de
Message-Id: <9303091538.AA16778@f1neuman.gmd.de>
To: mpi-ptop@cs.utk.edu
Subject: Lyndon's proposal
Cc: gmap10@f1neuman.gmd.de, lyndon@epcc.edinburgh.ac.uk


earlier today I forwarded you a note from Lyndon Clarke in which he
discusses an inconsistency in the treatment of simple geometries
like grids as compared to the more general graph structure.

I assume that Lyndon does not have problems with the general graph
definitions. There you have an enumeration which he calls the
index space. The user can do arithmetic on the indices if he likes.
In my view this enumeration of all processes in the graph is simply
there because there is no other obvious naming of positions in the
graph.

I do not see, however, why the user wants to have a similar indexing
in the cases for which we supply the special functions (rings, grids,
tori). There the most natural way of indexing is the multidimensional
coodinates, for example (i,j,k) in a three-dimensional grid. What does
the user gain if he knows that this process is number ((k*ny+j)*nx+i)
in a linear ordering? All the lookup-functions which are provided
together with grids/tori don't use linear ordering, but they refer to
the grid coordinates. For example, if a process is (i,j,k), then
his upper x-neighbor is (i+1,j,k).

I would tend to see more room for additions in the general graph
case. One reasonable addition seems to me a lookup function which
returns the index list of neighbors of the calling process. Such a
thing would be useful for library writers who work on graph
structures which have been set up by the user before calling the
library.

Rolf
From owner-mpi-ptop@CS.UTK.EDU  Wed Mar 10 07:51:58 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA28067; Wed, 10 Mar 93 07:51:58 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA10346; Wed, 10 Mar 93 07:51:14 -0500
X-Resent-To: mpi-ptop@CS.UTK.EDU ; Wed, 10 Mar 1993 07:51:13 EST
Errors-To: owner-mpi-ptop@CS.UTK.EDU
Received: from gmdzi.gmd.de by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA10311; Wed, 10 Mar 93 07:50:48 -0500
Received: from f1neuman.gmd.de (f1neuman) by gmdzi.gmd.de with SMTP id AA08118
  (5.65c/IDA-1.4.4 for <mpi-ptop@cs.utk.edu>); Wed, 10 Mar 1993 08:36:34 +0100
Received: by f1neuman.gmd.de id AA15791; Wed, 10 Mar 1993 08:37:57 GMT
Date: Wed, 10 Mar 1993 08:37:57 GMT
From: Rolf.Hempel@gmd.de
Message-Id: <9303100837.AA15791@f1neuman.gmd.de>
To: mpi-ptop@cs.utk.edu
Subject: mail from Lyndon Clarke
Cc: gmap10@f1neuman.gmd.de


With this note I send you another mail from Lyndon Clarke which
I received yesterday evening. I really think he should join our
mailing list.

Rolf
------------------------- included message below -----------------------
From root Tue Mar  9 16:32:00 1993
Received: by f1neuman.gmd.de id AA12221; Tue, 9 Mar 1993 16:31:57 GMT
Received: from sun2.nsfnet-relay.ac.uk by gmdzi.gmd.de with SMTP id AA15110
  (5.65c/IDA-1.4.4 for <rolf.hempel@gmd.de>); Tue, 9 Mar 1993 16:29:56 +0100
Via: uk.ac.edinburgh.castle; Tue, 9 Mar 1993 15:17:08 +0000
Received: from epcc.ed.ac.uk by castle.ed.ac.uk id aa12023; 9 Mar 93 15:16 WET
Received: from subnode.epcc.ed.ac.uk (onyx.epcc.ed.ac.uk) by epcc.ed.ac.uk;
          Tue, 9 Mar 93 15:16:20 GMT
Date: Tue, 9 Mar 93 15:16:18 GMT
Message-Id: <2102.9303091516@subnode.epcc.ed.ac.uk>
From: L J Clarke <lyndon@epcc.edinburgh.ac.uk>
Subject: Re: Topologies & neighbors.
To: Jon Flower <jwf@lion.parasoft.com>, rolf.hempel@gmd.de
In-Reply-To: Jon Flower's message of Tue, 9 Mar 93 06:14:36 PST
Reply-To: lyndon@epcc.edinburgh.ac.uk
Status: RO

Hi John, Rolf

Perhaps there is a little more subtlety to this point than I had at
first supposed.  So I shall have to go slowly (I thought I had). 

----------------------------------------------------------------------

Hi there

This a reply to John's and Rolf's replies. My thanks to Rolf for
fowarding it to the subcommittee mail list.

The first point is that perhaps I should join this subcommittee.  Please
can either of you - suggest Rolf - forward this to the subcommittee on
my behalf again. 

The second point is that I think it is unwise for process topologies to
talk of returning a opaque task (or process) identifier from the enquiry
functions, as this presupposes the decision of the point-to-point
subcommittee which is clearly not yet made.  I seems more prudent for
the process topologies to say that those procedures which return task
(or process) identification to the user will return them "in the form
appropraie for use in the point-to-point communication routines".  The
process topologies committee can globally substitute the actual form
when the point-to-point committee have made a firm and binding decision. 
[Personally, I strongly suspect that point-to-point will yet make that
decision in favour of rank within group, rather than opaque identifier.]

The third point is that I think it most prudent that process topologies
include a general graph mapping facility, as indeed you are sensibly
doing. The specification in terms of an adjacency list make sense.

The fourth point is that it seems to me that there are one or more
special topologies for which there is a well understood pattern of usage
and there is advantage in process topologies dealing with these in
addition to the general graph.  One such topology is the cartesian
structures which you are including into process topologies, which I
applaude. 

The fifth point is that from the point of view of formal specification I
believe there is advantage in being able to describe the special
topologies in terms of the general graph structure.  [Of course, in an
implementation we would expect that simpler and better mapping
algorithms known for cartesian structures would be used, but that is not
the point here and is irrelevant to this point.]

The sixth point is that we should expect the general graph to be used
for structures other than trees! (For example: Butterfly,
shuffle-exchange, de Brujn ...)

The seventh point is that the general graph being specified by the user
in terms of process ranks within the group of processes which are
vertices in the graph, seems to presuppose that the user can compute the
ranks of neighbours of a process given its rank.  This seems an entirely
reasonable presupposition.  [The "rank within group" is a convenient
abstract labelling of processes.  One could have chosen textual names,
but the rank allows computations.]

The eigth point is that in the cases of special topologies for which MPI
provides special creation procedures it is reasonable for MPI to
provide, and convenient for the user to use, procedures which will
return the neighbour identifier "in the form appropraie for use in the
point-to-point communication routines".

The ninth point is that consistency between the definition of process
structures in the general graph case and in the cases of special
topologies, and morevoer the ability to formally define the special
topologies in terms of the general graph, suggests that the process
topologies section of MPI should define the computation which given the
rank of the process returns its neighbours.  [Of course, we would expect
the user to observe good programming practice and make use of the
procedures provided for such computations, but that is not the point
here and is irrelevant to this point.]

I hope this is clearer than before.

Best Wishes
Lyndon

----------------------------------------------------------------------


         /--------------------------------------------------------\
    e||) | Lyndon J Clarke    Edinburgh Parallel Computing Centre | e||) 
    c||c | Tel: 031 650 5021  Email: lyndon@epcc.edinburgh.ac.uk  | c||c 
         \--------------------------------------------------------/
From owner-mpi-ptop@CS.UTK.EDU  Wed Mar 10 08:12:06 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA28499; Wed, 10 Mar 93 08:12:06 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA10954; Wed, 10 Mar 93 08:10:15 -0500
X-Resent-To: mpi-ptop@CS.UTK.EDU ; Wed, 10 Mar 1993 08:10:14 EST
Errors-To: owner-mpi-ptop@CS.UTK.EDU
Received: from super.super.org by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA10941; Wed, 10 Mar 93 08:10:12 -0500
Received: from b125.super.org by super.super.org (4.1/SMI-4.1)
	id AA20459; Wed, 10 Mar 93 08:10:10 EST
Received: by b125.super.org (4.1/SMI-4.1)
	id AA01738; Wed, 10 Mar 93 08:10:08 EST
Date: Wed, 10 Mar 93 08:10:08 EST
From: lederman@b125.super.org (Steve Huss-Lederman)
Message-Id: <9303101310.AA01738@b125.super.org>
To: mpi-ptop@cs.utk.edu

Well, once again I have not posted for several weeks after the MPI
meeting.  Let's have a vote: Should we:

1) Do research
2) Do MPI standard
3) Do administrivia
4) Postpone the vote

:-)

Seriously, I have several items from the last meeting that we should
probably decide:

-1-
    Should we allow the user to specify a random mapping when a
topology is set up?  The main argument for this is that you may want a
topology for your algorithm but the communications patterns are not
those that the standard MPI placement algorithm minimizes for.  As an
example, MPI would now implicitly optimize for communicating with your
+/-1 neighbor in each direction of a mesh.  However, your
communication pattern might be for +/-2 in each direction.  On some
machines, the optimization for +/-1 might make the +/-2 communications
worse then if a random mapping was used.
    The one argument I see against this is that MPI may not directly
support these other communications patterns so why should the user
specify a topology.  I don't think this is a strong argument since one
should still be able to specify the topology even if the mapping is
random.
    My current feeling is that the user should be able to specify a
random mapping for the topology of interest.  Thoughts?  Now: what do
we mean by random?

-2-
    When Marc Snir raised this issue the main point I believe he was
trying to make is that you are usually doing a permutation between
nodes when you are communicating and what you care about is minimizing
the time of that communication.  We have implicitly assumed that the
permutation is a shift of one node in the grid.  Is this what we want
to do?  I think allowing the user to specify the permutation would be
great but messy.  For example, the user may wish to minimize
contention when doing a transpose on a 2D mesh.  Any thoughts?

-3-
    I think we need to pin down how we are going to talk between
topologies.  As I now understand it, a topology is its own group.  So
to talk between nodes/processes in two groups requires talking between
two groups.  Is this correct?  I also seem to recall that we are not
going to try and optimize the relationship between two topologies.  Is
this also correct?  If so, does the user have to search the second
group to figure out what node/process to send information to (i.e.,
find the rank of the process of interest in the second group).  Is
that what we intend?  I think we should make it clear and decide if we
want to provide a routine to do this.

-4-
    The question was raised of what happens to extra nodes when a new
topology is created.  For example, if you have 10 nodes and create a
3x3 grid, then one node gets left out.  As I recall, it now simply
gets a different return code.  The question is should the node(s) go
into a second group so they could be manipulated in an easier fashion?

-5-
    The MPI group agreed to zero up numbering.  However, the question
was raised if the grids would be row or column major.  Another thorny
issue :-(  One is FORTRAN oriented the other C.  Some felt it should
depend on the language but this would be tough when they are mixed.  I
personally liked the suggestion that the opaque structure (that great
idea that is not carefully defined yet :-) hold a flag that tells
which choice was used and allow the user to specify at group creation.
What do others think?

Steve
From owner-mpi-ptop@CS.UTK.EDU  Wed Mar 10 09:38:10 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA01079; Wed, 10 Mar 93 09:38:10 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA15108; Wed, 10 Mar 93 09:37:30 -0500
X-Resent-To: mpi-ptop@CS.UTK.EDU ; Wed, 10 Mar 1993 09:37:27 EST
Errors-To: owner-mpi-ptop@CS.UTK.EDU
Received: from gmdzi.gmd.de by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA15078; Wed, 10 Mar 93 09:37:19 -0500
Received: from f1neuman.gmd.de (f1neuman) by gmdzi.gmd.de with SMTP id AA26003
  (5.65c/IDA-1.4.4 for <mpi-ptop@cs.utk.edu>); Wed, 10 Mar 1993 15:35:46 +0100
Received: by f1neuman.gmd.de id AA16743; Wed, 10 Mar 1993 15:37:09 GMT
Date: Wed, 10 Mar 1993 15:37:09 GMT
From: Rolf.Hempel@gmd.de
Message-Id: <9303101537.AA16743@f1neuman.gmd.de>
To: mpi-ptop@cs.utk.edu
Subject: comment on Steve's note
Cc: gmap10@f1neuman.gmd.de


My feeling is that at the moment the whole MPI activity gets more and
more diffuse, and that it's about time to refocus on the short-term
goals of MPI-1. This will also influence the work in our subcommittee,
and we have to restrict ourselves on well-proven concepts.

I appreciate Steve's note since he gives a good summary of the points
which are open at the moment. I would like to comment on them shortly:

1. I'm not convinced that random ordering really helps much. If the
   optimization is done such that +1/-1 communications are most
   efficient, of course there is no guarantee that +2/-2 communication
   is nearly as good. However, I do not see any application where
   the topology is a grid, but the most common communication pattern
   is, say, with distance 2 hops. A more ralistic asumption seems to
   me that there is a mix of different distances, where the nearest
   neighbor communication plays some (perhaps not dominant) role.
   The multigrid example of Oliver McBryan at the Dallas meeting falls
   into that category. Do people expect that random mapping gives you
   any advantage in that case?
     If the majority thinks this is a useful feature, I suggest we
   add a parameter to the topology definition functions for selecting
   a "don't care" mapping. In this case I think it is no big deal which
   random number generator one uses.

2. This permutation kind of specifying communication could be a good
   idea for the Collective Communications subcommittee. However, not all
   communication going on in an application is of this type. Sometimes
   only some nodes in a grid send messages to their neighbors, or the
   communication is not well enough synchronized over the whole grid.
   In such cases collective communication functions are not applicable,
   or they would lead to unnecessary waiting times due to
   synchronization. So, the specification of a permutation function
   cannot replace the topology definition functions which just order
   the processes in a logical way for easy and efficient use of
   pt2pt functions.

3. The inter-group communication is very tricky, but this question 
   has to be dealt with in other subcommittees as well. Is it at all
   possible to communicate between processes which are not in the same
   group? Can group ids be sent in messages? I think that however this
   point will be resolved in the whole committe, the topology functions
   can deal with it. The lookup functions for process ids already now
   contain the group id as the selection criterion for the toplogy.
   The generalization would then be that one can use the lookup
   functions for groups of which the calling process is not a member.

4. Another related point which was raised at the last meeting is what
   happens if a group has 10 procs, but the (3,3) grid only uses 9 of
   them. In the current proposal a topology is assigned to an existing
   group. The alternative would be that a topology always creates two
   new groups, one which exactly comprises the processes of the
   grid/graph, and another group with the remaining procs. This second
   group could be empty, of course. Another call to a topology def
   function could then be used to apply a topology to the rest group.
   What do people think?

5. I don't have any strong feelings about the row/column major ordering
   of processes. Probably the best solution would be to add a selection
   parameter to the definition functions. I think this would be
   completely sufficient.

Rolf
From owner-mpi-ptop@CS.UTK.EDU  Wed Mar 10 10:51:39 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA03065; Wed, 10 Mar 93 10:51:39 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA19284; Wed, 10 Mar 93 10:50:56 -0500
X-Resent-To: mpi-ptop@CS.UTK.EDU ; Wed, 10 Mar 1993 10:50:55 EST
Errors-To: owner-mpi-ptop@CS.UTK.EDU
Received: from fslg8.fsl.noaa.gov by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA19275; Wed, 10 Mar 93 10:50:53 -0500
Received: by fslg8.fsl.noaa.gov (5.57/Ultrix3.0-C)
	id AA26712; Wed, 10 Mar 93 15:50:49 GMT
Received: by macaw.fsl.noaa.gov (4.1/SMI-4.1)
	id AA07653; Wed, 10 Mar 93 08:49:35 MST
Date: Wed, 10 Mar 93 08:49:35 MST
From: hender@macaw.fsl.noaa.gov (Tom Henderson)
Message-Id: <9303101549.AA07653@macaw.fsl.noaa.gov>
To: mpi-ptop@cs.utk.edu
Subject: Re: mail from Lyndon Clarke


> With this note I send you another mail from Lyndon Clarke which
> I received yesterday evening. I really think he should join our
> mailing list.
> 
> Rolf

I agree.  

Tom
From owner-mpi-ptop@CS.UTK.EDU  Fri Mar 12 07:30:35 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA18907; Fri, 12 Mar 93 07:30:35 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA28091; Fri, 12 Mar 93 07:29:52 -0500
X-Resent-To: mpi-ptop@CS.UTK.EDU ; Fri, 12 Mar 1993 07:29:49 EST
Errors-To: owner-mpi-ptop@CS.UTK.EDU
Received: from gmdzi.gmd.de by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA28083; Fri, 12 Mar 93 07:29:34 -0500
Received: from f1neuman.gmd.de (f1neuman) by gmdzi.gmd.de with SMTP id AA02607
  (5.65c/IDA-1.4.4 for <mpi-ptop@cs.utk.edu>); Fri, 12 Mar 1993 13:27:55 +0100
Received: by f1neuman.gmd.de id AA16470; Fri, 12 Mar 1993 13:29:19 GMT
Date: Fri, 12 Mar 1993 13:29:19 GMT
From: Rolf.Hempel@gmd.de
Message-Id: <9303121329.AA16470@f1neuman.gmd.de>
To: mpi-ptop@cs.utk.edu
Subject: IBM paper
Cc: gmap10@f1neuman.gmd.de


Yesterday I got a paper from Howard Ho (IBM Almaden Center) about a
library for the management of grids on top of their EUI library. He
asked me to forward it to this subcommittee. In the following I send
you a copy of my reply to him followed by the PostScript file of his
text. I processed it with compress and uuencode.

Rolf
------------------------------------------------------------------------
From gmap10 Fri Mar 12 13:17:54 1993
Received: by f1neuman.gmd.de id AA16182; Fri, 12 Mar 1993 13:17:54 GMT
Date: Fri, 12 Mar 1993 13:17:54 GMT
From: gmap10
Message-Id: <9303121317.AA16182@f1neuman.gmd.de>
To: ho@almaden.ibm.com
Subject: process topologies
Cc: gmap10
Status: R


Dear Howard,

thanks for sending me your paper on "common group structures". I've
printed it without any difficulty, and today I will forward it to the
MPI subcommittee.

Here are a few comments to your paper which reflect my personal
impression and which are not meant to question the value of your work.

1. Your approach seems to me quite reasonable for the IBM parallel
   machine. Since the optimization of process/processor mapping does not
   gain you much on that system, you can do without it. This is
   different on other machines where a bad mapping may kill all the
   performance. Of course this makes it much easier to implement the CGS
   routines. In a standard, on the other hand, I would not recommend
   this approach because it is too much system dependent.

2. There are different routines for different spatial dimensions. I
   know the pros and cons since we did the same thing in early versions
   of PARMACS. In PARMACS we gave it up because there will always be
   someone who wants a higer dimensional version. If the interface is
   not dimension-specific, then you just extend the implementation.
   Otherwise you have to add a number of new routines.

   You have seen our proposal for the MPI handling of grids/tori.
   Since that is not dimension-specific, it is even possible to
   subsume hypercubes. After all, a hypercube is a grid with two
   processes per coordinate direction, as you correctly state in your
   paper, also.
   
3. In your proposal the creation of a topology assigns each process
   the group ids of its row and column groups. I'm not sure that this
   is sufficient for all applications. Sometimes a process wants to
   communicate with a process which is not a neighbor in one of the
   four cardinal directions. You gave an example for the nine-point
   stencil yourself, and already there it is a little tricky to get
   the ids of the corner-neighbors. Therefore, I prefer general
   look-up routines wich for arbitrary mesh coordinates return the
   identifier of the corresponding process. You can see an interface
   like this in the MPI proposal.

I would like to invite you to join our subcommittee. We certainly
need people with fresh ideas about process topologies.

Best regards,
 Rolf
------------------------------------------------------------------------
begin 664 ho_howard.ps.Z
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
'"`8#3P#Y!R_Q
`
end
From owner-mpi-ptop@CS.UTK.EDU  Tue Mar 16 04:55:14 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA14277; Tue, 16 Mar 93 04:55:14 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA15025; Tue, 16 Mar 93 04:54:46 -0500
X-Resent-To: mpi-ptop@CS.UTK.EDU ; Tue, 16 Mar 1993 04:54:45 EST
Errors-To: owner-mpi-ptop@CS.UTK.EDU
Received: from gmdzi.gmd.de by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA15006; Tue, 16 Mar 93 04:54:01 -0500
Received: from f1neuman.gmd.de (f1neuman) by gmdzi.gmd.de with SMTP id AA13913
  (5.65c/IDA-1.4.4); Tue, 16 Mar 1993 10:52:14 +0100
Received: by f1neuman.gmd.de id AA15815; Tue, 16 Mar 1993 10:53:37 GMT
Date: Tue, 16 Mar 1993 10:53:37 GMT
From: Rolf.Hempel@gmd.de
Message-Id: <9303161053.AA15815@f1neuman.gmd.de>
To: mpi-collcomm@cs.utk.edu, mpi-ptop@cs.utk.edu
Subject: Al's COLLCOMM proposal
Cc: gmap10@f1neuman.gmd.de


I would like to comment on Al's Collective Communications draft which
he sent out a few days ago. First of all, I agree with Al in most
points, especially that we should not attempt to include everything
into MPI-1. Given the limited time available, it seems to me a good
idea to leave the level-1 routines and all dynamic stuff for MPI-2.

In section 2 Al says that "each group has a topology associated with
it". As far as I know this is still an open issue. Do we agree that
there is always a default topology (like a ring, to make the shift
operation meaningful in all cases, or fully connected)? Otherwise a
topology is an optional attribute which a group may or may not have.

Another question then is how this assignment is done. At the last
Dallas meeting we discussed two basic options:
1. A topology is defined after the creation of the group. The topology
   thus is an attribute which is assigned to the group, and which can
   be overwritten without creating a new group.
2. A topology definition always creates a new group (or even two of
   them, the second one being the collection of processes which are not
   used by the topology). The advantage of this choice is that the
   rank of a process within a group never changes. When a group with
   topology is created, the processes can be arranged in the optimal
   way from the very beginning.

Personally, I prefer the second option. One additional advantage is the
following: assume that the original group has 10 processes, and then
a (3,3) grid topology is defined. Does a global operation on this group
include all 10 processes? If the (3,3) grid formation creates a new
subgroup of 9 processes, the answer is clear.

The draft is not consistent in the relationship of groups and
topologies. In the Introduction it says "Giving or forming groups with
topological features is presented in section 4" which suggests option
2. above. On the other hand, under Group Functions it states that
"Existing groups including the ALL group can switch their associated
topology", which sounds like option 1. Do we all agree on choosing
option 2?

On page 2 the draft states that "The collective communication routines
are implemented in terms of the topology associated with a given group.
Although the function would be the same, a broadcast in a group with
a ring topology could be implemented differently from a broadcast in
a group with hypercube topology". I see a confusion of application
and machine topologies here. The optimal implementation of a broadcast
is guided by the machine topology, which could be a hypercube. Even
if the logical group topology is a mesh, the global operation would
follow the hypercube structure. However, this implementation detail
is completely invisible to the user and should not be part of the
standard. The only thing the user sees is the mesh topology and the
result of the broadcast.

The proposed MPI_SHIFT function could be made much more useful by
adding another argument. Here's my proposal:

 Info = MPI_SHIFT(inbuf,outbuf,nitems,type,tag,group,direction,steps)

The additional integer argument "direction" selects the coordinate
direction in the group topology, and "steps" is the number of steps
in that direction. In the case of cartesian structures the meaning is
immediately clear. One could apply the function also in the case of a
general graph. In this case "direction" would specify the neighbor
number. "steps" could either be ignored, or we could define a
transitive scheme of the kind "neighbor of neighbor of neighbor ...",
with the indirection depth being specified by "steps".

A hot topic for further discussions will be the "group names" proposed
by Al. I see his point, but I don't see how the user-supplied group
name solves the problem which arises if a new process wants to join
a group. Even if the user tells MPI the global name of the group,
global knowledge of all groups in the system is required to find the
other group members to talk to. I agree to most points of Rik
Littlefields comments. The only thing which does not convince me yet
is the explicite caching mechanism. If the information caching is
handled consistently between the group management and collective
communication routines (in order to avoid usage of stale group
information), I still hope that it could be done without showing up
at the user interface.

As a last point, I would like to forward the following note by
Tom Henderson:

> Rolf,
> 
> Would it be a good idea to merge the mpi-collcomm and mpi-ptop
> mailing lists? It seems like lots of stuff on that mailing list
> now is closely related to process topology. I suppose the
> mpi-collcomm stuff could just be forwarded to the mpi-ptop list.  
> 
> Tom

I agree. What do others think?

Rolf
From owner-mpi-ptop@CS.UTK.EDU  Tue Mar 16 11:04:50 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA20347; Tue, 16 Mar 93 11:04:50 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA04802; Tue, 16 Mar 93 11:01:02 -0500
X-Resent-To: mpi-ptop@CS.UTK.EDU ; Tue, 16 Mar 1993 11:01:01 EST
Errors-To: owner-mpi-ptop@CS.UTK.EDU
Received: from fslg8.fsl.noaa.gov by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA04794; Tue, 16 Mar 93 11:00:59 -0500
Received: by fslg8.fsl.noaa.gov (5.57/Ultrix3.0-C)
	id AA09360; Tue, 16 Mar 93 16:00:54 GMT
Received: by macaw.fsl.noaa.gov (4.1/SMI-4.1)
	id AA16673; Tue, 16 Mar 93 08:59:39 MST
Date: Tue, 16 Mar 93 08:59:39 MST
From: hender@macaw.fsl.noaa.gov (Tom Henderson)
Message-Id: <9303161559.AA16673@macaw.fsl.noaa.gov>
To: mpi-ptop@cs.utk.edu
Subject: Re: Al's COLLCOMM proposal

Rolf writes,

> Another question then is how this assignment is done. At the last
> Dallas meeting we discussed two basic options:
> 1. A topology is defined after the creation of the group. The topology
>    thus is an attribute which is assigned to the group, and which can
>    be overwritten without creating a new group.
> 2. A topology definition always creates a new group (or even two of
>    them, the second one being the collection of processes which are not
>    used by the topology). The advantage of this choice is that the
>    rank of a process within a group never changes. When a group with
>    topology is created, the processes can be arranged in the optimal
>    way from the very beginning.
> 
> Personally, I prefer the second option. One additional advantage is the
> following: assume that the original group has 10 processes, and then
> a (3,3) grid topology is defined. Does a global operation on this group
> include all 10 processes? If the (3,3) grid formation creates a new
> subgroup of 9 processes, the answer is clear.

I also favor option 2.  I think the draft should be modified as Rolf suggests 
(elsewhere in his message) to be consistent with option 2.  

> On page 2 the draft states that "The collective communication routines
> are implemented in terms of the topology associated with a given group.
> Although the function would be the same, a broadcast in a group with
> a ring topology could be implemented differently from a broadcast in
> a group with hypercube topology". I see a confusion of application
> and machine topologies here. The optimal implementation of a broadcast
> is guided by the machine topology, which could be a hypercube. Even
> if the logical group topology is a mesh, the global operation would
> follow the hypercube structure. However, this implementation detail
> is completely invisible to the user and should not be part of the
> standard. The only thing the user sees is the mesh topology and the
> result of the broadcast.

Agree.  The concepts of machine (physical) topology and logical topology 
should be clearly separated.  

> The proposed MPI_SHIFT function could be made much more useful by
> adding another argument. Here's my proposal:
> 
>  Info = MPI_SHIFT(inbuf,outbuf,nitems,type,tag,group,direction,steps)
> 
> The additional integer argument "direction" selects the coordinate
> direction in the group topology, and "steps" is the number of steps
> in that direction. In the case of cartesian structures the meaning is
> immediately clear. One could apply the function also in the case of a
> general graph. In this case "direction" would specify the neighbor
> number. "steps" could either be ignored, or we could define a
> transitive scheme of the kind "neighbor of neighbor of neighbor ...",
> with the indirection depth being specified by "steps".

I would not have a problem restricting MPI_SHIFT() to Cartesian topologies 
(ring, grid, torus, etc.).  If a user has defined a general graph, let the 
user define her own "shift".  

Tom

From owner-mpi-ptop@CS.UTK.EDU  Tue Mar 16 13:43:10 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA25615; Tue, 16 Mar 93 13:43:10 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA12835; Tue, 16 Mar 93 13:42:15 -0500
X-Resent-To: mpi-ptop@CS.UTK.EDU ; Tue, 16 Mar 1993 13:42:13 EST
Errors-To: owner-mpi-ptop@CS.UTK.EDU
Received: from pnlg.pnl.gov by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA12826; Tue, 16 Mar 93 13:42:10 -0500
Received: from carbon.pnl.gov (130.20.188.38) by pnlg.pnl.gov; Tue, 16 Mar 93
 10:35 PST
Received: from sodium.pnl.gov by carbon.pnl.gov (4.1/SMI-4.1) id AA01248; Tue,
 16 Mar 93 10:33:37 PST
Received: by sodium.pnl.gov (4.1/SMI-4.0) id AA07439; Tue, 16 Mar 93 10:33:34
 PST
Date: Tue, 16 Mar 93 10:33:34 PST
From: rj_littlefield@pnlg.pnl.gov
Subject: Re:  Al's COLLCOMM proposal
To: Rolf.Hempel@gmd.de, mpi-collcomm@cs.utk.edu, mpi-ptop@cs.utk.edu
Cc: gmap10@f1neuman.gmd.de, rj_littlefield@pnlg.pnl.gov
Message-Id: <9303161833.AA07439@sodium.pnl.gov>
X-Envelope-To: mpi-ptop@cs.utk.edu, mpi-collcomm@cs.utk.edu

Rolf Hempel writes:

> I agree to most points of Rik
> Littlefields comments. The only thing which does not convince me yet
> is the explicite caching mechanism. If the information caching is
> handled consistently between the group management and collective
> communication routines (in order to avoid usage of stale group
> information), I still hope that it could be done without showing up
> at the user interface.

Just a point of clarification.  

I do NOT propose that cacheing be visible at the interface between
the application program and a collective communication routine that
it calls.  The example I provided was perhaps not explicit enough on
this point.  It said:

   efficient_global_op (grphandle, ...)
   struct group_descriptor_type *grphandle;
     <and so on>

I intended "..." to mean only the arguments that would be provided
to any collective communication routine, e.g., data buffer, number
of elements, and so on.  Nothing about cacheing there.

I think Rolf would agree that the standard collective communication
routines need an internal facility like this to coordinate with the
standard group management routines, if they are to achieve high
efficiency.  

My proposal is essentially to standardize and export that facility so
as to permit new collective communication routines to run as
efficiently as the built-ins.  In this vein, you may wish to think of
standardized cacheing as a feature to increase MPI's extensibility.

--Rik

----------------------------------------------------------------------
rj_littlefield@pnl.gov (alias 'd39135')   Rik Littlefield
Tel: 509-375-3927                         Pacific Northwest Lab, MS K1-87
Fax: 509-375-6631                         P.O.Box 999, Richland, WA  99352
From owner-mpi-ptop@CS.UTK.EDU  Wed Mar 17 15:33:52 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA24684; Wed, 17 Mar 93 15:33:52 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA08846; Wed, 17 Mar 93 15:33:15 -0500
X-Resent-To: mpi-ptop@CS.UTK.EDU ; Wed, 17 Mar 1993 15:33:14 EST
Errors-To: owner-mpi-ptop@CS.UTK.EDU
Received: from watson.ibm.com by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA08837; Wed, 17 Mar 93 15:33:12 -0500
Message-Id: <9303172033.AA08837@CS.UTK.EDU>
Received: from YKTVMV by watson.ibm.com (IBM VM SMTP V2R3) with BSMTP id 5657;
   Wed, 17 Mar 93 15:33:12 EST
Date: Wed, 17 Mar 93 15:33:12 EST
From: "Marc Snir" <snir@watson.ibm.com>
To: MPI-PTOP@CS.UTK.EDU

Some comments on how to support topologies -- on top on current collective
communications

The current proposal for collective communications and assumes that a group
does not carry topological information:  It is just an ordered set of
processes.

Assume that each graph has a canonical numbering, i.e., that a graph consists
of an ORDERED set of nodes + a set of (directed) edges.  I.e., the nodes
of a general graph are ordered according to the order in which they
are listed in an adjacency list, the nodes of a mesh are ordered in row
major order, etc.  Then a topology is an MPI group + a set of directed
edges + some additional structure, for regular graphs, like meshes.

The basic question to address is: should the MPI communication library
be aware of topological structures?

There are two choices: (i) a topology
is a basic MPI object, that can be used in various communication operations.
(ii) MPI communication functions have no understanding of topologies; thus, a
topology is represented by two objects: the first one is a group that MPI is
cognizant of, and the second one is a separate data structure that captures the
topological information.   Let me illustrate these two approaches by examples
(I apologize for not sticking to the official syntax)

1.  Mapping a topology so as to ease communication along edges (i.e., creating
a new group with processes numbered so that the embedding of graph edges on the
communication hardware is efficient)

(i)
MPI_CREATE_GRID(oldtopology, newtopology, topology_parameters).
Creates a new topology, with a new process numbering.

(ii)
GRID_MAP(oldgroup, topology_parameters, newrank).
A call that computes the best permutation of the group
processes for embedding the grid.
MPI_CREATE_GROUP(oldgroup, newgroup,0,newrank)
Create new group.

The situation where not all processes belong to the new group, can
be handled, say, by returning a negative "newrank" for the outsiders,
and then executing MPI_CREATE(oldgroup, newgroup, (newrank <0), newrank).

(By the way, I doubt such function will have much use)

2. Sticking a new topology on top of an existing one

(i)
I don't know the solution
(ii)
Just create the new topology object (e.g., the adjacency list)

3. Shift on a row (or a hyperplane) of a grid

(i)
SHIFT_GRID(topology, inbuf, outbuf, dimension, shift)

(ii)
MPI_CREATE_GROUP(oldgroup, newgroup, grid_index(grid_params, myid,dimension),0)
A new group needs to be created (once).  I assume an auxiliary function that,
given a description of the grid, a rank and a dimension, returns the index of
the node with that rank in that dimension.
MPI_CSHIFT(newgroup, inbuf, outbuf, shift)
(or MPI_EOSHIFT, for an open topology).

And so on.

Consider a k-dimensional grid.
Assume one creates a separate group for each one-dimensional subgrid.  I.e.,
each node belongs to k subgroups, one for each dimension.  Further assume that
the rank of each node in a subgroup is equal to its index in the corresponding
grid dimension (this holds true if the relative global order of the nodes is
preserved when the subgroups are created).  Then (almost) all the topological
structure of the grid is captured by these subgroups:  One can find the index
of a node in the i-th dimension by querying its rank in the i-th subgroup.
One can shift in the i-th dimension by shifting in the i-th subgroup. One can
create a new subgrid that contains all nodes in a hyperplane, by using the
index in the i-th dimension to split the group; the subgroups that are
contained in this hyperplane are not affected.  And so on.  (The only
information that is not captured is whether the grid is cyclic or not in each
dimension.  I.e., whether a cyclic shift or a end-off shift should be used in
each dimension.)  Thus, once the subgroups are built, it would seem we don't
need any further topological information.  The data structure that represents
the grid is needed only to build these subgroups.  This
seems to be one more reason not to integrate topological information into the
MPI communication functions.

Temporary conclusion: topology cognizant MPI communication functions will save
some writing, but not much.  For the sake of keeping the communication
layer simple, I vote for keeping topologies out of the MPI
communication layer.  This does not mean that topologies disappear.  It
means that topology objects are only used in order to build groups, and
that only one MPI function really needs to understand
topologies, for the purpose of embedding them on the communication
hardware.   Further topology functions could be provided, if required, as
syntactic sugar on top of existing group functions.


From owner-mpi-ptop@CS.UTK.EDU  Thu Mar 18 09:42:52 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA11664; Thu, 18 Mar 93 09:42:52 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA07125; Thu, 18 Mar 93 09:40:15 -0500
X-Resent-To: mpi-ptop@CS.UTK.EDU ; Thu, 18 Mar 1993 09:40:10 EST
Errors-To: owner-mpi-ptop@CS.UTK.EDU
Received: from gmdzi.gmd.de by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA07073; Thu, 18 Mar 93 09:40:03 -0500
Received: from f1neuman.gmd.de (f1neuman) by gmdzi.gmd.de with SMTP id AA05710
  (5.65c/IDA-1.4.4 for <mpi-ptop@cs.utk.edu>); Thu, 18 Mar 1993 15:38:30 +0100
Received: by f1neuman.gmd.de id AA16221; Thu, 18 Mar 1993 15:39:55 GMT
Date: Thu, 18 Mar 1993 15:39:55 GMT
From: Rolf.Hempel@gmd.de
Message-Id: <9303181539.AA16221@f1neuman.gmd.de>
To: mpi-ptop@cs.utk.edu
Subject: Marc's proposal
Cc: gmap10@f1neuman.gmd.de


Thanks to Marc for explaining in some detail his view of process
topologies in MPI. I would like to add a few comments:

1. Marc summarizes his proposal with:

   > This seems to be one more reason not to integrate topological
   > information into the MPI communication functions.

   I agree that the topology functions should not change at all the
   pt-pt communication functions. The current draft already fulfills
   this requirement. Also the definitions of collective communications
   are not affected by the topologies, with the exception of the
   shift function where the topological information can add some
   useful functionality.

   The only point where the topology functions interact with the rest
   of MPI is the management of process groups. I do not see this as a
   disadvantage, but using topology information there helps in bringing
   stucture into groups.

   It seems that Marc agrees to this role of topology functions when he
   concludes:

   > It means that topology objects are only used in order to build
   > groups, ...

2. The question then is whether it is worthwhile to integrate process
   topologies with group management. I argue that the use of topologies
   like rings, grids, cubes, ... is so widespread that creating groups
   with these structures should be as easy and elegant as possible.
   For the same purpose there should be a (small) set of inquiry
   functions to support the addressing of processes in topology-based
   programs. In this sense we would not only save the MPI user 
   "some writing", but we would also make MPI programming more natural
   to those who think in terms of their process topology structure
   rather than in terms of a set of processes, ranked from 0 to n-1.

3. The representation of a grid by the k subgroups works well as long
   as one only looks at neighboring processes in the primary directions.
   The handling of diagonal neighbors or arbritrary processes in the
   grid is less straight-forward. In my opinion it is better to
   provide a look-up function which returns the process id (or the
   group rank of the grid group) for any tuple (i,j,k) of grid
   coordinates.

4. The "Sticking a new topology on top of an existing one" could be
   done by adding an argument to a definition function like MPI_CART
   which specifies whether the processes are allowed to be reordered
   or not (with the purpose of optimal mapping onto the hardware).
   In this way, the "primary" topology could be defined with mapping
      MPI_CART(old_gid, cart_gid, ..., MPI_REORDER),
   and then another topology could be defined like
      MPI_GRAPH(cart_gid, graph_gid, ..., MPI_NOREORDER).
   In this way the graph nodes 0, 1, ..., n-1 could be associated with
   ranks 0, 1, ..., n-1 in the cartesian group.

Are there any comments from other PTOP members?

Rolf Hempel
From owner-mpi-ptop@CS.UTK.EDU  Thu Mar 18 13:00:35 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA15916; Thu, 18 Mar 93 13:00:35 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA17376; Thu, 18 Mar 93 13:00:03 -0500
X-Resent-To: mpi-ptop@CS.UTK.EDU ; Thu, 18 Mar 1993 13:00:02 EST
Errors-To: owner-mpi-ptop@CS.UTK.EDU
Received: from fslg8.fsl.noaa.gov by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK)
	id AA17359; Thu, 18 Mar 93 12:59:58 -0500
Received: by fslg8.fsl.noaa.gov (5.57/Ultrix3.0-C)
	id AA14818; Thu, 18 Mar 93 17:59:52 GMT
Received: by macaw.fsl.noaa.gov (4.1/SMI-4.1)
	id AA20665; Thu, 18 Mar 93 10:58:36 MST
Date: Thu, 18 Mar 93 10:58:36 MST
From: hender@macaw.fsl.noaa.gov (Tom Henderson)
Message-Id: <9303181758.AA20665@macaw.fsl.noaa.gov>
To: Rolf.Hempel@gmd.de
Subject: Re: Marc's proposal
Cc: mpi-ptop@cs.utk.edu


Rolf,

> 2. The question then is whether it is worthwhile to integrate process
>    topologies with group management. I argue that the use of topologies
>    like rings, grids, cubes, ... is so widespread that creating groups
>    with these structures should be as easy and elegant as possible.
>    For the same purpose there should be a (small) set of inquiry
>    functions to support the addressing of processes in topology-based
>    programs. In this sense we would not only save the MPI user 
>    "some writing", but we would also make MPI programming more natural
>    to those who think in terms of their process topology structure
>    rather than in terms of a set of processes, ranked from 0 to n-1.

I think that this is analogous to the argument for supporting 
multi-dimensional arrays in C, Fortran, etc.  We could do everything we want 
with one-dimensional storage, but few people think this is a good idea!  

> 3. The representation of a grid by the k subgroups works well as long
>    as one only looks at neighboring processes in the primary directions.
>    The handling of diagonal neighbors or arbritrary processes in the
>    grid is less straight-forward. In my opinion it is better to
>    provide a look-up function which returns the process id (or the
>    group rank of the grid group) for any tuple (i,j,k) of grid
>    coordinates.

I agree.  

> 4. The "Sticking a new topology on top of an existing one" could be
>    done by adding an argument to a definition function like MPI_CART
>    which specifies whether the processes are allowed to be reordered
>    or not (with the purpose of optimal mapping onto the hardware).
>    In this way, the "primary" topology could be defined with mapping
>       MPI_CART(old_gid, cart_gid, ..., MPI_REORDER),
>    and then another topology could be defined like
>       MPI_GRAPH(cart_gid, graph_gid, ..., MPI_NOREORDER).
>    In this way the graph nodes 0, 1, ..., n-1 could be associated with
>    ranks 0, 1, ..., n-1 in the cartesian group.

I'm still not comfortable with the idea that MPI should attempt to deal with 
relationships between multiple topologies.  It seems to me that the only way 
to do a good job would be to specify all topologies used by a group at group 
creation.  I would prefer to see a new group created with the same members 
each time a new topology is required.  

> Rolf Hempel

Tom Henderson
NOAA Forecast Systems Laboratory
hender@fsl.noaa.gov

From owner-mpi-ptop@CS.UTK.EDU  Tue Mar 23 08:12:05 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA13729; Tue, 23 Mar 93 08:12:05 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA08005; Tue, 23 Mar 93 08:11:24 -0500
X-Resent-To: mpi-ptop@CS.UTK.EDU ; Tue, 23 Mar 1993 08:11:21 EST
Errors-To: owner-mpi-ptop@CS.UTK.EDU
Received: from gmdzi.gmd.de by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA07997; Tue, 23 Mar 93 08:11:16 -0500
Received: from f1neuman.gmd.de (f1neuman) by gmdzi.gmd.de with SMTP id AA24548
  (5.65c/IDA-1.4.4 for <mpi-ptop@cs.utk.edu>); Tue, 23 Mar 1993 14:09:35 +0100
Received: by f1neuman.gmd.de id AA14713; Tue, 23 Mar 1993 14:11:03 GMT
Date: Tue, 23 Mar 1993 14:11:03 GMT
From: Rolf.Hempel@gmd.de
Message-Id: <9303231411.AA14713@f1neuman.gmd.de>
To: mpi-ptop@cs.utk.edu
Subject: Next meeting
Cc: gmap10@f1neuman.gmd.de


Dear PTOP working group member,

we have to prepare our discussions at the next Dallas meeting.
Therefore, I just present you a list of points which I think we should
address. All comments and additions are welcome.


1. The most important question seems to be how we want to support
   process topologies. The basic choice is between the positions which
   were presented by Marc Snir's and myself:
   a): MPI knows only about process groups which are linearly ordered
       collections of processes without any further structure.
       Process topologies are handled by libraries which are not
       part of MPI.
   b): Topological information is an integral part of process groups.
       There should be process definition functions for the most
       common topologies (cartesian and graph structures) which 
       create process groups. Topologies can be used to define
       collective communication functions like shift.

In the following I assume that we follow path b). (Otherwise we would
not have much to do, anyway.)


2. It seems reasonable to me that we change the current draft such that
   a topology definition creates a new group. This removes the problem
   that the rank within the group may change. My proposal for the
   cartesian definition function is:

   active = MPI_CART (gid, parent_gid, ndim, dims, period).

   with:
         parent_gid:   group id of existing group (input)
         gid:          group id of newly created group (output)
         active:       =.true., if calling process is contained in grid
                       =.false. otherwise

   Depending on the return value, gid is the group id of the grid
   group or the remainder group. Thus, in case there are more processes
   in the parent group than are needed by the topology, two groups
   are created. If there is a perfect match, only one group is
   created (in this case there is no process which returns
   with active=.false. ===> there is no remainder gid.).

   The corresponding graph definition function then looks like:

   active = MPI_GRAPH (gid, parent_gid, nodes, index, nglist)

   The number of processes in the topology is no longer returned from
   these functions. This was rather redundant in the first place, and
   this information can easily be obtained from the inquiry function
   for the number of processes in a group.


3. The above definition functions could be extended by two arguments:

   1. How should the mapping be done? One out of

      MPI_REORDER | MPI_NOREORDER | MPI_RANDOM

      MPI_REORDER:   MPI is allowed to change the ranking of processes
                     as compared to the parent group.
      MPI_NOREORDER: the rank of a process is the same in parent and
                     new group.
      MPI_RANDOM:    the rank in the new group is set randomly.
                     (Is the third option necessary?)

      This argument allows an ordered overlay of two topologies, as
      in the following example:

      active = MPI_CART (cart_gid, parent_gid, ndim, dims, period,
                         MPI_REORDER)
      active = MPI_GRAPH (graph_gid, cart_gid, nodes, index, nglist,
                          MPI_NOREORDER)

      This way the graph nodes 0,1, ..., n-1 are associated with the
      processes with rank 0,1, ..., n-1 in the cartesian group.

   2. For cartesian topologies: definition of ranking in the group:

      MPI_ROWM | MPI_COLM

      for row-major / column-major ordering.


4. Does every group have a default topology, and what could it be?
   My proposal is that we choose a ring topology as default, i.e.,
   the rank of a process 0, ..., n-1 defines its position in the ring.
   No attempt is made to efficiently map the processes to the hardware.
   As an alternative, we could argue that there is no reason for
   closing the linear structure, and take a linear structure instead.
   I think that a default topology makes the interface more consistent.


5. Can processes in different topologies talk to each other? This
   question seems closely related to whether processes in different
   groups can communicate. I think that we can leave this decision
   to the more general debate on groups. The topology inquiry functions
   can be applied for groups of which the calling process is not a
   member, if this is decided to be necessary for other group inquiry
   functions.


6. Similarly, I think that we should not touch the question of what
   a process id is. The topology functions can adopt whatever scheme
   is decided in pt-to-pt.

Any comments/additions?

Rolf Hempel
From owner-mpi-ptop@CS.UTK.EDU  Tue Mar 23 11:14:56 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA20707; Tue, 23 Mar 93 11:14:56 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA16737; Tue, 23 Mar 93 11:13:50 -0500
X-Resent-To: mpi-ptop@CS.UTK.EDU ; Tue, 23 Mar 1993 11:13:49 EST
Errors-To: owner-mpi-ptop@CS.UTK.EDU
Received: from fslg8.fsl.noaa.gov by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA16729; Tue, 23 Mar 93 11:13:47 -0500
Received: by fslg8.fsl.noaa.gov (5.57/Ultrix3.0-C)
	id AA23711; Tue, 23 Mar 93 16:13:41 GMT
Received: by macaw.fsl.noaa.gov (4.1/SMI-4.1)
	id AA28595; Tue, 23 Mar 93 09:12:24 MST
Date: Tue, 23 Mar 93 09:12:24 MST
From: hender@macaw.fsl.noaa.gov (Tom Henderson)
Message-Id: <9303231612.AA28595@macaw.fsl.noaa.gov>
To: mpi-ptop@cs.utk.edu
Subject: Re: Next meeting


Rolf writes,

> 2. It seems reasonable to me that we change the current draft such that
>    a topology definition creates a new group. This removes the problem
>    that the rank within the group may change. My proposal for the
>    cartesian definition function is:
> 
>    active = MPI_CART (gid, parent_gid, ndim, dims, period).
> 
>    with:
>          parent_gid:   group id of existing group (input)
>          gid:          group id of newly created group (output)
>          active:       =.true., if calling process is contained in grid
>                        =.false. otherwise
> 
>    Depending on the return value, gid is the group id of the grid
>    group or the remainder group. Thus, in case there are more processes
>    in the parent group than are needed by the topology, two groups
>    are created. If there is a perfect match, only one group is
>    created (in this case there is no process which returns
>    with active=.false. ===> there is no remainder gid.).
> 
>    The corresponding graph definition function then looks like:
> 
>    active = MPI_GRAPH (gid, parent_gid, nodes, index, nglist)
> 
>    The number of processes in the topology is no longer returned from
>    these functions. This was rather redundant in the first place, and
>    this information can easily be obtained from the inquiry function
>    for the number of processes in a group.

I think this is a good idea.  

> 3. The above definition functions could be extended by two arguments:
> 
>    1. How should the mapping be done? One out of
> 
>       MPI_REORDER | MPI_NOREORDER | MPI_RANDOM
> 
>       MPI_REORDER:   MPI is allowed to change the ranking of processes
>                      as compared to the parent group.
>       MPI_NOREORDER: the rank of a process is the same in parent and
>                      new group.
>       MPI_RANDOM:    the rank in the new group is set randomly.
>                      (Is the third option necessary?)
> 
>       This argument allows an ordered overlay of two topologies, as
>       in the following example:
> 
>       active = MPI_CART (cart_gid, parent_gid, ndim, dims, period,
>                          MPI_REORDER)
>       active = MPI_GRAPH (graph_gid, cart_gid, nodes, index, nglist,
>                           MPI_NOREORDER)
> 
>       This way the graph nodes 0,1, ..., n-1 are associated with the
>       processes with rank 0,1, ..., n-1 in the cartesian group.

I currently favor permitting MPI_REORDER only.  It seems to me that the 
MPI_NOREORDER case could be layered on top of the rest of MPI if we decide we 
really want it.  The current MPI point-to-point draft allows no communication 
between processes in group graph_gid and group cart_gid without reference to 
group cart_gid (or even parent_gid).  In other words, I have to know my rank 
in group cart_gid to communicate anyway so why do I care if the rank in group 
graph_gid is the same?  If I've hard-coded "rank" into my program, I can just 
look up my rank in group cart_gid.  

I think that including both MPI_REORDER and MPI_NOREORDER may cause some 
confusion.  The purpose of MPI_REORDER is to provide better communication 
performance on some machines.  The purpose of MPI_NOREORDER seems to be to 
provide a look-up table for convenience (performance would likely be worse on 
many machines).  

I might be persuaded otherwise if I saw a more detailed example of some 
pseudo-code that uses the topology overlay feature with the current MPI 
point-to-point draft (no inter-group communication).  Could someone do that?  

>    2. For cartesian topologies: definition of ranking in the group:
> 
>       MPI_ROWM | MPI_COLM
> 
>       for row-major / column-major ordering.

This may be the only sane way to handle this.  I can't come up with anything 
better at the moment.  :-)

> 4. Does every group have a default topology, and what could it be?
>    My proposal is that we choose a ring topology as default, i.e.,
>    the rank of a process 0, ..., n-1 defines its position in the ring.
>    No attempt is made to efficiently map the processes to the hardware.
>    As an alternative, we could argue that there is no reason for
>    closing the linear structure, and take a linear structure instead.
>    I think that a default topology makes the interface more consistent.

I think a default topology is a good idea for all groups (including the 
default "ALL" group).  Ring seems slightly better than linear since the 
collective communication proposal currently contains circular shift 
operations.  

> 5. Can processes in different topologies talk to each other? This
>    question seems closely related to whether processes in different
>    groups can communicate. I think that we can leave this decision
>    to the more general debate on groups. The topology inquiry functions
>    can be applied for groups of which the calling process is not a
>    member, if this is decided to be necessary for other group inquiry
>    functions.

Agree.  The context subcommittee and the point-to-point subcommittee can hash 
this out.  

> 6. Similarly, I think that we should not touch the question of what
>    a process id is. The topology functions can adopt whatever scheme
>    is decided in pt-to-pt.

Agree.  

> Rolf Hempel
> 

Tom Henderson

From owner-mpi-ptop@CS.UTK.EDU  Wed Mar 24 04:39:54 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA09656; Wed, 24 Mar 93 04:39:54 -0500
Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA01122; Wed, 24 Mar 93 04:39:17 -0500
X-Resent-To: mpi-ptop@CS.UTK.EDU ; Wed, 24 Mar 1993 04:39:12 EST
Errors-To: owner-mpi-ptop@CS.UTK.EDU
Received: from gmdzi.gmd.de by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA01114; Wed, 24 Mar 93 04:39:07 -0500
Received: from f1neuman.gmd.de (f1neuman) by gmdzi.gmd.de with SMTP id AA12055
  (5.65c/IDA-1.4.4 for <mpi-ptop@cs.utk.edu>); Wed, 24 Mar 1993 10:37:31 +0100
Received: by f1neuman.gmd.de id AA15364; Wed, 24 Mar 1993 10:38:58 GMT
Date: Wed, 24 Mar 1993 10:38:58 GMT
From: Rolf.Hempel@gmd.de
Message-Id: <9303241038.AA15364@f1neuman.gmd.de>
To: mpi-ptop@cs.utk.edu
Subject: Next Meeting
Cc: gmap10@f1neuman.gmd.de


Tom Henderson writes:

> I currently favor permitting MPI_REORDER only.  It seems to me that
> the MPI_NOREORDER case could be layered on top of the rest of MPI if
> we decide we really want it.  The current MPI point-to-point draft
> allows no communication between processes in group graph_gid and
> group cart_gid without reference to group cart_gid (or even
> parent_gid).  In other words, I have to know my rank in group
> cart_gid to communicate anyway so why do I care if the rank in group
> graph_gid is the same?  If I've hard-coded "rank" into my program, I
> can just look up my rank in group cart_gid.
>
> I think that including both MPI_REORDER and MPI_NOREORDER may cause
> some confusion.  The purpose of MPI_REORDER is to provide better
> communication performance on some machines.  The purpose of
> MPI_NOREORDER seems to be to provide a look-up table for convenience
> (performance would likely be worse on many machines).

I'm not completely convinced either that we need to have MPI_NOREORDER,
and I don't have seen any "real" application yet where this feature
is necessary. The reasoning which led to this feature was as follows:

Assume you have ordered the group in a Cartesian grid, such that each
process has been assigned its role in the topology. Now assume that
you have an application which uses the grid in one phase, but it needs
to communicate along a tree in another phase. For some reasons it
could be important that the user can specify the position in the tree
for each process in the grid, that, for example, process (1,1) becomes
the root of the tree. A reason for this requirement could be that
process (1,1) keeps some local data which the root of the tree needs,
also. So, if the mapping optimization is done for both topologies
(MPI_REORDER), then - most likely - two different processes will
be selected, which means additional communication.

Layering the MPI_NOREORDER functions on top of MPI works, but the
disadvantage is that you have to duplicate the whole set of
topology functions, including the inquiry routines. If one selects
MPI_REORDER/MPI_NOREORDER in the topology definition, then all other
functions can work the same for both options.

On the issue of default topologies Tom writes:

> I think a default topology is a good idea for all groups (including
> the default "ALL" group).  Ring seems slightly better than linear
> since the collective communication proposal currently contains
> circular shift operations.

If we base the shift operation on topological information, then we
do not have to support both the circular shift and the end-off shift,
as in the current COLLCOMM proposal. I posted a corresponding definition
on the COLLCOMM mailing list:

Info = MPI_SHIFT(inbuf,outbuf,nitems,type,tag,group,direction,steps)

The additional "direction" argument specifies the coordinate direction
of the shift. If the coordinate direction is "periodic", then the
shift is circular, otherwise it is end-off. I cannot immagine that one
wants to have a circular shift in a non-periodic topology, or vice
versa.

The only remaining problem is the ALL group, because its topology
cannot be specified by the user. Thus, there is only one shift
version in that group. If the user wants the other one, he has to
duplicate the ALL group and give it the other periodicity type.
Does this sound reasonable?

Rolf Hempel
From owner-mpi-ptop@CS.UTK.EDU  Mon Apr 19 10:33:27 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA02674; Mon, 19 Apr 93 10:33:27 -0400
Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA13408; Mon, 19 Apr 93 10:32:51 -0400
X-Resent-To: mpi-ptop@CS.UTK.EDU ; Mon, 19 Apr 1993 10:32:50 EDT
Errors-To: owner-mpi-ptop@CS.UTK.EDU
Received: from gmdzi.gmd.de by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA13399; Mon, 19 Apr 93 10:32:47 -0400
Received: from f1neuman.gmd.de (f1neuman) by gmdzi.gmd.de with SMTP id AA04253
  (5.65c/IDA-1.4.4 for <mpi-ptop@cs.utk.edu>); Mon, 19 Apr 1993 16:32:38 +0200
Received: by f1neuman.gmd.de id AA12728; Mon, 19 Apr 1993 16:32:36 GMT
Date: Mon, 19 Apr 1993 16:32:36 GMT
From: Rolf.Hempel@gmd.de
Message-Id: <9304191632.AA12728@f1neuman.gmd.de>
To: mpi-ptop@cs.utk.edu
Subject: new ptop definitions
Cc: gmap10@f1neuman.gmd.de


Dear PTOP subcommittee member,

At the last Dallas meeting it was decided to base the topology functions
in MPI on the lower level group definition functions. In the following
I want to present to you my first thoughts about how this could be
done. If you have any suggestions/corrections/brilliant ideas, please
help.


Proposal for process topologies in MPI:
---------------------------------------

1. The basic group definition function will look something like

   MPI_CREATE_GROUP (gid_old, gid_new, key, newrank)

   This function was proposed by Marc Snir, and it allows both a
   partitioning by key (using the ranking in the original group) and
   a reordering using the user supplied newrank value.

   The alternative which will be discussed is to provide two functions,
   one for partitioning and one for reordering. I think we could do
   with both options. We now have to base the topology definition on
   this group creation mechanism.

2. The first thing we need is for each topology a function which
   computes an appropriate reordering of a given group for a good
   mapping. As Marc suggested, this would obviously look like

   MPI_MAP_CART (gid_old, ndim, dims, period, newrank), and
   MPI_MAP_GRAPH (gid_old, nodes, index, nglist, newrank).

   The definition of the function arguments ndim, dims, period, nodes,
   index, nglist is the same as in the original proposal.

   These functions compute the newrank value to be used by the above
   group creation function (key can be set to any fixed value).

3. In the spirit of the layering of MPI functions, it could be a good
   idea to define high-level functions for topological group creation
   which are defined in terms of the above low-level functions.
   In this way we could define two functions like

   MPI_CART (gid_old, gid_cart, ndims, dims, period) and
     which is

      MPI_MAP_CART (gid_old, ndim, dims, period, newrank)
      MPI_CREATE_GROUP (gid_old, gid_cart, 0, newrank)

      and

   MPI_GRAPH (gid_old, gid_graph, nodes, index, nglist).
     which is
       
      MPI_MAP_GRAPH (gid_old, nodes, index, nglist, newrank)
      MPI_CREATE_GROUP (gid_old, gid_graph, 0, newrank)

   This way we would free the applications programmer from handling
   the rank reordering explicitely. Also, this definition allows
   an optimized implementation of MPI_CART without use of the
   lower level functions (if the implementor chooses to do so).

4. A general question is whether there is a standard way of caching
   internal information for process groups in MPI. This has been
   proposed in the Context subcommittee, and it was characterized as
   a possible addition to all the different context proposals. If
   this mechanism is available, the functions MPI_CART and MPI_GRAPH
   can store information about the topology with the newly created
   group. The following data would have to be kept:

       1. topology type (cartesian/graph)
       2. for cartesian structure:
          ndim, dims, period, pos (own position in grid)
       3. for graph structure:
          nodes, pos

   This information can be used by later calls to inquiry functions

       MPI_INQMAP(gid)
       MPI_INQCART(maxdim, size, period, pos)
       MPI_INQGR(gid, nodes)

   The MPI_INQPID function should perhaps be redefined, so that it
   just returns the rank of a single process rather than a vector
   with several ids. The reason for this proposed change is that 
   with the new strategy MPI_INQPID is a local operation without
   any communication. Thus, a seperate call for each look-up does not
   cost too much.

   As you see, the availability of a information caching facility
   makes it possible to retain the functionality of our previous
   proposal without the need to interfere with the group creation
   functions. The only (non-portable) low-level functions would be
   the two mapping functions. For an easy first implementation, they
   could choose the mapping permutation to be the identity.

5. If the information cacheing is not available, we have to find other
   ways for defining the inquiry functions. Obviously, the MPI_INQMAP
   function would go away. It would be the responsibility of the
   application programmer to remember the topology assigned to a given
   group. The same is true for MPI_INQCART and MPI_INQGR. MPI_INQPID
   would have to be changed. As input one would have to add the
   dimensions of the overall grid. The rank calculation of a given
   process then is almost trivial.

6. The MPI_PARTC(gid_old, gid_new, lostdim) function can be based on
   top of MPI_CREATE_GROUP (gid_old, gid_new, key, 0). Argument
   key is simply set to the index of the calling process in the
   coordinate direction "lostdim". The result is a collection of
   hyperplane groups which are orthogonal to that direction.

I need your input for creating a proposal for the next Dallas meeting.
Every comment is welcome.

Best regards,
  Rolf
From owner-mpi-ptop@CS.UTK.EDU  Wed Apr 21 05:44:13 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA01566; Wed, 21 Apr 93 05:44:13 -0400
Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA01846; Wed, 21 Apr 93 05:43:37 -0400
X-Resent-To: mpi-ptop@CS.UTK.EDU ; Wed, 21 Apr 1993 05:43:36 EDT
Errors-To: owner-mpi-ptop@CS.UTK.EDU
Received: from gmdzi.gmd.de by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA01838; Wed, 21 Apr 93 05:43:28 -0400
Received: from f1neuman.gmd.de (f1neuman) by gmdzi.gmd.de with SMTP id AA20888
  (5.65c/IDA-1.4.4 for <mpi-ptop@cs.utk.edu>); Wed, 21 Apr 1993 11:43:18 +0200
Received: by f1neuman.gmd.de id AA16453; Wed, 21 Apr 1993 11:43:18 GMT
Date: Wed, 21 Apr 1993 11:43:18 GMT
From: Rolf.Hempel@gmd.de
Message-Id: <9304211143.AA16453@f1neuman.gmd.de>
To: mpi-ptop@cs.utk.edu
Subject: Information cacheing
Cc: gmap10@f1neuman.gmd.de


Recently I got a (private) email from Tom Henderson in which he comments
on my latest proposal on process topologies. I think that it is
interesting to the whole committee, and I hope it's okay with Tom if I
forward it to you all:

>> 4. A general question is whether there is a standard way of caching
>>    internal information for process groups in MPI. This has been
>>    proposed in the Context subcommittee, and it was characterized as
>>    a possible addition to all the different context proposals. If
>>    this mechanism is available, the functions MPI_CART and MPI_GRAPH
>>    can store information about the topology with the newly created
>>    group...
>>
>> Best regards,
>>   Rolf
>> 
>
>Rolf,
>
>It seems to me that we could still do this even if a caching facility
>is not available to library users.  All we need is some kind of
>internal caching.  It could possibly be implemented differently on
>each system...  
>
>Does this make sense?  
>
>Tom

The question of whether the PTOP functions can pass information between
each other without the detour of the user argument lists is crucial
for the design of the user interface. If the information cacheing
is standardized in MPI, then the answer obviously is yes, and we can
use that facility in PTOP. I agree with Tom that this is no necessary
condition for an implementation of information cacheing for PTOP, but 
it would certainly help. Do you think we should rely on having some
way or other of storing data internally? 

The note from Tom was the only reaction I got so far on my proposal.
I really need your input, and I need it soon in order to get something
done before the next meeting. I want to make sure that the proposal
we produce on process topologies represents a consensus in the
subcommittee as well as possible.

Rolf
From owner-mpi-ptop@CS.UTK.EDU  Wed Apr 21 08:50:45 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA24140; Wed, 21 Apr 93 08:50:45 -0400
Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA12654; Wed, 21 Apr 93 08:49:33 -0400
X-Resent-To: mpi-ptop@CS.UTK.EDU ; Wed, 21 Apr 1993 08:49:32 EDT
Errors-To: owner-mpi-ptop@CS.UTK.EDU
Received: from super.super.org by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA12632; Wed, 21 Apr 93 08:49:29 -0400
Received: from b125.super.org by super.super.org (4.1/SMI-4.1)
	id AA22879; Wed, 21 Apr 93 08:49:23 EDT
Received: by b125.super.org (4.1/SMI-4.1)
	id AA13747; Wed, 21 Apr 93 08:49:22 EDT
Date: Wed, 21 Apr 93 08:49:22 EDT
From: lederman@b125.super.org (Steve Huss-Lederman)
Message-Id: <9304211249.AA13747@b125.super.org>
To: mpi-ptop@cs.utk.edu
Cc: gmap10@f1neuman.gmd.de
In-Reply-To: Rolf.Hempel@gmd.de's message of Wed, 21 Apr 1993 11:43:18 GMT <9304211143.AA16453@f1neuman.gmd.de>
Subject: Information cacheing

I should have responded sooner to Rolf's note.  I think it is fine to
use this to write the next draft of the ptop section.  The question of
caching seems like a convenience if I understand it.  If MPI does not
support it, then a structure would have to be passed back to the user
and used as input to other functions.  Is this correct?  I say we
say there is a mechanism for getting such information and leave it
vague until context is settled.  Then the agrument lists, etc for the
routines can be settled.

Steve
From owner-mpi-ptop@CS.UTK.EDU  Wed Apr 21 11:01:15 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA29374; Wed, 21 Apr 93 11:01:15 -0400
Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA25596; Wed, 21 Apr 93 10:59:35 -0400
X-Resent-To: mpi-ptop@CS.UTK.EDU ; Wed, 21 Apr 1993 10:59:35 EDT
Errors-To: owner-mpi-ptop@CS.UTK.EDU
Received: from gw1.fsl.noaa.gov by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA25587; Wed, 21 Apr 93 10:59:33 -0400
Received: by gw1.fsl.noaa.gov (5.57/Ultrix3.0-C)
	id AA15249; Wed, 21 Apr 93 14:59:30 GMT
Received: by macaw.fsl.noaa.gov (4.1/SMI-4.1)
	id AA24694; Wed, 21 Apr 93 08:58:05 MDT
Date: Wed, 21 Apr 93 08:58:05 MDT
From: hender@macaw.fsl.noaa.gov (Tom Henderson)
Message-Id: <9304211458.AA24694@macaw.fsl.noaa.gov>
To: mpi-ptop@cs.utk.edu
Subject: Re: Information cacheing

> From owner-mpi-ptop@cs.utk.edu Wed Apr 21 06:50:11 1993
> X-Resent-To: mpi-ptop@CS.UTK.EDU ; Wed, 21 Apr 1993 08:49:32 EDT

Steve Huss-Lederman writes:  

> I should have responded sooner to Rolf's note.  I think it is fine to
> use this to write the next draft of the ptop section.  The question of
> caching seems like a convenience if I understand it.  If MPI does not
> support it, then a structure would have to be passed back to the user
> and used as input to other functions.  Is this correct?  I say we
> say there is a mechanism for getting such information and leave it
> vague until context is settled.  Then the agrument lists, etc for the
> routines can be settled.
> 
> Steve

I agree.  

Tom Henderson


From owner-mpi-ptop@CS.UTK.EDU  Fri Apr 30 05:35:29 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA17837; Fri, 30 Apr 93 05:35:29 -0400
Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA27107; Fri, 30 Apr 93 05:34:40 -0400
X-Resent-To: mpi-ptop@CS.UTK.EDU ; Fri, 30 Apr 1993 05:34:39 EDT
Errors-To: owner-mpi-ptop@CS.UTK.EDU
Received: from gmdzi.gmd.de by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA27090; Fri, 30 Apr 93 05:34:24 -0400
Received: from f1neuman.gmd.de (f1neuman) by gmdzi.gmd.de with SMTP id AA14184
  (5.65c/IDA-1.4.4 for <mpi-ptop@cs.utk.edu>); Fri, 30 Apr 1993 11:33:38 +0200
Received: by f1neuman.gmd.de id AA15005; Fri, 30 Apr 1993 11:33:51 GMT
Date: Fri, 30 Apr 1993 11:33:51 GMT
From: Rolf.Hempel@gmd.de
Message-Id: <9304301133.AA15005@f1neuman.gmd.de>
To: mpi-ptop@cs.utk.edu
Subject: New draft
Cc: gmap10@f1neuman.gmd.de


Dear Collegue,

time is going by quickly, and the next MPI meeting is approaching. I
have put together a new draft of the topology section, which I send
you for comment with this note as LaTex source. If you have any problem
with processing it, please let me know. I will then send you a
PostScript file.

Please read the document carefully, and send me all your comments.
I tried to follow the general decisions at the last MPI meeting, at
the same time retaining most features of the previous version. I didn't
try to write the text in such a polished style as before, with man
pages and everything. Instead I used the same macros as are used in
the PT2PT and COLLCOMM sections. This makes the text hardly readable,
but this is not of highest priority at the moment.

I really need your input, so that I can produce the new official version
by next week.

Rolf Hempel
-------------------------- cut here ------------------------------------
%     MPI Authors:
% This is MY version of YOUR chapter.  It has a wrapper so that you
% should be able to simply LaTeX this.
%
% Please work from this text so that we are in synch.
%
% --Steve Otto

\documentstyle[twoside,11pt]{report}
\pagestyle{headings}
%\markright{ {\em Draft Document of the MPI Standard,\/ \today} }
\marginparwidth 0pt
\oddsidemargin=.25in
\evensidemargin  .25in
\marginparsep 0pt
\topmargin=-.5in
\textwidth=6.0in
\textheight=9.0in
\parindent=2em

%   ----------------------------------------------------------------------
%   mpi-macs.tex  --- man page macros,
%                discuss, missing, mpifunc macros
%
% ----------------------------------------------------------------------
% a couple of commands from Marc Snir, modified S. Otto

\newlength{\discussSpace}
\setlength{\discussSpace}{.7cm}

\newcommand{\discuss}[1]{\vspace{\discussSpace} {\small {\bf Discussion:} #1} \vspace{\discussSpace}
}

\newcommand{\missing}[1]{\vspace{\discussSpace} {\small {\bf Missing:} #1} \vspace{\discussSpace}
}

\newlength{\codeSpace}
\setlength{\codeSpace}{.3cm}

\newcommand{\mpifunc}[1]{\vspace{\codeSpace} {\bf #1} \vspace{\codeSpace} }

% -----------------------------------------------------------------------
%  A few commands to help in writing MPI man pages
%
\def\twoc#1#2{
\begin{list}
{\hbox to95pt{#1\hfil}}
{\setlength{\leftmargin}{120pt}
 \setlength{\labelwidth}{95pt}
 \setlength{\labelsep}{0pt}
 \setlength{\partopsep}{0pt}
 \setlength{\parskip}{0pt}
 \setlength{\topsep}{0pt}
}
\item
{#2}
\end{list}
}
\outer\long\def\onec#1{
\begin{list}
{}
{\setlength{\leftmargin}{25pt}
 \setlength{\labelwidth}{0pt}
 \setlength{\labelsep}{0pt}
 \setlength{\partopsep}{0pt}
 \setlength{\parskip}{0pt}
 \setlength{\topsep}{0pt}
}
\item
{#1}
\end{list}
}
\def\manhead#1{\noindent{\bf{#1}}}


\hyphenation{RE-DIS-TRIB-UT-ABLE sub-script mul-ti-ple}

\begin{document}

\setcounter{page}{1}
\pagenumbering{roman}

\title{ {\em D R A F T} \\ Document for a Standard Message-Passing Interface}

\author{Scott Berryman, {\em Yale Univ} \\
James Cownie, {\em Meiko Ltd} \\
Jack Dongarra, {\em Univ. of Tennessee and ORNL} \\
Al Geist, {\em ORNL} \\
Bill Gropp, {\em ANL} \\
Rolf Hempel, {\em GMD} \\
Bob Knighten, {\em Intel} \\
Rusty Lusk, {\em ANL} \\
Steve Otto, {\em Oregon Graduate Inst} \\
Tony Skjellum, {\em Missisippi State Univ} \\
Marc Snir, {\em IBM T. J. Watson} \\
David Walker, {\em ORNL} \\
Steve Zenith, {\em Kuck \& Associates}    }

\date{March 25, 1993 \\
This work was supported by ARPA and NSF under contract number \#\#\#,
by the National Science Foundation Science and
Technology Center Cooperative Agreement No. CCR-8809615.
}

\maketitle
\hfuzz=5pt
%\tableofcontents

%\begin{abstract}
%We don't have an abstract yet.
%\end{abstract}

\setcounter{page}{1}
\pagenumbering{arabic}

\chapter{Process Topologies}
\label{sec:topol}
%-----------------------------------------------------------------------
%
%  file topol.tex
%

\section{Introduction}

A process group in MPI is a collection of n processes. Each process in
the group is assigned a rank between 0 and n-1. In the majority of
parallel applications this linear ordering does not reflect the
communication structure of the processes which is usually determined
by the underlying problem geometry and the numerical algorithm used.
Often the processes are arranged in topological patterns as simple as
a two-- or three--dimensional grid.

For the user who programs an application on such a process structure
the most natural way of referring to individual processes is to specify
their coordinates in the process grid. Usually a process does
not have to know the PID numbers of {\em all} processes in the grid,
because communication only takes place with processes in a certain
neighborhood, and perhaps with a few distant processes. Non--scalable
features like the explicit listing of all participating
processes in the application could, therefore, be avoided, if
there were a means to specify the information which is really required.

Additionally, the user--defined process structure can be exploited
by the system in the assignment of processes to hardware processors,
if this helps to improve the communication performance on a given
machine. How this mapping is done in detail is outside the scope of
this standardization proposal, since it is too much dependent on the
particular hardware. The description of a ``virtual process topology'',
however, only depends on the
application, and is, therefore, machine--independent. The functions
which are proposed in this paper only deal with this side of the mapping
problem.

There are well--known techniques for mapping grid/torus structures to
hardware to\-po\-logies such as hypercubes or grids. But even for more
complicated graph structures good heuristics often yield near--optimal
results \cite{suprenum}. On the other hand,
if there is no way for the user to specify the logical process
arrangement as a ``virtual topology'', this information is most
difficult to recover later. A random mapping is most
likely the consequence. On some machines this will lead to
unnecessary contention in the interconnect network.
Some details about predicted and measured
performance improvements which result from good process--to--processor
mapping on modern wormhole--routing architectures can be found in
\cite{wormhole1,wormhole2}.
%
\section{Virtual Topologies}
%
In the most general case the connection structure of a set of
processes can be represented by a graph. The nodes stand for
the processes, and the edges connect processes which communicate
with each other. MPI provides message--passing between any pair
of processes in a group. There is no requirement for opening
a channel explicitly. Therefore, a ``missing link'' in the user--defined
process graph does not prevent the corresponding processes from
exchanging messages. It only means that this connection is neglected
in the virtual topology. As a consequence, an automatic mapping tool
will not try to assign the processes to neighboring processors.

The graph definition function MPI\_GRAPH presented in this paper
does not include
any weighting of the communication volume along the different edges.
Processes are either neighbors or not. Experience with similar
techniques in PARMACS \cite{parmacs1,parmacs2}
show that this information is usually sufficient for a good mapping.
Additionally, a more precise specification would be more difficult
for the user to set up, and it would make the interface
functions more complicated.

In principle a function for the definition of such a graph structure
would be sufficient for all applications. However, in many
applications the graph structure is very regular, and the detailed
set--up of the graph would be inconvenient for the user
and resource--consuming during run time. A large fraction of all
parallel applications use process topologies like rings, or two-- 
or higher--dimensional grids or tori. These structures are
completely defined by the number of dimensions and the numbers
of processes in each coordinate direction.
Also, the mapping of grids and tori is generally an easier problem
then that of general graphs.  Thus, it is desirable to do the
mapping as grids and tori rather than obscuring the information in a
graph.

Therefore, in addition to the general graph cartesian structures of
arbitrary dimension are supported.
The topology definition function MPI\_CART can be used to describe both
grids and tori by specifying per coordinate direction whether the
process structure is periodic or not.
Similar functions are contained in EXPRESS \cite{express} and PARMACS.
Note that an n--dimensional hypercube is an n--dimensional torus with
2 processes per coordinate direction. Thus, special support for
hypercube structures is not necessary.

Based on the positions in the virtual topology a process can look up
the PID numbers of other processes by calling MPI\_INQPID.
The processes are specified by their logical node numbers (graph) or
rectangular process coordinates (grid/torus). Thus, it is possible to
inquire for the PID numbers of only those (few) processes with which
messages have to be exchanged.

\discuss{In the PT2PT discussion it is not yet decided how processes
are addressed. This could, for example, be done by unique identifiers,
or by their ranks in a group.
The topology handling will be adapted to whatever decision will be
taken in PT2PT.}
%
\section{Embedding in MPI}
%
The support for virtual topologies has to be fully integrated in the
framework of MPI. In particular, the virtual topology functions do not
interfere with the functions for process group creation and with those
for collective communication.
The current design of the process topology functions
is based on the following assumptions:
\begin{itemize}
\item MPI is free to choose any process in a group for any
location in the topology. There are no special processes which
have to be aligned with topology substructures. This assumption fits
best to a ``local SPMD model'' in which all processes in the same group
execute the same program.
\item One important feature of MPI are the process groups.
The treatment of virtual topologies has to take this concept into
account. The functions presented in this paper are not only compatible
with the process groups, they even take advantage of them for
the definition of mapping overlays and dynamic remapping during
execution time. Virtual process topologies help in the
subdivision of process groups which in many applications has to be
done along process coordinate lines. Furthermore, the definition of
collective gather--type communication calls benefits from the natural
ordering of processes in a logical topology.
\end{itemize}
The virtual topology handling follows the general MPI rule of
functional layering. At the bottom it is based on the general
process group creation function MPI\_CREATE\_GROUP plus a few
topology specific mapping functions. In principle this is sufficient
for defining topologies and use them in applications. 

A number of higher--level functions provide an interface which is
similar to what users of packages like Express and PARMACS are
familiar with. This level can be written in a portable way in terms of
the low--level functions. Implementations of the high--level functions
which bypass the low level may be advantageous on some systems in terms
of memory and cpu time usage, but this is not a requirement.
%
\section{Overview of the proposed MPI functions}
%
This chapter assumes the availability of the following MPI features
which are defined in other chapters:
\begin{enumerate}
\item An existing process group (e.g., the ALL group) can be
partitioned and/or renumbered using

\mpifunc{MPI\_CREATE\_GROUP(gid\_old, gid\_new, key, newrank).}

This function is called by all processes in group {\em gid\_old} loosely
synchronously. It creates as many different subgroups as there
are different values of {\em key}. The ranking in the newly created
groups is determined by the {\em newrank} values, with the process
ranks in the parent group for tie breaking.
\item There is an internal information cacheing facility,
which can be used by MPI routines to store and retrieve
information related to a process group. This facility was proposed
in the Context Subcommittee. High--level topology functions use
this possibility to store structure information for a process group,
which is then later used by topology inquiry functions. Also, special
shift functions which are based on the topological structure can take
advantage of this information.
\end{enumerate}
\discuss{If the information cacheing will not be part of MPI, the
topology information can be stored in opaque objects, handles to which
then have to be passed to the topology functions. Of course, this would
be less elegant than an internal handling.}
%
\subsection{Low--level topology functions}
%
On the lowest level groups are created by the general function
MPI\_CREATE\_GROUP. Using the input argument {\em newrank} the caller
can change the process ranks in the new group as compared to the
parent group. This feature can be used to efficiently map the
processes in the group to the positions in the topology. For each
class of topologies, therefore, there is a function which computes
the rank of the calling process in the new group, based on the size
and structure of the topology. Note that it is a valid implementation
if the new ranks are identical to the old ranks. So, if for a given
machine the placement of processes makes no difference, the
implementation of the rank computation functions is trivial.

For cartesian structures the function is

\mpifunc{MPI\_MAP\_CART(gid\_old, ndim, dims, period, newrank)} with
\begin{description}
\item[IN gid\_old] group id of parent group,
\item[IN ndim, dims, period] definition of cartesian structure,
\item[OUT newrank] rank of calling process in reordered group.
\end{description}

The corresponding function for general graph structures is

\mpifunc{MPI\_MAP\_GRAPH(god\_old, nodes, index, nglist, newrank)} with
\begin{description}
\item[IN gid\_old] group id of parent group,
\item[IN nodes, index, nglist] definition of graph structure,
\item[OUT newrank] rank of calling process in reordered group.
\end{description}

If the topology contains fewer processes than there are processes
in the parent group, the newrank values for the remaining processes
are set to MPI\_NORANK. 
%
\subsection{High--level topology functions}
%
In principle, all what is needed to create an MPI process group with
topological ordering are the two mapping functions and the general
group creation routine. However, this is not what the applications
programmer expects to see on his level of abstraction. Therefore,
another layer of functions is defined on top of the low--level
functions. This higher level can be portably implemented in terms
of the level below. Of course MPI implementors are free to bypass
the lower level for the sake of better performance or resource usage.

For cartesian and graph structures the functions MPI\_CART and
MPI\_GRAPH create a process group with topological structure.
They combine the call to the mapping function with the call to the
group creation routine. The user can decide whether the ranking in
the new group may be reordered (for a more efficient mapping) or not.
In the latter case the rank of the calling process is copied from the
parent group.
MPI\_CART is defined as

\mpifunc{MPI\_CART(gid\_old, gid\_cart, ndims, dims, period, reorder)}
with
\begin{description}
\item[IN gid\_old] group id of parent group,
\item[OUT gid\_cart] group id of cartesian group (if calling process is
                     part of it, else id of rest group),
\item[IN ndim, dims, period] definition of cartesian structure,
\item[IN reorder] ranking may be reordered or not.
\end{description}
The return value is the rank of the calling process in the cartesian
group (or MPI\_NORANK).

Apart from some local computations, MPI\_CART is based on the two
function calls

\mpifunc{MPI\_MAP\_CART (gid\_old, ndim, dims, period, newrank)} 

and

\mpifunc{MPI\_CREATE\_GROUP (gid\_old, gid\_cart, 0, newrank)}.
%
\vspace*{3.0ex}

For graph structures the corresponding routine is

\mpifunc{MPI\_GRAPH(gid\_old, gid\_graph, nodes, index, nglist, reorder)
} with
\begin{description}
\item[IN gid\_old] group id of parent group,
\item[OUT gid\_graph] group id of graph group (if calling process is
                      part of it, else id of rest group),
\item[IN nodes, index, nglist] definition of graph structure,
\item[IN reorder] ranking may be reordered or not.
\end{description}
%
\vspace*{3.0ex}

In the context subcommittee a mechanism has been proposed for cacheing
information which is associated with a process group. If that
feature will be part of MPI, the high--level topology functions
can store the following information:
\begin{enumerate}
\item Type of topology (cartesian/graph)
\item For a cartesian topology:
   \begin{itemize}
   \item ndim (number of dimensions),
   \item dims(*) (numbers of processes per coordinate direction),
   \item period(*) (periodicity information),
   \item own\_position(*) (own position in grid, could also be computed
                          from rank and dims(*))
   \end{itemize}
\end{enumerate}
For a graph structure no information has to be stored, because the
graph node number is the rank in the graph group, and the size of the
graph is the number of processes in that group.

In case the cacheing mechanism does not become part of MPI, the above
data have to be stored in an opaque object, a handle to which would
get included in the argument lists of all related topology functions.
Since this alternative would be much less elegant, the topology
section would very much benefit from the inclusion of the
cacheing facility.

\subsection{Topology inquiry functions}

If a topology has been defined with one of the above high--level 
functions, the topology information can be looked up using inquiry
functions. They all are local calls, and do not require any
communication. In the following the assumption is made that the
information cacheing is available. Otherwise the handle to the
opaque information object has to be added to the argument lists
(or replace the group identifier argument).

The function MPI\_INQMAP returns the type of mapping which is
assigned to a group. 

\mpifunc{map = MPI\_INQMAP(gid).}

The return value is one of the following:
\begin{itemize}
\item MPI\_CARTTOP: cartesian topology,
\item MPI\_GRAPHTOP: graph topology,
\item MPI\_NOTOP: no topology.
\end{itemize}

For a process group with cartesian ordering which has been created
by MPI\_CART, MPI\_INQCART looks up the following info:

\mpifunc{MPI\_INQCART(gid, maxdim, size, period, pos)} with
\begin{description}
\item[IN gid] group id of group with cartesian structure,
\item[IN maxdim] length of vectors size(*), period(*), and pos(*) in
                 the calling program,
\item[OUT size] number of processes for each coordinate direction,
\item[OUT period] periodicity yes/no for each coordinate direction,
\item[OUT pos] position of calling process in cartesian structure.
\end{description}

For a process group with cartesian structure, the function
MPI\_INQPID translates the logical process coordinates to process
ids as they are used by the point--to--point routines:

\mpifunc{pid = MPI\_INQPID(gid, location)} with

\begin{description}
\item[IN gid] group id of group with cartesian structure,
\item[IN location] coordinate vector of process.
\end{description}

\discuss{Depending on the decisions taken in the PT2PT subcommittee,
MPI\_INQPID might be changed to return the rank in the group rather
than a pid.}

\subsection{Partitioning of cartesian structures}

If a group has been created with MPI\_CART,
the function MPI\_PARTC
can be used to partition the group into subgroups which form
hyperplanes of the original process structure. As an example,
assume that MPI\_CART has defined a two--dimensional grid structure
on a process group. With a call to MPI\_PARTC this group can then be
split up into disjoint subgroups which represent rows or columns of the
original group. The function syntax is:

\mpifunc{MPI\_PARTC(gid, lostdim)} with

\begin{description}
\item[IN gid] group id of group with cartesian structure,
\item[IN lostdim] direction perpendicular to resulting hyperplanes.
\end{description}
The function returns the group identifier of the hyperplane group in
which the calling process is contained.

MPI\_PARTC uses the function MPI\_CREATE\_GROUP to partition the parent
group, using the process coordinate in direction {\tt lostdim} as the
key value. After a group has been partitioned by MPI\_PARTC, the
inquiry functions MPI\_INQCART and MPI\_INQPID consistently
refer to the grid sections if applied to a subgroup.

If the process topology is a cartesian structure, a collective shift
operation most likely is used along a coordinate direction. The function
MPI\_SHIFTGR partitions a cartesian group into one--dimensional
subgroups, which are all oriented in one coordinate direction.
Every process is contained in exactly one subgroup:

\mpifunc{MPI\_SHIFTGR(gid, direction)} with

\begin{description}
\item[IN gid] group id of group with cartesian structure,
\item[IN direction] coordinate direction of one--dimensional subgroups.
\end{description}

MPI\_SHIFTGR uses the function MPI\_CREATE\_GROUP to partition the
parent group. The return value is the group identifier of the 
one--dimensional subgroup to which the calling process belongs.

\discuss{Instead of creating one--dimensional subgroups and then use
the standard collective communication (circular or end--off) shift
functions, one could also define a topology based shift function.
It would look very much like the standard shift, with an additional
argument defining the coordinate direction for the shift. Depending
on the periodicity information of the cartesian structure, the shift
function could choose the circular or end--off version automatically.}

In a portable program the number of available processors usually is not
known at compile time. In the case of a cartesian topology the function
MPI\_MAKDIM helps in setting the numbers of processes per coodinate
direction, depending on the number of processes in the group and
optional constraints which can be specified by the user:

\mpifunc{MPI\_MAKDIM(gid, ndim, dims)} with

\begin{description}
\item[IN gid] group id of group which is to be structured,
\item[IN ndim] number of cartesian dimensions,
\item[IN/OUT dims] number of processes in each coordinate direction.
\end{description}

The processes of the group with ID number {\tt gid} are divided
as evenly as possible among {\tt ndim} dimensions, subject to the
constraint that all processes in the group are used. The caller may
further constrain the operation of this routine by specifying elements
of array {\tt dims}. If {\tt dims(i)} is set to a positive number, the
routine will fix the number of processes in coordinate direction {\tt i}
to {\tt dims(i)}. Processes will then be distributed among directions
where {\tt dims(i)} is set to 0, subject to the above constraints.

Note that an error will occur if {\tt dims(i)} is positive and does not
evenly divide the number of processes in the group. Negative input
values of {\tt dims(i)} will also cause an error. All elements of
{\tt dims(*)} must be set to 0 for completely automatic process
distribution.  

When the function returns, {\tt dims(i)} will be set to the number of
processes in coordinate direction {\tt i}. For {\tt dims(i)} not set by
the user, {\tt dims(i)} will be ordered (MAXIMUM, ..., MINIMUM). Array
{\tt dims(*)} is suitable for use as input to routine MPI\_CART.
%
\section{A simple example}
%
The example in figure \ref{poisson} shows how the grid definition and
inquiry functions can be used in an application program. A partial
differential equation, for example the Poisson equation, is to be
solved on a rectangular domain.
First the processes organize themselves in a two--dimensional
structure. Each process then inquires for the PID numbers of its
neighbors in the four directions.
The numerical problem is solved by an iterative method, the details
of which are hidden in the subroutine {\tt relax}.

In each relaxation step each process computes new values for the 
solution grid function at all points owned by the
process. Then the values at interprocess boundaries have to be
exchanged with neighboring processes.
For example, the exchange subroutine might contain a call like
MPI\_SENDB(...,neigh\_pid(1),...) to send updated values to the 
left--hand neighbor (i-1,j).
Note that there is only local communication in this exchange operation.

\begin{figure}
\begin{tabbing}
=====\===\======\kill
%
\>integer ndim, mx\_neigh                                           \\
\>parameter (ndim=2, mx\_neigh=4)                                   \\
\>integer gid, gid\_cart, dims(ndim), neigh\_def(2),
          neigh\_pid(mx\_neigh)                                     \\
\>integer own\_position(ndim), period(ndim), i, j, num\_neigh, ret,
          rank                                                      \\
\>real$\ast$8 u(0:101,0:101), f(0:101,0:101)                        \\
\>data dims / ndim $\ast$ 0 /                                       \\
C  \hspace{5mm} Create a grid structure in ALL group and inquire
                                                  about own position\\
\>gid = ALL                                                         \\
C  \hspace{5mm} Set process grid size and periodicity               \\
\>ret = MPI\_MAKDIM(gid, ndim, dims)                                \\
\>if (ret .lt. 0) call error\_handler(ret)                          \\
\>period(1) = MPI\_PER                                              \\
\>period(2) = MPI\_PER                                              \\
\>rank = MPI\_CART (gid, gid\_cart, ndim, dims, period)             \\
C  \hspace{5mm} If not a grid process: stop                         \\
\>if (rank .eq. MPI\_NORANK) stop                                   \\
\>call MPI\_INQCART (gid\_cart, ndim, dims, period, own\_position) \\
C  \hspace{5mm} Look up the PID numbers for the neighbors.
                               Own process coordinates are (i,j).   \\
C  \hspace{5mm} Neighbors are (i--1,j), (i+1,j), (i,j--1), (i,j+1)  \\
\>i = own\_position(1)                                              \\
\>j = own\_position(2)                                              \\
\>neigh\_def(1) = i--1                                            \\
\>neigh\_def(2) = j                                               \\
\>neigh\_pid(1) = MPI\_INQPID (gid, neigh\_def)                   \\
\>neigh\_def(1) = i+1                                             \\
\>neigh\_def(2) = j                                               \\
\>neigh\_pid(2) = MPI\_INQPID (gid, neigh\_def)                   \\
\>neigh\_def(1) = i                                               \\
\>neigh\_def(2) = j--1                                            \\
\>neigh\_pid(3) = MPI\_INQPID (gid, neigh\_def)                   \\
\>neigh\_def(1) = i                                               \\
\>neigh\_def(2) = j+1                                             \\
\>neigh\_pid(4) = MPI\_INQPID (gid, neigh\_def)                   \\
\>num\_neigh = mx\_neigh                                            \\
C  \hspace{5mm} Initialize the grid functions and start the
                                                        iteration   \\
\>call init (u, f)                                                  \\
\>do 10 it=1,100                                                    \\
\>\>call relax (u, f)                                               \\
C  \hspace{5mm} Exchange data with neighbor processes               \\
\>\>call exchange (u, neigh\_pid)                                   \\
10 \>continue                                                       \\
\>call output (u)                                                   \\
\>end                                                               \\
\end{tabbing}
\caption{Set--up of process structure for two--dimensional
parallel Poisson solver.}
\label{poisson}
\end{figure}
\end{document}
From owner-mpi-ptop@CS.UTK.EDU  Tue May  4 11:09:49 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA18199; Tue, 4 May 93 11:09:49 -0400
Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA11791; Tue, 4 May 93 11:08:28 -0400
X-Resent-To: mpi-ptop@CS.UTK.EDU ; Tue, 4 May 1993 11:08:27 EDT
Errors-To: owner-mpi-ptop@CS.UTK.EDU
Received: from super.super.org by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA11783; Tue, 4 May 93 11:08:25 -0400
Received: from b124.super.org by super.super.org (4.1/SMI-4.1)
	id AA10322; Tue, 4 May 93 11:08:22 EDT
Received: by b124.super.org (4.1/SMI-4.1)
	id AA02846; Tue, 4 May 93 11:08:19 EDT
Date: Tue, 4 May 93 11:08:19 EDT
From: lederman@super.org (Steve Huss-Lederman)
Message-Id: <9305041508.AA02846@b124.super.org>
To: mpi-ptop@cs.utk.edu
Subject: comments on 4/25 draft

I generally like Rolf's chapter.  Thanks for doing it :-).  Below are
a few points:

On p. 2 is a discussion of why not to have weights in MPI_GRAPH.  Why
not have a second call that allows weights.  If the user knows them
then this information can be useful.  To use Rolf's own argument
against himself: It is most difficult to recover later :-) I agree it
takes more work, so have the two level approach and make a separate
call for the more complex case.  An implementation can always ignore
the weights and do a regular MPI_GRAPH.  (which can also be ignored
;-)

On p. 3 near the top the first bullet says: "fits best to a local SPMD
model in which...."  Why is this the case because we don't have
alignment with substructures?  I am probably being slow because I
don't see the argument.

In the MPI_CREATE_GROUP (bottom p. 3) says "The ranking in the newly
created groups is determined by the newrank values, with the process
ranks in the parent group for tie breaking."  I'm missing something.
Is newrank both input and output?  How does the newrank determine the
rank?

I assume a later draft will have more details on the arguments
concerning the topologies in MPI_MAP_CART/GRAPH (p. 4).

The issue of how we number the location (coordinates) in MPI_INQPID
seems lost (p. 6 near bottom).  Did we vote to have both and place
that information in the descriptor.  (Both being 0 and 1 up
numbering).  Is this correct?  Either way the draft needs to state
which one.  If it is both then the create and inquire functions need
some changes.

And now for a small point to wonder about when you have nothing else
to do:  In the example on p. 9 do you need the line:
if(rank .eq. MPI_NORANK) stop?
If MPI_MAKDIM works correctly then it places all the nodes in one of
the  dimensions.  thus all processes get a group.  Correct?  Just
added this one to let you know I actually read the whole thing :-)

Steve
From owner-mpi-ptop@CS.UTK.EDU  Wed May  5 05:27:50 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA18080; Wed, 5 May 93 05:27:50 -0400
Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA01022; Wed, 5 May 93 05:26:38 -0400
X-Resent-To: mpi-ptop@CS.UTK.EDU ; Wed, 5 May 1993 05:26:36 EDT
Errors-To: owner-mpi-ptop@CS.UTK.EDU
Received: from gmdzi.gmd.de by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA00833; Wed, 5 May 93 05:26:20 -0400
Received: from f1neuman.gmd.de (f1neuman) by gmdzi.gmd.de with SMTP id AA21501
  (5.65c/IDA-1.4.4 for <mpi-ptop@cs.utk.edu>); Wed, 5 May 1993 11:25:26 +0200
Received: by f1neuman.gmd.de id AA15664; Wed, 5 May 1993 11:25:42 GMT
Date: Wed, 5 May 1993 11:25:42 GMT
From: Rolf.Hempel@gmd.de
Message-Id: <9305051125.AA15664@f1neuman.gmd.de>
To: mpi-ptop@cs.utk.edu
Subject: Revised draft
Cc: gmap10@f1neuman.gmd.de


Hi there,

many thanks to Steve and Tom for reading my draft so carefully, and for
their many suggestions for improvements. I tried to implement all their
comments into a revised version which I send you with this note.
In an additional message you will receive the corresponding PostScript.
Please send me your comments as soon as possible, because I will have
to give the text to Steve Otto for inclusion into the MPI document
soon.
  Apart from the notes of Steve and Tom I did not get any comments.
This can either mean that the text as it stands is okay with everybody
else, or that nobody else cares any more. Pessimistic as I usually am,
I fear the second alternative comes nearer to the truth. Any comment?

  Steve raised two points which I would like to shortly answer here.
He wrote:

> On p. 3 near the top the first bullet says: "fits best to a local SPMD
> model in which...."  Why is this the case because we don't have
> alignment with substructures?  I am probably being slow because I
> don't see the argument.

What I meant is the following: the system is free to choose the
topological location for a process (which is already running) only if
they all run the same program. If, for example, a grid boundary were
handled by a different code, this assumption would no longer hold.
This is what I called the local SPMD program (local, because it doesn't
matter if other process groups run different programs).

Steve then continues:

> In the MPI_CREATE_GROUP (bottom p. 3) says "The ranking in the newly
> created groups is determined by the newrank values, with the process
> ranks in the parent group for tie breaking."  I'm missing something.
> Is newrank both input and output?  How does the newrank determine the
> rank?

I referred to the group creation funtion which was proposed by Marc
Snir (under the name MPI_NEW_CONTEXT). I renamed his input argument
"index" to "newrank" to avoid confusion with the index vector of the
graph mapping function. (Sorry that this way I obviously created more
confusion than I avoided). Thus, newrank is an input argument, and it is
used for determining the rank in the newly created group. If two or
more processes call the function with the same newrank value, their
ranks in the parent group are used for tie breaking.

Best regards,
  Rolf
---------------------- LaTex source follows ----------------------------
%     MPI Authors:
% This is MY version of YOUR chapter.  It has a wrapper so that you
% should be able to simply LaTeX this.
%
% Please work from this text so that we are in synch.
%
% --Steve Otto

\documentstyle[twoside,11pt]{report}
\pagestyle{headings}
%\markright{ {\em Draft Document of the MPI Standard,\/ \today} }
\marginparwidth 0pt
\oddsidemargin=.25in
\evensidemargin  .25in
\marginparsep 0pt
\topmargin=-.5in
\textwidth=6.0in
\textheight=9.0in
\parindent=2em

%   ----------------------------------------------------------------------
%   mpi-macs.tex  --- man page macros,
%                discuss, missing, mpifunc macros
%
% ----------------------------------------------------------------------
% a couple of commands from Marc Snir, modified S. Otto

\newlength{\discussSpace}
\setlength{\discussSpace}{.7cm}

\newcommand{\discuss}[1]{\vspace{\discussSpace} {\small {\bf Discussion:} #1} \vspace{\discussSpace}
}

\newcommand{\missing}[1]{\vspace{\discussSpace} {\small {\bf Missing:} #1} \vspace{\discussSpace}
}

\newlength{\codeSpace}
\setlength{\codeSpace}{.3cm}

\newcommand{\mpifunc}[1]{\vspace{\codeSpace} {\bf #1} \vspace{\codeSpace} }

% -----------------------------------------------------------------------
%  A few commands to help in writing MPI man pages
%
\def\twoc#1#2{
\begin{list}
{\hbox to95pt{#1\hfil}}
{\setlength{\leftmargin}{120pt}
 \setlength{\labelwidth}{95pt}
 \setlength{\labelsep}{0pt}
 \setlength{\partopsep}{0pt}
 \setlength{\parskip}{0pt}
 \setlength{\topsep}{0pt}
}
\item
{#2}
\end{list}
}
\outer\long\def\onec#1{
\begin{list}
{}
{\setlength{\leftmargin}{25pt}
 \setlength{\labelwidth}{0pt}
 \setlength{\labelsep}{0pt}
 \setlength{\partopsep}{0pt}
 \setlength{\parskip}{0pt}
 \setlength{\topsep}{0pt}
}
\item
{#1}
\end{list}
}
\def\manhead#1{\noindent{\bf{#1}}}


\hyphenation{RE-DIS-TRIB-UT-ABLE sub-script mul-ti-ple}

\begin{document}

\setcounter{page}{1}
\pagenumbering{roman}

\title{ {\em D R A F T} \\ Document for a Standard Message-Passing Interface}

\author{Scott Berryman, {\em Yale Univ} \\
James Cownie, {\em Meiko Ltd} \\
Jack Dongarra, {\em Univ. of Tennessee and ORNL} \\
Al Geist, {\em ORNL} \\
Bill Gropp, {\em ANL} \\
Rolf Hempel, {\em GMD} \\
Bob Knighten, {\em Intel} \\
Rusty Lusk, {\em ANL} \\
Steve Otto, {\em Oregon Graduate Inst} \\
Tony Skjellum, {\em Missisippi State Univ} \\
Marc Snir, {\em IBM T. J. Watson} \\
David Walker, {\em ORNL} \\
Steve Zenith, {\em Kuck \& Associates}    }

\date{March 25, 1993 \\
This work was supported by ARPA and NSF under contract number \#\#\#,
by the National Science Foundation Science and
Technology Center Cooperative Agreement No. CCR-8809615.
}

\maketitle
\hfuzz=5pt
%\tableofcontents

%\begin{abstract}
%We don't have an abstract yet.
%\end{abstract}

\setcounter{page}{1}
\pagenumbering{arabic}

\chapter{Process Topologies}
\label{sec:topol}
%-----------------------------------------------------------------------
%
%  file topol.tex
%

\section{Introduction}

A process group in MPI is a collection of n processes. Each process in
the group is assigned a rank between 0 and n-1. In the majority of
parallel applications this linear ordering does not reflect the
communication structure of the processes which is usually determined
by the underlying problem geometry and the numerical algorithm used.
Often the processes are arranged in topological patterns as simple as
a two-- or three--dimensional grid.

For the user who programs an application on such a process structure
the most natural way of referring to individual processes is to specify
their coordinates in the process grid. Usually a process does
not have to know the PID numbers of {\em all} processes in the grid,
because communication only takes place with processes in a certain
neighborhood, and perhaps with a few distant processes. Non--scalable
features like the explicit listing of all participating
processes in the application could, therefore, be avoided, if
there were a means to specify the information which is really required.

Additionally, the user--defined process structure can be exploited
by the system in the assignment of processes to hardware processors,
if this helps to improve the communication performance on a given
machine. How this mapping is done in detail is outside the scope of
this standardization proposal, since it is too much dependent on the
particular hardware. The description of a ``virtual process topology'',
however, only depends on the
application, and is, therefore, machine--independent. The functions
which are proposed in this paper only deal with this side of the mapping
problem.

There are well--known techniques for mapping grid/torus structures to
hardware to\-po\-logies such as hypercubes or grids. But even for more
complicated graph structures good heuristics often yield near--optimal
results \cite{suprenum}. On the other hand,
if there is no way for the user to specify the logical process
arrangement as a ``virtual topology'', this information is most
difficult to recover later. A random mapping is most
likely the consequence. On some machines this will lead to
unnecessary contention in the interconnect network.
Some details about predicted and measured
performance improvements which result from good process--to--processor
mapping on modern wormhole--routing architectures can be found in
\cite{wormhole1,wormhole2}.
%
\section{Virtual Topologies}
%
In the most general case the connection structure of a set of
processes can be represented by a graph. The nodes stand for
the processes, and the edges connect processes which communicate
with each other. MPI provides message--passing between any pair
of processes in a group. There is no requirement for opening
a channel explicitly. Therefore, a ``missing link'' in the user--defined
process graph does not prevent the corresponding processes from
exchanging messages. It only means that this connection is neglected
in the virtual topology. As a consequence, an automatic mapping tool
will not try to assign the processes to neighboring processors.

The graph definition function MPI\_GRAPH presented in this paper
does not include
any weighting of the communication volume along the different edges.
Processes are either neighbors or not. Experience with similar
techniques in PARMACS \cite{parmacs1,parmacs2}
show that this information is usually sufficient for a good mapping.
Additionally, a more precise specification would be more difficult
for the user to set up, and it would make the interface
functions more complicated.

\discuss{One could also have two graph mapping functions, one of
which uses communication weighting, whereas the other does not.
The mapping function with weighting,
\linebreak
MPI\_MAP\_WGRAPH, would then
have an additional input argument {\tt weights} with the same structure
as the neighbor list {\tt nglist}. On the higher abstraction level
the function MPI\_GRAPH would be complemented by MPI\_WGRAPH in the
same way.}

In principle a function for the definition of such a graph structure
would be sufficient for all applications. However, in many
applications the graph structure is very regular, and the detailed
set--up of the graph would be inconvenient for the user
and resource--consuming during run time. A large fraction of all
parallel applications use process topologies like rings, or two-- 
or higher--dimensional grids or tori. These structures are
completely defined by the number of dimensions and the numbers
of processes in each coordinate direction.
Also, the mapping of grids and tori is generally an easier problem
then that of general graphs.  Thus, it is desirable to do the
mapping as grids and tori rather than obscuring the information in a
graph.

Therefore, in addition to the general graph cartesian structures of
arbitrary dimension are supported.
The topology definition function MPI\_CART can be used to describe both
grids and tori by specifying per coordinate direction whether the
process structure is periodic or not.
Similar functions are contained in EXPRESS \cite{express} and PARMACS.
Note that an n--dimensional hypercube is an n--dimensional torus with
2 processes per coordinate direction. Thus, special support for
hypercube structures is not necessary.

Based on the positions in the virtual topology a process can look up
the PID numbers of other processes by calling MPI\_INQPID.
The processes are specified by their logical node numbers (graph) or
rectangular process coordinates (grid/torus). Thus, it is possible to
inquire for the PID numbers of only those (few) processes with which
messages have to be exchanged.

\discuss{In the PT2PT discussion it is not yet decided how processes
are addressed. This could, for example, be done by unique identifiers,
or by their ranks in a group.
The topology handling will be adapted to whatever decision will be
taken in PT2PT.}
%
\section{Embedding in MPI}
%
The support for virtual topologies has to be fully integrated in the
framework of MPI. In particular, the virtual topology functions do not
interfere with the functions for process group creation and with those
for collective communication.
The current design of the process topology functions
is based on the following assumptions:
\begin{itemize}
\item MPI is free to choose any process in a group for any
location in the topology. There are no special processes which
have to be aligned with topology substructures. This assumption fits
best to a ``local SPMD model'' in which all processes in the same group
execute the same program.
\item One important feature of MPI are the process groups.
The treatment of virtual topologies has to take this concept into
account. The functions presented in this paper are not only compatible
with the process groups, they even take advantage of them for
the definition of mapping overlays and dynamic remapping during
execution time. Virtual process topologies help in the
subdivision of process groups which in many applications has to be
done along process coordinate lines. Furthermore, the definition of
collective gather--type communication calls benefits from the natural
ordering of processes in a logical topology.
\end{itemize}
The virtual topology handling follows the general MPI rule of
functional layering. At the bottom it is based on the general
process group creation function MPI\_CREATE\_GROUP plus a few
topology specific mapping functions. In principle this is sufficient
for defining topologies and use them in applications. 

A number of higher--level functions provide an interface which is
similar to what users of packages like Express and PARMACS are
familiar with. This level can be written in a portable way in terms of
the low--level functions. Implementations of the high--level functions
which bypass the low level may be advantageous on some systems in terms
of memory and cpu time usage, but this is not a requirement.
%
\section{Overview of the proposed MPI functions}
%
This chapter assumes the availability of the following MPI features
which are defined in other chapters:
\begin{enumerate}
\item An existing process group (e.g., the ALL group) can be
partitioned and/or renumbered using

\mpifunc{MPI\_CREATE\_GROUP(gid\_old, gid\_new, key, newrank).}

This function is called by all processes in group {\em gid\_old} loosely
synchronously. It creates as many different subgroups as there
are different values of {\em key}. The ranking in the newly created
groups is determined by the {\em newrank} values, with the process
ranks in the parent group for tie breaking.
\item There is an internal information cacheing facility,
which can be used by MPI routines to store and retrieve
information related to a process group. This facility was proposed
in the Context Subcommittee. High--level topology functions use
this possibility to store structure information for a process group,
which is then later used by topology inquiry functions. Also, special
shift functions which are based on the topological structure can take
advantage of this information.
\end{enumerate}
\discuss{If the information cacheing will not be part of MPI, passing
the topology information for a group from one topology function to
the other can be handled in several other ways which will be discussed
later.}

There has been a general decision in MPI to start all numbering with
0 instead of 1. Thus, coordinates in a cartesian structure are
0,1, ..., dim-1. In the same way, nodes in a general graph are
numbered zero up.
%
\subsection{Low--level topology functions}
%
On the lowest level groups are created by the general function
MPI\_CREATE\_GROUP. Using the input argument {\em newrank} the caller
can change the process ranks in the new group as compared to the
parent group. This feature can be used to efficiently map the
processes in the group to the positions in the topology. For each
class of topologies, therefore, there is a function which computes
the rank of the calling process in the new group, based on the size
and structure of the topology. Note that it is a valid implementation
if the new ranks are identical to the old ranks. So, if for a given
machine the placement of processes makes no difference, the
implementation of the rank computation functions is trivial.

For cartesian structures the function is

\mpifunc{newrank = MPI\_MAP\_CART(gid\_old, ndim, dims, period)} with
\begin{description}
\item[IN gid\_old] group id of parent group,
\item[IN ndim] number of dimensions of cartesian structure,
\item[IN dims(*)] number of processes in each coordinate direction,
\item[IN period(*)] periodicity specification in each coordinate
                    direction.
\end{description}
The return value is the reordered rank of the calling process. \\[4.0ex]

The corresponding function for general graph structures is

\mpifunc{newrank = MPI\_MAP\_GRAPH(gid\_old, nodes, index, nglist)} with
\begin{description}
\item[IN gid\_old] group id of parent group,
\item[IN nodes] number of graph nodes,
\item[IN index(*), nglist(*)] definition of graph structure:
For each graph node its set of neighbors is entered, i.~e., the set of
processes with which the node process is going to communicate most
frequently. Since there is no weighting of node connections, it might be
sensible to specify only those neighbors with which there is a
considerable amount of communication.

For each node $i\;\:(0 \leq i \leq nodes-1)$
the list of the neighbor nodes
is stored at $nglist(j),\;\: index(i) \leq j
\leq index(i+1)-1$. For the
last process $index(i+1)$ points to the first free position
in vector nglist. Note that the matrix is symmetric, i.~e., if node 
{\em i} is a neighbor of node {\em j}, than node {\em j} is also a
neighbor of node {\em i}. This property can be used for an internal
checking of the input arguments.
\end{description}
Again, the function returns the reordered rank of calling process.
\\[4.0ex]
If the topology contains fewer processes than there are processes
in the parent group, the newrank values for the remaining processes
are set to MPI\_NORANK. 
%
\subsection{High--level topology functions}
%
In principle, all that is needed to create an MPI process group with
topological ordering are the two mapping functions and the general
group creation routine. However, this is not what the applications
programmer expects to see on his level of abstraction. Therefore,
another layer of functions is defined on top of the low--level
functions. This higher level can be portably implemented in terms
of the level below. Of course MPI implementors are free to bypass
the lower level for the sake of better performance or resource usage.

For cartesian and graph structures the functions MPI\_CART and
MPI\_GRAPH create a process group with topological structure.
They combine the call to the mapping function with the call to the
group creation routine. The user can decide whether the ranking in
the new group may be reordered (for a more efficient mapping) or not.
In the latter case the rank of the calling process is copied from the
parent group.

The option of not reordering the process ranks can be useful in the
case of an overlay of different topologies. The user can then fully
control which location in the first topology coincides with which
location in the second one. The price which one obviously has to pay
in this case is that for only one topology the process arrangement
can be optimized.

MPI\_CART is defined as

\mpifunc{MPI\_CART(gid\_old, gid\_cart, ndims, dims, period, reorder)}
with
\begin{description}
\item[IN gid\_old] group id of parent group,
\item[OUT gid\_cart] group id of cartesian group (if calling process is
                     part of it, else id of rest group),
\item[IN ndim, dims(*), period(*)] definition of cartesian structure,
                                   (for details see the definition of
                                    MPI\_MAP\_CART)
\item[IN reorder] ranking may be reordered or not.
\end{description}
The return value is the rank of the calling process in the cartesian
group (or MPI\_NORANK).

Apart from some local computations, MPI\_CART is based on the two
function calls

\mpifunc{MPI\_MAP\_CART (gid\_old, ndim, dims, period, newrank)} 

and

\mpifunc{MPI\_CREATE\_GROUP (gid\_old, gid\_cart, 0, newrank)}.
%
\vspace*{3.0ex}

For graph structures the corresponding routine is

\mpifunc{MPI\_GRAPH(gid\_old, gid\_graph, nodes, index, nglist, reorder)
} with
\begin{description}
\item[IN gid\_old] group id of parent group,
\item[OUT gid\_graph] group id of graph group (if calling process is
                      part of it, else id of rest group),
\item[IN nodes, index(*), nglist(*)] definition of graph structure,
                                     (for details see the definition of
                                      MPI\_MAP\_GRAPH)
\item[IN reorder] ranking may be reordered or not.
\end{description}
%
\vspace*{3.0ex}

In the context subcommittee a mechanism has been proposed for cacheing
information which is associated with a process group. If that
feature will be part of MPI, it can be used by the high--level topology
functions to store the following information:
\begin{enumerate}
\item Type of topology (cartesian/graph)
\item For a cartesian topology:
   \begin{itemize}
   \item ndim (number of dimensions),
   \item dims(*) (numbers of processes per coordinate direction),
   \item period(*) (periodicity information),
   \item own\_position(*) (own position in grid, could also be computed
                          from rank and dims(*))
   \end{itemize}
\end{enumerate}
For a graph structure no information has to be stored, because the
graph node number is the rank in the graph group, and the size of the
graph is the number of processes in that group.

In case the cacheing mechanism does not become part of MPI, there are
two other possibilities: since the storage and retrieval of the above
information is only done by the topology functions, it can internally
be stored with other group information in an implementation--dependent
way, which each vendor can do as is most convenient.

As an alternative, the information could be stored in an opaque object,
a handle to which would have to be included in the argument lists of
all related topology functions. However, this alternative would be much
less elegant.

\subsection{Topology inquiry functions}

If a topology has been defined with one of the above high--level 
functions, the topology information can be looked up using inquiry
functions. They all are local calls, and do not require any
communication. In the following the assumption is made that the
information cacheing is available. Otherwise the handle to the
opaque information object has to be added to the argument lists
(or replace the group identifier argument).

The function MPI\_INQMAP returns the type of mapping which is
assigned to a group. 

\mpifunc{map = MPI\_INQMAP(gid).}

The return value is one of the following:
\begin{itemize}
\item MPI\_CARTTOP: cartesian topology,
\item MPI\_GRAPHTOP: graph topology,
\item MPI\_NOTOP: no topology.
\end{itemize}

For a process group with cartesian ordering which has been created
by MPI\_CART, MPI\_INQCART looks up the following info:

\mpifunc{dim = MPI\_INQCART(gid, maxdim, size, period, pos)} with
\begin{description}
\item[IN gid] group id of group with cartesian structure,
\item[IN maxdim] length of vectors size(*), period(*), and pos(*) in
                 the calling program,
\item[OUT size(*)] number of processes for each coordinate direction,
\item[OUT period(*)] periodicity yes/no for each coordinate direction,
\item[OUT pos(*)] position of calling process in cartesian structure.
\end{description}
The return value is the dimension of the cartesian structure.

For a process group with cartesian structure, the function
MPI\_INQPID translates the logical process coordinates to process
ids as they are used by the point--to--point routines:

\mpifunc{pid = MPI\_INQPID(gid, location)} with

\begin{description}
\item[IN gid] group id of group with cartesian structure,
\item[IN location] coordinate vector of process.
\end{description}

In a sense, the inverse operation to MPI\_INQPID is provided by the
function:

\mpifunc{MPI\_INQLOC(gid, rank, location, maxdim)} with

\begin{description}
\item[IN gid] group id of group with cartesian structure,
\item[IN rank] rank of a process within group {\tt gid},
\item[OUT location(*)] coordinate vector of process,
\item[IN maxdim] length of vector {\tt location} in the calling
                 program (only for error checking).
\end{description}
MPI\_INQLOC translates a rank in the group into a topology location.

\discuss{Depending on the decisions taken in the PT2PT subcommittee,
MPI\_INQPID might be changed to return the rank in the group rather
than a pid.}

\subsection{Partitioning of cartesian structures}

If a group has been created with MPI\_CART,
the function MPI\_PARTC
can be used to partition the group into subgroups which form
hyperplanes of the original process structure. As an example,
assume that MPI\_CART has defined a two--dimensional grid structure
on a process group. With a call to MPI\_PARTC this group can then be
split up into disjoint subgroups which represent rows or columns of the
original group. The function syntax is:

\mpifunc{MPI\_PARTC(gid, lostdim)} with

\begin{description}
\item[IN gid] group id of group with cartesian structure,
\item[IN lostdim] direction perpendicular to resulting hyperplanes.
\end{description}
The function returns the group identifier of the hyperplane group in
which the calling process is contained.

MPI\_PARTC uses the function MPI\_CREATE\_GROUP to partition the parent
group, using the process coordinate in direction {\tt lostdim} as the
key value. After a group has been partitioned by MPI\_PARTC, the
inquiry functions MPI\_INQCART and MPI\_INQPID consistently
refer to the grid sections if applied to a subgroup.

If the process topology is a cartesian structure, a collective shift
operation most likely is used along a coordinate direction. The function
MPI\_SHIFTGR partitions a cartesian group into one--dimensional
subgroups, which are all oriented in one coordinate direction.
Every process is contained in exactly one subgroup:

\mpifunc{MPI\_SHIFTGR(gid, direction)} with

\begin{description}
\item[IN gid] group id of group with cartesian structure,
\item[IN direction] coordinate direction of one--dimensional subgroups.
\end{description}

MPI\_SHIFTGR uses the function MPI\_CREATE\_GROUP to partition the
parent group. The return value is the group identifier of the 
one--dimensional subgroup to which the calling process belongs.

\discuss{Instead of creating one--dimensional subgroups and then use
the standard collective communication (circular or end--off) shift
functions, one could also define a topology based shift function.
It would look very much like the standard shift, with an additional
argument defining the coordinate direction for the shift. Depending
on the periodicity information of the cartesian structure, the shift
function could choose the circular or end--off version automatically.}

In a portable program the number of available processors usually is not
known at compile time. In the case of a cartesian topology the function
MPI\_MAKDIM helps in setting the numbers of processes per coodinate
direction, depending on the number of processes in the group and
optional constraints which can be specified by the user:

\mpifunc{MPI\_MAKDIM(gid, ndim, dims)} with

\begin{description}
\item[IN gid] group id of group which is to be structured,
\item[IN ndim] number of cartesian dimensions,
\item[IN/OUT dims] number of processes in each coordinate direction.
\end{description}

The processes of the group with ID number {\tt gid} are divided
as evenly as possible among {\tt ndim} dimensions, subject to the
constraint that all processes in the group are used. The caller may
further constrain the operation of this routine by specifying elements
of array {\tt dims}. If {\tt dims(i)} is set to a positive number, the
routine will fix the number of processes in coordinate direction {\tt i}
to {\tt dims(i)}. Processes will then be distributed among directions
where {\tt dims(i)} is set to 0, subject to the above constraints.

Note that an error will occur if {\tt dims(i)} is positive and does not
evenly divide the number of processes in the group. Negative input
values of {\tt dims(i)} will also cause an error. All elements of
{\tt dims(*)} must be set to 0 for completely automatic process
distribution.  

When the function returns, {\tt dims(i)} will be set to the number of
processes in coordinate direction {\tt i}. For {\tt dims(i)} not set by
the user, {\tt dims(i)} will be ordered (MAXIMUM, ..., MINIMUM). Array
{\tt dims(*)} is suitable for use as input to routine MPI\_CART.
%
\section{A simple example}
%
The example in figure \ref{poisson} shows how the grid definition and
inquiry functions can be used in an application program. A partial
differential equation, for example the Poisson equation, is to be
solved on a rectangular domain.
First the processes organize themselves in a two--dimensional
structure. Each process then inquires for the PID numbers of its
neighbors in the four directions.
The numerical problem is solved by an iterative method, the details
of which are hidden in the subroutine {\tt relax}.

In each relaxation step each process computes new values for the 
solution grid function at all points owned by the
process. Then the values at interprocess boundaries have to be
exchanged with neighboring processes.
For example, the exchange subroutine might contain a call like
MPI\_SENDC(...,neigh\_pid(1),...) to send updated values to the 
left--hand neighbor (i-1,j).
Note that there is only local communication in this exchange operation.

\begin{figure}
\begin{tabbing}
=====\===\======\kill
%
\>integer ndim, mx\_neigh                                           \\
\>parameter (ndim=2, mx\_neigh=4)                                   \\
\>integer gid, gid\_cart, dims(ndim), neigh\_def(2),
          neigh\_pid(mx\_neigh)                                     \\
\>integer own\_position(ndim), period(ndim), i, j, num\_neigh, ret,
          rank                                                      \\
\>real$\ast$8 u(0:101,0:101), f(0:101,0:101)                        \\
\>data dims / ndim $\ast$ 0 /                                       \\
C  \hspace{5mm} Create a grid structure in ALL group and inquire
                                                  about own position\\
\>gid = ALL                                                         \\
C  \hspace{5mm} Set process grid size and periodicity               \\
\>ret = MPI\_MAKDIM(gid, ndim, dims)                                \\
\>if (ret .lt. 0) call error\_handler(ret)                          \\
\>period(1) = MPI\_PER                                              \\
\>period(2) = MPI\_PER                                              \\
\>rank = MPI\_CART (gid, gid\_cart, ndim, dims, period)             \\
\>ret = MPI\_INQCART (gid\_cart, ndim, dims, period, own\_position) \\
C  \hspace{5mm} Look up the PID numbers for the neighbors.
                               Own process coordinates are (i,j).   \\
C  \hspace{5mm} Neighbors are (i--1,j), (i+1,j), (i,j--1), (i,j+1)  \\
\>i = own\_position(1)                                              \\
\>j = own\_position(2)                                              \\
\>neigh\_def(1) = i--1                                            \\
\>neigh\_def(2) = j                                               \\
\>neigh\_pid(1) = MPI\_INQPID (gid, neigh\_def)                   \\
\>neigh\_def(1) = i+1                                             \\
\>neigh\_def(2) = j                                               \\
\>neigh\_pid(2) = MPI\_INQPID (gid, neigh\_def)                   \\
\>neigh\_def(1) = i                                               \\
\>neigh\_def(2) = j--1                                            \\
\>neigh\_pid(3) = MPI\_INQPID (gid, neigh\_def)                   \\
\>neigh\_def(1) = i                                               \\
\>neigh\_def(2) = j+1                                             \\
\>neigh\_pid(4) = MPI\_INQPID (gid, neigh\_def)                   \\
\>num\_neigh = mx\_neigh                                            \\
C  \hspace{5mm} Initialize the grid functions and start the
                                                        iteration   \\
\>call init (u, f)                                                  \\
\>do 10 it=1,100                                                    \\
\>\>call relax (u, f)                                               \\
C  \hspace{5mm} Exchange data with neighbor processes               \\
\>\>call exchange (u, neigh\_pid)                                   \\
10 \>continue                                                       \\
\>call output (u)                                                   \\
\>end                                                               \\
\end{tabbing}
\caption{Set--up of process structure for two--dimensional
parallel Poisson solver.}
\label{poisson}
\end{figure}
\end{document}
From owner-mpi-ptop@CS.UTK.EDU  Wed May  5 05:30:36 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA18716; Wed, 5 May 93 05:30:36 -0400
Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA01134; Wed, 5 May 93 05:30:18 -0400
X-Resent-To: mpi-ptop@CS.UTK.EDU ; Wed, 5 May 1993 05:30:16 EDT
Errors-To: owner-mpi-ptop@CS.UTK.EDU
Received: from gmdzi.gmd.de by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA01101; Wed, 5 May 93 05:30:07 -0400
Received: from f1neuman.gmd.de (f1neuman) by gmdzi.gmd.de with SMTP id AA22153
  (5.65c/IDA-1.4.4 for <mpi-ptop@cs.utk.edu>); Wed, 5 May 1993 11:29:18 +0200
Received: by f1neuman.gmd.de id AA16964; Wed, 5 May 1993 11:29:34 GMT
Date: Wed, 5 May 1993 11:29:34 GMT
From: Rolf.Hempel@gmd.de
Message-Id: <9305051129.AA16964@f1neuman.gmd.de>
To: mpi-ptop@cs.utk.edu
Subject: PostScript
Cc: gmap10@f1neuman.gmd.de


Here is the PostScript file of the newest version of the PTOP draft.
I first compressed and then uuencoded it. Please send me your comments
as soon as possible. Thanks!

Rolf
------------------------ PostScript below ------------------------------
begin 664 PTOP.ps.Z
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
M89`!4P20?Y]EW?C^V4.MY"DI67:3IJ43E#