Thanks Jeff,

i found it at http://lists.mpi-forum.org/mpi-forum/2016/01/3152.php

i'd like to re-iterate what i wrote earlier about example 4.23
MPI_DATATYPE_NULL is used as a recv type on non root tasks,
and per the mpi 3.1 standard, recv type is "significant only at root"

in the case of MPI_Gatherv, MPI_DATATYPE_NULL is *not* significant,
but in the case of MPI_Alltoallw, it *is* significant.

as far as i am concerned, and to say the least, these are two distinct
shades of grey.


IMHO, it would be more intuitive if the use of MPI_DATATYPE_NULL was
allowed with a zero count, and in both MPI_Alltoallw *and*
MPI_Sendrecv.


i still believe George interpretation is the correct one, and Bill
Gropp agreed with him.


and btw, is example 4.23 correct ?
/* fwiw, i did copy/paste it and found several missing local variable
myrank, i, and comm
and i'd rather have MPI_COMM_WORLD than comm */

and what if recvcount is negative on non root task ?
should it be an error (negative int) or not (not significant value) ?

Cheers,

Gilles


On Wed, Jan 13, 2016 at 2:15 PM, Jeff Hammond <jeff.scie...@gmail.com> wrote:
> There's a thread about this on the MPI Forum mailing list already ;-)
>
> Jeff
>
>
> On Tuesday, January 12, 2016, Gilles Gouaillardet <gil...@rist.or.jp> wrote:
>>
>> Jim,
>>
>> if i understand correctly, George point is that OpenMPI is currently
>> correct with respect to the MPI standard :
>> MPI_DATATYPE_NULL is *not* a predefined datatype, hence it is not
>> (expected to be) a committed datatype,
>> and hence it cannot be used in MPI_Alltoallw (regardless the corresponding
>> count is zero).
>>
>> an other way to put this is mpich could/should have failed and/or you were
>> lucky it worked.
>>
>> George and Jeff,
>>
>> do you feel any need to ask MPI Forum to clarify this point ?
>>
>>
>> Cheers,
>>
>> Gilles
>>
>> On 1/13/2016 12:14 PM, Jim Edwards wrote:
>>
>> Sorry there was a mistake in that code,
>> stypes and rtypes should be of type MPI_Datatype not integer
>> however the result is the same.
>>
>> *** An error occurred in MPI_Alltoallw
>>
>> *** reported by process [204406785,1]
>>
>> *** on communicator MPI_COMM_WORLD
>>
>> *** MPI_ERR_TYPE: invalid datatype
>>
>>
>>
>>
>> On Tue, Jan 12, 2016 at 7:55 PM, Jim Edwards <jedwa...@ucar.edu> wrote:
>>>
>>> Maybe the example is too simple.  Here is another one which
>>> when run on two tasks sends two integers from each task to
>>> task 0.   Task 1 receives nothing.  This works with mpich and impi
>>> but fails with openmpi.
>>>
>>> #include <stdio.h>
>>> #include <mpi.h>
>>>
>>>  my_mpi_test(int rank, int ntasks)
>>> {
>>>   MPI_Datatype stype, rtype;
>>>   int sbuf[2];
>>>   int rbuf[4];
>>>
>>>   int slen[ntasks], sdisp[ntasks], stypes[ntasks], rlen[ntasks],
>>> rdisp[ntasks], rtypes[ntasks];
>>>   sbuf[0]=rank;
>>>   sbuf[1]=ntasks+rank;
>>>   slen[0]=2;
>>>   slen[1]=0;
>>>   stypes[0]=MPI_INT;
>>>   stypes[1]=MPI_DATATYPE_NULL;
>>>   sdisp[0]=0;
>>>   sdisp[1]=4;
>>>   if(rank==0){
>>>     rlen[0]=2;
>>>     rlen[1]=2;
>>>     rtypes[0]=MPI_INT;
>>>     rtypes[1]=MPI_INT;
>>>     rdisp[0]=0;
>>>     rdisp[1]=8;
>>>
>>>   }else{
>>>     rlen[0]=0;
>>>     rlen[1]=0;
>>>     rtypes[0]=MPI_DATATYPE_NULL;
>>>     rtypes[1]=MPI_DATATYPE_NULL;
>>>     rdisp[0]=0;
>>>     rdisp[1]=0;
>>>   }
>>>
>>>   MPI_Alltoallw(sbuf, slen, sdisp, stypes, rbuf, rlen, rdisp, rtypes,
>>> MPI_COMM_WORLD);
>>>   if(rank==0){
>>>     printf("%d %d %d %d\n",rbuf[0],rbuf[1],rbuf[2],rbuf[3]);
>>>   }
>>>
>>> int main(int argc, char **argv)
>>> {
>>>   int rank, ntasks;
>>>
>>>   MPI_Init(&argc, &argv);
>>>
>>>   MPI_Comm_rank(MPI_COMM_WORLD,&rank);
>>>   MPI_Comm_size(MPI_COMM_WORLD, &ntasks);
>>>
>>>   printf("rank %d ntasks %d\n",rank, ntasks);
>>>
>>>   my_mpi_test(rank,ntasks);
>>>
>>>
>>>   MPI_Finalize();
>>> }
>>>
>>>
>>>
>>
>>
>>
>> --
>> 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/28258.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/28261.php

Reply via email to