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 回答