As JH mentioned the examples are not normative. The type MPI_DATATYPE_NULL is not part of the MPI predefined datatypes, and as such is not expected to be a commited datatype, thus improper for communications (even when the count is 0).
George. On Tue, Jan 12, 2016 at 8:25 PM, Jim Edwards <jedwa...@ucar.edu> wrote: > Hi Gilles, > > I think that your conversation with Jeff pretty much covered it but > your understanding of my original problem is correct. > Thanks for the prompt response and the PR. > > On Tue, Jan 12, 2016 at 5:59 PM, Jeff Hammond <jeff.scie...@gmail.com> > wrote: > >> Consider MPI_Get_accumulate with op=MPI_NO_OP, which is used to achieve >> atomic Get. Obviously, one does not want to allocate and describe a source >> buffer that will not be touched by this. This is a case like MPI_Alltoallw >> where (NULL,0,MPI_DATATYPE_NULL) needs to work at participating processes. >> >> Best, >> >> Jeff >> >> On Tue, Jan 12, 2016 at 4:46 PM, Gilles Gouaillardet < >> gilles.gouaillar...@gmail.com> wrote: >> >>> 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 >>> _______________________________________________ >>> 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/28252.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/28253.php >> > > > > -- > 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/28254.php >