reduction Clause
Creates a private variable, for each thread, of one or more variables. Each variable is initialized for the appropriate operator. After the parallel region, LabWindows/CVI updates the original variable with the values of the private copies using the specified operator.
The following table displays valid operators and the initial value of each operator.
| Operator | Initial Value |
|---|---|
| + | 0 |
| * | 1 |
| - | 0 |
| & | ~0 |
| | | 0 |
| ^ | 0 |
| && | 1 |
| || | 0 |
Format
reduction(operator:list)
Example
void a31_1(float *x, int *y, int n)
{
int i, b;
float a;
a = 0.0;
b = 0;
#pragma omp parallel for private(i) shared(x, y, n) \ reduction(+:a) reduction(^:b)
for (i=0; i<n; i++)
{
a += x[i];
b ^= y[i];
}
}