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