Does OpenMP natively support reduction of a variable that represents an array?
This would work something like the following...
float* a = (float*) calloc(4*sizeof(float));
#pragma omp parallel reduction(+:a)
a[i] += 1; // Thread-local copy of a incremented by something interesting
// a now contains [13 13 13 13]
Only in Fortran in OpenMP 3.0, and probably only with certain compilers.
See the last example (Example 3) on: