Tony

You are depending on luck. The MPI Standard allows the implementation to assume that send and recv buffers are distinct unless MPI_IN_PLACE is used.  Any MPI implementation may have more than one algorithm for a given MPI collective communication operation and the policy for switching algorithm is not documented.

It is entirely possible that something like going from 32 to 64 processes or changing interconnects will cause a different algorithm to be used. Applying a patch could also cause the algorithm to be changed.

In theory one algorithm could let you get away with the violation while another trips on it and a change you do not even realize you made cause bad answers to show up. Perhaps some algorithm uses space in the receive buffer as scratch.

Standards compliant code is safer.

                      Dick


Dick Treumann  -  MPI Team          
IBM Systems & Technology Group
Dept X2ZA / MS P963 -- 2455 South Road -- Poughkeepsie, NY 12601
Tele (845) 433-7846         Fax (845) 433-8363



From: Tom Rosmond <rosmond@reachone.com>
To: users@open-mpi.org
Date: 09/16/2010 12:05 PM
Subject: [OMPI users] send and receive buffer the same  on root
Sent by: users-bounces@open-mpi.org





I am working with a Fortran 90 code with many MPI calls like this:

call mpi_gatherv(x,nsize(rank+1),
    mpi_real,x,nsize,nstep,mpi_real,root,mpi_comm_world,mstat)

'x' is allocated on root to be large enough to hold the results of the
gather, other arrays and parameters are defined correctly, and the code
runs as it should.  However, I am concerned that having the same send
and receive buffer on root is a violation of the MPI standard.  Am I
correct?  I am aware of the MPI_IN_PLACE feature that can be used in
this situation, by defining it as the send buffer at root.  

The fact that the code as written seems to work on most system we run on
(some with OpenMPI, some with proprietary MPI's) indicates that in spite
of the standard, implementations allow it.  Is this correct, or are we
just lucky.

T. Rosmond



_______________________________________________
users mailing list
users@open-mpi.org
http://www.open-mpi.org/mailman/listinfo.cgi/users