All MPI processes in the group identified by the intra-communicator must call the collective routine.
In many cases, collective communication can occur ``in place'' for intra-communicators, with the output buffer being identical to the input buffer. This is specified by providing a special argument value, MPI_IN_PLACE, instead of the send buffer or the receive buffer argument, depending on the operation performed.
 
 
 
 Rationale.  
 
The ``in place'' operations are provided to reduce unnecessary memory motion by  
both the  MPI implementation and by the user.  Note that while the simple check  
of testing whether the send and receive buffers have the same address will  
work for some cases (e.g.,  MPI_ALLREDUCE), they are inadequate in  
others (e.g.,  MPI_GATHER, with  root not equal to zero).  Further,  
Fortran explicitly prohibits aliasing of arguments; the approach of using a  
special value to denote ``in place'' operation eliminates that difficulty.  
 ( End of rationale.) 
 
 
 
 Advice to users.  
By allowing the ``in place'' option, the receive buffer in many of the collective calls becomes a send-and-receive buffer. For this reason, a Fortran binding that includes INTENT must mark these as INOUT, not OUT.
 
Note that  MPI_IN_PLACE is a special kind of value; it has the  
same   
restrictions on its use that  MPI_BOTTOM has  
(not usable in Fortran for initialization or assignment).  
See Section Named Constants.  
 ( End of advice to users.)