0

エラーのある自動並列化を理解するのに助けが必要です-ループが並列化されていません:有益ではない可能性があります。このコードの並列化をテストしたいのですが、コンパイラーがコードを並列化するのに効果的なコードにする方法がわかりません。

コードは次のとおりです。

   for (i = 0; i < piece_length; i++) {
       x=(i/(double)piece_length)+piece/(float)2;
      // if(x<=1.0){
           integral=4/(1+x*x);
           sum=sum+integral;
      // }  

    }

ループが並列化されていない:有益でない可能性があります

自動並列化を受け入れることができるようにするために、このループをより多くの時間を要求するようにする方法を知っていますか?

どうも

4

1 に答える 1

0

蓄積される結果はsum、計算の順序によって異なります。pgccには、並べ替えの影響を気にしないことを伝える方法が必要だと思います。しかし、それ自体は知ることができず、何も並列化できません。

OpenMpでは、次のようなものを配置します

#pragma omp parallel for reduction(+: sum)

ループの前で。

于 2011-03-20T07:28:59.217 に答える