pgcc,C - Loop未并行化:可能没有益处

时间:2011-03-20 06:46:08

标签: c parallel-processing pgcc

我希望帮助找出带错误的自动并行化 - 循环未并行化:可能没有用处。我想测试这段代码的并行化,但我不知道,如何使代码对编译器有效并行化。

以下是代码:

   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;
      // }  

    }

循环未并行化:可能没有益处

你知道如何让这个循环更加时间要求能够接受自动并行化吗?

THX

1 个答案:

答案 0 :(得分:0)

您在sum中累积的结果取决于计算顺序。我想pgcc必须有一种方法,你可以告诉你,你不关心重新排序可能带来的影响。但是因此它无法知道,也无法并行化。

在OpenMp中,您会添加类似

的内容
#pragma omp parallel for reduction(+: sum)

在循环前面。