# BLACS Combine Operations

This topic describes BLACS routines that combine the data to produce a result.

In a combine operation, each participating process contributes data that is combined with other processes’ data to produce a result. This result can be given to a particular process (called the destination process), or to all participating processes. If the result is given to only one process, the operation is referred to as a leave-on-one combine, and if the result is given to all participating processes the operation is referenced as a leave-on-all combine.

At present, three kinds of combines are supported. They are:

- element-wise summation
- element-wise absolute value maximization
- element-wise absolute value minimization

of general rectangular arrays.

Note that a combine operation combines data between processes. By definition, a combine performed across a scope of only one process does not change the input data. This is why the operations (max/min/sum) are specified as element-wise. Element-wise indicates that each element of the input array will be combined with the corresponding element from all other processes’ arrays to produce the result. Thus, a 4 x 2 array of inputs produces a 4 x 2 answer array.

When the max/min comparison is being performed, absolute value is used. For example, -5 and 5 are equivalent. However, the returned value is unchanged; that is, it is not the absolute value, but is a signed value instead. Therefore, if you performed a BLACS absolute value maximum combine on the numbers -5, 3, 1, 8 the result would be -8.

The initial symbol ? in the routine names below masks the data type:

i

  integer

s

  single precision real

d

  double precision real

c

  single precision complex

z

  double precision complex.

BLACS Combines
Routine name | Results of operation
--- | ---
?gamx2d | Entries of result matrix will have the value of the greatest absolute value found in that position.
?gamn2d | Entries of result matrix will have the value of the smallest absolute value found in that position.
?gsum2d | Entries of result matrix will have the summation of that position.