MPI_IN_PLACE is a sentinel, not data. Giving it a type of its own is what lets the generic MPI_Allreduce below tell an in-place call (a no-op here) from one with separate send and receive buffers (a copy here).