При вычислении максимального сокращения внутри параллельного цикла for каково значение переменной максимального сокращения в промежуточные моменты времени во время выполнения цикла? Это максимум только для определенного потока или это максимум всех потоков?
Причина, по которой я спрашиваю, заключается в том, что я хочу использовать текущее максимальное значение внутри цикла для выполнения вычислений, и я хочу, чтобы оно было текущим максимумом всех потоков, а не только потока, выполняющего цикл.
Например:
#include <stdio.h>
#include <omp.h>
int main(int argc, char *argv[]) {
double randomarray[10];
//initialize the random array
double outputarray[10];
double currentmax = 0;
#pragma omp parallel for reduction(max:currentmax)
for( i=0;i<10; i++) {
if(randomarray[i] > currentmax)
{
currentmax = randomarray[i];
}
output[i]=randomarray[i]/currentmax;
// is this current max for the currently
// executing thread or all threads?
}
}