[Mpi-forum] Question on Cartesian Topologies
Bronis R. de Supinski
bronis at llnl.gov
Mon Mar 7 09:22:09 CST 2011
I do not agree with your inference. The values in the
dims array are not ranks so you cannot extend rank
restrictions to them
I can envision algorithms for which providing 0 for a
dimension indicates that the communicator should be empty.
It would be inefficient for the application to check
if any dimension is 0. As the MPICH-2 implementation
demonstrates, this choice can be supported. I'll
admit that your interpretation is reasonable although
I think returning MPI_COMM_NULL is better. I also
agree that an error should be returned if any of the
dims is negative.
Regardless, the issue should not be left to inference.
We need to update the standard to clarify this issue.
On Mon, 7 Mar 2011, Michael Raymond wrote:
> While there's nothing specified in the definition of
> MPI_Cart_create(), you might be able to infer this from the definition
> of MPI_Cart_rank(). It specifies that a coordinate < 0 or >= the size
> of that dimension is out of range. 0 is >= 0, so it must be out of range.
> Tobias Hilbrich wrote:
>> Hi all,
>> LANL, LLNL and the University of Dresden are working on a follow up tool of the runtime correctness checking tools Marmot and Umpire, which is done in cooperation by developers of both tools.
>> We have some issues with basic correctness checks for integers. Were for most of the handles used in MPI calls there are fairly clear rules on what is allowed and what not, there are sometimes close to no rules for integer arguments. Most of the time common sense helps to come up with a reasonable assumption, but for the definition of cartesian communicators we are somewhat stuck, maybe you can help. (Maybe we missed some lines in the standard or are not aware of some base rule)
>> What is unclear to us is "what is a correct definition for a cartesian topology?", we found no clear definition for that. So basically we care about the "ndims" and "dims" values in calls like MPI_Cart_create. Is it allowed to specify a value of 0 for one of the entries in the "dims" array? The standard specifies no restrictions in the text following MPI_Cart_create, I am referring to MPI-2.2 here. E.g. is the following correct or not:
>> int dims
>> dims = 1;
>> dims = 1;
>> dims = 0; /*Is this ok/suspicious/erroneous ?*/
>> MPI_Cart_create( ... , 3 /*ndims*/, dims , ...);
>> Our little testing revealed that it causes OpenMPI, LAM-MPI, MPICH-1 to crash, whereas MPICH-2 returns MPI_COMM_NULL here.
>> many thanks, Tobias
>> P.S.: This is probably not the last os such questions, if this is a bad way to ask these we would be glad to get suggestions on how to raise them. A tool that validates whether an MPI application behaves according to the standard or not, hopefully provides some motivates to think about these troublesome questions ;)
>> Dipl.-Inf. Tobias Hilbrich
>> Wissenschaftlicher Mitarbeiter
>> Technische Universitaet Dresden
>> Zentrum fuer Informationsdienste und Hochleistungsrechnen (ZIH)
>> (Center for Information Services and High Performance Computing (ZIH))
>> Interdisziplinäre Anwenderunterstützung und Koordination
>> (Interdisciplinary Application Development and Coordination)
>> 01062 Dresden
>> Tel.: +49 (351) 463-32041
>> Fax: +49 (351) 463-37773
>> E-Mail: tobias.hilbrich at zih.tu-dresden.de
>> mpi-forum mailing list
>> mpi-forum at lists.mpi-forum.org
> Michael A. Raymond
> Message Passing Toolkit Team
> Silicon Graphics Inc
> (651) 683-3434
> mpi-forum mailing list
> mpi-forum at lists.mpi-forum.org
More information about the mpi-forum