Ist es möglich ein Array mit openmp zu verkleinern?

Unterstützt OpenMP nativ die Reduzierung einer Variablen, die ein Array darstellt?

Dies würde in etwa wie folgt funktionieren ...

float* a = (float*) calloc(4*sizeof(float));
omp_set_num_threads(13);
#pragma omp parallel reduction(+:a)
for(i=0;i<4;i++){
   a[i] += 1;  // Thread-local copy of a incremented by something interesting
}
// a now contains [13 13 13 13]

Idealerweise gäbe es etwas Ähnliches für eine omp-Parallele für, und wenn Sie eine ausreichende Anzahl von Threads haben, um einen Sinn zu ergeben, würde die Akkumulation über einen Binärbaum erfolgen.

Antworten auf die Frage(10)

Ihre Antwort auf die Frage