Можно ли сделать сокращение на массиве с помощью openmp?

Поддерживает ли OpenMP уменьшение переменной, представляющей массив?

Это будет работать что-то вроде следующего ...

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]

В идеале, было бы что-то подобное для параллельной omp, и если у вас достаточно большое количество потоков, чтобы это имело смысл, накопление происходило бы через двоичное дерево.

Ответы на вопрос(5)

Ваш ответ на вопрос