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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
M8Z;\A7,ADT(7LH6#86!