The functions in this section perform a global reduce operation (such
as sum, max, logical AND, etc.) across all the members of a group.
The reduction operation can be either one of a predefined list of
operations, or a user-defined operation.
The global reduction functions come in several flavors: a reduce that
returns the result of the reduction at one node, an all-reduce that
returns this result at all nodes, and a scan (parallel prefix)
operation. In addition, a reduce-scatter operation combines the
functionality of a reduce and of a scatter operation. In order to
improve performance, the functions can be passed an array of
values; one call will perform a sequence of element-wise
reductions on the arrays of values.
Figure gives a pictorial representation of these
operations.
Figure: Reduce functions illustrated for a group of three
processes. In each case, each row of boxes represents data items in
one process. Thus, in the reduce, initially each process has three
items; after the reduce the root process has three sums.