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



Reply via email to