私のアルゴリズム(ポアソンの方程式を解く)は完全に並列化可能です。各繰り返しの最後にすべてのスレッドが同期する必要があります。ブロッキング・ループに使用するopenMPプラグマはどれですか?
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
は、次の反復に進む前に、スレッドの同期を確保していますか?
あなたの 'i' forループはスレッドに分割され、それぞれは独自の' j'ループを実行します。多分あなたは見てみることができますhttp://msdn.microsoft.com/en-us/library/sz9sd6et(v=vs.80).aspx –