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.

On Dec 10, 2009, at 12:02 , Lisandro Dalcin wrote:

> See the code below. The commented-out combinations for sbuf,rbuf do
> work, but the one passing sbuf=rbuf=NULL (i.e, the uncommented one
> show below) makes the call fail with MPI_ERR_ARG.
> 
> #include <mpi.h>
> 
> int main( int argc, char ** argv ) {
>  int ierr;
>  int sbuf,rbuf;
>  MPI_Init(&argc, &argv);
>  ierr = MPI_Reduce(/*&sbuf, &rbuf,*/
>                   /*&sbuf, NULL,*/
>                   /*NULL, &rbuf,*/
>                   NULL, NULL,
>                   0, MPI_INT,
>                   MPI_SUM, 0, MPI_COMM_WORLD);
>  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
> 
> _______________________________________________
> devel mailing list
> de...@open-mpi.org
> http://www.open-mpi.org/mailman/listinfo.cgi/devel


Reply via email to