Мой алгоритм (решение уравнения Пуассона) полностью распараллеливается - при условии, что все потоки синхронизируются в конце каждой итерации.
Function f, fNext;
init(f);
#pragma omp parallel
for(int step=0; step<maxITER; step++) {
#pragma omp for
for(int i=0; i<N; i++) {
for(int j=0; j<N; j++) {
fNext(i,j) = someOperator( f(i,j) );
}
}
f = fNext;
}//Threads must synchronize here
Обеспечивает ли #pragma omp for
синхронизацию потоков перед продолжением следующей итерации?