Each process can provide one element, or a sequence of elements, in which case the combine operation is executed element-wise on each entry of the sequence. That section also enumerates the allowed datatypes for each operation. In addition, users may define their own operations that can be overloaded to operate on several datatypes, either basic or derived. This is further explained in Section . The operation op is always assumed to be associative.
All predefined operations are also commutative.
Users may define operations that are assumed to be associative, but not commutative. However, the implementation can take advantage of associativity, or associativity and commutativity in order to change the order of evaluation. This may change the result of the reduction for operations that are not strictly associative and commutative, such as floating point addition. Predefined operators work only with the MPI types listed in Section and Section . User-defined operators may operate on general, derived datatypes.