Thanks Jeff,

i could not find anything in the standard that says this is an invalid
usage ... so i can only agree this is a bug.

fwiw, example 4.23 is working fine with OpenMPI
but that is a different case : with MPI_Gather and friends, recv stuff
is irrelevant on non root task.
in the case of MPI_Alltoallw and friends, no parameter is ignored.

fortunatly, the fix is pretty trivial, so i will make a PR from now

Cheers,

Gilles


On Wed, Jan 13, 2016 at 9:37 AM, Jeff Hammond <jeff.scie...@gmail.com> wrote:
> Example 4.23 of MPI 3.1 (it is hardly a new example, but may have a
> different number in older versions) demonstrates the use of
> (buffer=NULL,count=0,type=MPI_DATATYPE_NULL).  While examples in the MPI
> standard are not normative text, this is certainly a valid use of MPI.  I
> can't find a citation where it says explicitly that this is correct, but it
> follows logically from other text.
>
> The MPICH macro MPIR_ERRTEST_USERBUFFER that is used through the code to
> test for valid user buffers begins with "if (count > 0..." and thus does
> concern itself with the type or buffer pointer when count=0.  Furthermore,
> this macro is redundantly protected with a count>0 check when used in
> MPI_Alltoallw (and other collectives).
>
> Best,
>
> Jeff
>
>
> On Tue, Jan 12, 2016 at 4:18 PM, Gilles Gouaillardet <gil...@rist.or.jp>
> wrote:
>>
>> Hi Jim,
>>
>> can you please confirm my understanding is correct :
>>
>> - OpenMPI does *not* accept MPI_DATATYPE_NULL as an input of MPI_Alltoallw
>> - mpich does accept MPI_DATATYPE_NULL as an input of MPI_Alltoallw *if*
>> the corresponding count *is* zero
>> - mpich does *not* accept MPI_DATATYPE_NULL as an input of MPI_Alltoallw
>> *if* the corresponding count is *not* zero
>>
>> So you are considering as a bug the fact OpenMPI does not accept
>> MPI_DATATYPE_NULL *with* a zero count.
>>
>> am i correct ?
>>
>> Cheers,
>>
>> Gilles
>>
>>
>> On 1/13/2016 8:27 AM, Jim Edwards wrote:
>>
>> Hi,
>>
>> I am using OpenMPI-1.8.3 built with gcc 4.8.3
>> and I am using an MPI_Alltoallw call to perform
>> an all to some (or some to all) communication.
>>
>> In the case in which my task is not sending (or receiving) any data I set
>> the
>> datatype for that send or recv buffer to MPI_DATATYPE_NULL - this
>> works fine with other mpi libraries but fails in openmpi.   If I set
>> the datatype to something else say MPI_CHAR - it works fine.   I think
>> that this is a bug in open-mpi - would you agree?
>>
>>
>>
>>
>> --
>> Jim Edwards
>>
>> CESM Software Engineer
>> National Center for Atmospheric Research
>> Boulder, CO
>>
>>
>> _______________________________________________
>> users mailing list
>> us...@open-mpi.org
>> Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/users
>> Link to this post:
>> http://www.open-mpi.org/community/lists/users/2016/01/28249.php
>>
>>
>>
>> _______________________________________________
>> users mailing list
>> us...@open-mpi.org
>> Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/users
>> Link to this post:
>> http://www.open-mpi.org/community/lists/users/2016/01/28250.php
>
>
>
>
> --
> Jeff Hammond
> jeff.scie...@gmail.com
> http://jeffhammond.github.io/
>
> _______________________________________________
> users mailing list
> us...@open-mpi.org
> Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/users
> Link to this post:
> http://www.open-mpi.org/community/lists/users/2016/01/28251.php

Reply via email to