Я искал Google для страницы, предлагающей некоторые простые алгоритмы OpenMp. Вероятно, есть пример для вычисления min, max, median, average из огромного массива данных, но я не могу его найти.
По крайней мере, я обычно пытался бы разделить массив на один кусок для каждого ядра и впоследствии выполнить некоторый граничный расчет, чтобы получить результат для полного массива.
Я просто не хотел изобретать велосипед.
Дополнительные замечания: Я знаю, что есть тысячи примеров, которые работают с простым сокращением. например Вычисление PI.
const int num_steps = 100000;
double x, sum = 0.0;
const double step = 1.0/double(num_steps);
#pragma omp parallel for reduction(+:sum) private(x)
for (int i=1;i<= num_steps; i++){
x = double(i-0.5)*step;
sum += 4.0/(1.0+x*x);
}
const double pi = step * sum;
но если эти алгоритмы не используются, почти нет примеров для сокращения алгоритмов.