Purpose
Applies a reduction operation to the vector sendbuf over the set of tasks specified by comm and places the result in recvbuf on all of the tasks in comm.
C synopsis
#include <mpi.h> int MPI_Allreduce(void* sendbuf,void* recvbuf,int count, MPI_Datatype datatype,MPI_Op op,MPI_Comm comm);
C++ synopsis
#include mpi.h void MPI::Comm::Allreduce(const void* sendbuf, void* recvbuf, int count, const MPI::Datatype& datatype, const MPI::Op& op) const;
FORTRAN synopsis
include 'mpif.h' or use mpi MPI_ALLREDUCE(CHOICE SENDBUF,CHOICE RECVBUF,INTEGER COUNT, INTEGER DATATYPE,INTEGER OP,INTEGER COMM,INTEGER IERROR)
Parameters
Description
This subroutine applies a reduction operation to the vector sendbuf over the set of tasks specified by comm and places the result in recvbuf on all of the tasks.
This subroutine is similar to MPI_REDUCE except the result is returned to the receive buffer of all the group members.
The "in place" option for intracommunicators is specified by passing the value MPI_IN_PLACE to the argument sendbuf at the root. In this case, the input data is taken at each task from the receive buffer, where it will be replaced by the output data.
If comm is an intercommunicator, the result of the reduction of the data provided by tasks in group A is stored at each task in group B, and vice versa. Both groups should provide the same count value.
MPI_IN_PLACE is not supported for intercommunicators.
When you use this subroutine in a threads application, make sure all collective operations on a particular communicator occur in the same order at each task. See IBM Parallel Environment for AIX: MPI Programming Guide for more information on programming with MPI in a threads environment.
Notes
See IBM Parallel Environment for AIX: MPI Programming Guide for information about reduction functions.
The MPI standard urges MPI implementations to use the same evaluation order for reductions every time, even if this negatively affects performance. PE MPI adjusts its reduce algorithms for the optimal performance on a given task distribution. The MPI standard suggests, but does not mandate, this sacrifice of performance. PE MPI chooses to put performance ahead of the MPI standard's recommendation. This means that two runs with the same task count may produce results that differ in the least significant bits, due to rounding effects when evaluation order changes. Two runs that use the same task count and the same distribution across nodes will always give identical results.
Errors
Fatal errors:
Develop mode error if:
Related information