Вот краткий путь:
int sum = 0;
#pragma omp parallel for reduction(+:sum)
for(i = 0; i < n; i++){
int a = func(i,b);
int c = func(i,a);
sum += c;
}
Вот более длинный (но более гибкий) способ:
int sum = 0;
#pragma omp parallel
{
int local_sum = 0;
#pragma omp for
for(i = 0; i < n; i++){
a = func(i,b);
c = func(i,a);
local_sum += c;
}
#pragma omp critical
{
sum += local_sum;
}
}