0
持ち越さ:このsiteオンのOpenMP:ループは、私は次のようにC++で簡単な累積和コードを実装しようとしています依存
x[0] = 0;
for (k=1;k<100; k++)
x[k] = x[k-1] + x[k];
を、実装は、依存関係を超えるループキャリーを排除するために書き留めています。コードは2つのスレッドのために、次のようになります。
x[0] = 0;
x[49] = 74; //pre calculated
//the outer loop is parallelized (two instances)
#pragma omp parallel for private(m,k)
for(m=0;m<2;m++) {
for (k=m*49+1; k<m*50+50; k++) {
x[k] = x[k-1] + x[k];
}
}
問題、私はまだここに(平行に走る2つのスレッドが、1から別のデータを必要とする)ループキャリー依存関係を参照してくださいです。
ここで説明を加えてください。そのような依存関係を排除する最良の方法は何ですか?
*パラレルプレフィックスsum *に関する回答。 –