BUMP. See http://code.google.com/p/mpi4py/issues/detail?id=14
On 12 December 2009 00:31, Lisandro Dalcin <dalc...@gmail.com> wrote: > On Thu, Dec 10, 2009 at 4:26 PM, George Bosilca <bosi...@eecs.utk.edu> wrote: >> Lisandro, >> >> This code is not correct from the MPI standard perspective. The reason is >> independent of the datatype or count, it is solely related to the fact that >> the MPI_Reduce cannot accept a sendbuf equal to the recvbuf (or one has to >> use MPI_IN_PLACE). >> > > George, I have to disagree. Zero-length buffers are a very special > case, and the MPI std is not very explicit about this limit case. Try > the code pasted at the end. > > 1) In Open MPI, the only one of these failing for sbuf=rbuf=NULL is > MPI_Reduce() > > 2) As reference, all the calls succeed in MPICH2. > > > > #include <mpi.h> > #include <stdlib.h> > > int main( int argc, char ** argv ) { > int ierr; > MPI_Init(&argc, &argv); > ierr = MPI_Scan( > NULL, NULL, > 0, > MPI_INT, > MPI_SUM, > MPI_COMM_WORLD); > ierr = MPI_Exscan( > NULL, NULL, > 0, > MPI_INT, > MPI_SUM, > MPI_COMM_WORLD); > ierr = MPI_Allreduce( > NULL, NULL, > 0, > MPI_INT, > MPI_SUM, > MPI_COMM_WORLD); > #if 1 > ierr = MPI_Reduce( > NULL, NULL, > 0, > MPI_INT, > MPI_SUM, > 0, > MPI_COMM_WORLD); > #endif > MPI_Finalize(); > return 0; > } > > > > -- > Lisandro Dalcín > --------------- > Centro Internacional de Métodos Computacionales en Ingeniería (CIMEC) > Instituto de Desarrollo Tecnológico para la Industria Química (INTEC) > Consejo Nacional de Investigaciones Científicas y Técnicas (CONICET) > PTLC - Güemes 3450, (3000) Santa Fe, Argentina > Tel/Fax: +54-(0)342-451.1594 > -- Lisandro Dalcín --------------- Centro Internacional de Métodos Computacionales en Ingeniería (CIMEC) Instituto de Desarrollo Tecnológico para la Industria Química (INTEC) Consejo Nacional de Investigaciones Científicas y Técnicas (CONICET) PTLC - Güemes 3450, (3000) Santa Fe, Argentina Tel/Fax: +54-(0)342-451.1594