[mpi-21] Ballot 4 - 0-dim MPI_CART_CREATE and MPI_CART_SUB
Rolf Rabenseifner
rabenseifner at [hidden]
Thu Jan 24 10:30:03 CST 2008
On Thu, 24 Jan 2008 21:26:09 +0800
"William Yu" <wyu_at_[hidden]> wrote:
>Understood. Nice work. Thanks!
Thank you.
And here is the proposal to correct all the unclear specifications
on Cartesian topologies.
This is a proposal for MPI 2.1, Ballot 4.
________________________________________________________________
Proposal about handling zero-dimensional Cartesian communicators
that are produced with MPI_Cart_sub if all remain_dims are
false.
MPI-1.1 Sect.6.5.4, page 187, lines 38-42 (definition of MPI_Cart_sub)
reads
If a cartesian topology has been created with MPI_CART_CREATE,
the function MPI_CART_SUB can be used to partition the
communicator group into subgroups that form lower-dimensional
cartesian subgrids, and to build for each subgroup a
communicator with the associated subgrid cartesian topology.
(This function is closely related to MPI_COMM_SPLIT.)
but should read
If a cartesian topology has been created with MPI_CART_CREATE,
the function MPI_CART_SUB can be used to partition the
communicator group into subgroups that form lower-dimensional
cartesian subgrids, and to build for each subgroup a
communicator with the associated subgrid cartesian topology.
If all entries in remain_dims are false or comm is already
associated with a zero-dimensional Cartesian topology
then newcomm is associated with a zero-dimensional Cartesian
topology. (This function is closely related to MPI_COMM_SPLIT.)
Rationale for this clarification (not to be included into the
MPI standard): Several MPI implementations have implemented
the MPI-1 standard which requires a "lower-dimensional
cartesian" subgrid and that newcomm is "associated" with the
"subgrid Cartesian topology". Other MPI implementations
did not or only partially. Therefore, a clarification may help
that all MPI implementations implment the same interface.
________________________
MPI-1.1 Sect.6.5.4, page 183, lines 29-30 (definition of MPI_Cartdim_get
and MPI_Cart_get) reads:
The functions MPI_CARTDIM_GET and MPI_CART_GET return the
cartesian topology information that was associated with a
communicator by MPI_CART_CREATE.
but should read
The functions MPI_CARTDIM_GET and MPI_CART_GET return the
cartesian topology information that was associated with a
communicator by MPI_CART_CREATE. If comm is associated with a
zero-dimensional Cartesian topology, MPI_Cartdim_get returns
ndims=0 and MPI_Cart_get will keep all output arguments
unchanged.
Rationale for this clarification (not to be included into the
MPI standard): Zero-dimensional topologies have zero coords,
i.e., do not have coords and therefore also no dims, or periods.
________________________
MPI-1.1 Sect.6.5.4, page 184, lines 17-23 (definition of MPI_Cart_rank)
reads
For a process group with cartesian structure, the function
MPI_CART_RANK translates the logical process coordinates to
process ranks as they are used by the point-to-point routines.
For dimension i with periods(i) = true, if the coordinate,
coords(i), is out of range, that is, coords(i) < 0 or
coords(i) >= dims(i), it is shifted back to the interval
0 <= coords(i) < dims(i) automatically. Out-of-range
coordinates are erroneous for non-periodic dimensions.
but should read
For a process group with cartesian structure, the function
MPI_CART_RANK translates the logical process coordinates to
process ranks as they are used by the point-to-point routines.
For dimension i with periods(i) = true, if the coordinate,
coords(i), is out of range, that is, coords(i) < 0 or
coords(i) >= dims(i), it is shifted back to the interval
0 <= coords(i) < dims(i) automatically. Out-of-range
coordinates are erroneous for non-periodic dimensions.
If comm is associated with a zero-dimensional Cartesian
topology, coord is not significant and 0 is returned in rank.
Rationale for this clarification (not to be included into the
MPI standard): Zero-dimensional topologies have zero coords,
i.e., do not have coords. The communicator has only one process
and therefore only the rank 0 is valid.
________________________
MPI-1.1 Sect.6.5.4, page 184, lines 38-39 (definition of MPI_Cart_coords)
reads
The inverse mapping, rank-to-coordinates translation is
provided by MPI CART COORDS.
but should read
The inverse mapping, rank-to-coordinates translation is
provided by MPI CART COORDS.
If comm is associated with a zero-dimensional Cartesian
topology, coords will be unchanged.
Rationale for this clarification (not to be included into the
MPI standard): Zero-dimensional topologies have zero coords,
i.e., do not have coords.
________________________
Alternative 1:
--------------
MPI-1.1 Sect.6.5.5, page 186, after line 47 (end of definition
of MPI_Cart_shift), the following paragraph is added:
It is erroneous to call MPI_CART_SHIFT with comm that is
associated with a zero-dimensional Cartesian topology.
Rationale for this clarification (not to be included into the
MPI standard): It is impossible to define a correct input for
direction because there does not exist any directions in a
zero-dimensional topology. (This is currently implemented
by several MPI implementations.)
Alternative 2:
--------------
MPI-1.1 Sect.6.5.5, page 186, after line 47 (end of definition
of MPI_Cart_shift), the following paragraph is added:
If comm is associated with a zero-dimensional Cartesian
topology, then the input arguments direction and disp are
ignored and always MPI_PROC_NULL is returned in rank_source
and rank_dest.
Rationale for this clarification (not to be included into the
MPI standard): It is impossible to define a correct input for
direction because there does not exist any directions in a
zero-dimensional topology. For convenience, the routine
returns MPI_PROC_NULL.
_______________________
MPI-1.1 Sect.6.5.1, page 179, lines 29-30 (end of definition
of MPI_Cart_create) reads
The call is erroneous if it specifies a grid that is
larger than the group size.
but should read
The call is erroneous if it specifies a grid that is
larger than the group size or ndims is zero or negative.
Rationale for this clarification (not to be included into the
MPI standard):
Although it is allowed to produce zero-dimensional subgrids
with MPI_CART_SUB, it makes no sense to establish a
zero-dimensional grid a priori with MPI_CART_CREATE.
_______________________
MPI-1.1 Sect.6.5.4, page 184, lines 30 (definition of
MPI_Cart_coords) reads
IN maxdims length of vector coord in the calling program (integer)
but should read (missing s at coords)
IN maxdims length of vector coords in the calling program (integer)
Rationale for this clarification (not to be included into the
MPI standard): Typo.
_______________________
Best regards
Rolf Rabenseifner
PS: All background informations with reports from 5
different MPI implementations and their differences
have been in my previous mail on Wed, 23 Jan 2008 18:42:43.
Dr. Rolf Rabenseifner . . . . . . . . . .. email rabenseifner_at_[hidden]
High Performance Computing Center (HLRS) . phone ++49(0)711/685-65530
University of Stuttgart . . . . . . . . .. fax ++49(0)711 / 685-65832
Head of Dpmt Parallel Computing . . . www.hlrs.de/people/rabenseifner
Nobelstr. 19, D-70550 Stuttgart, Germany . (Office: Allmandring 30)
More information about the Mpi-21
mailing list