具有无效的“减少”类型openmp for c ++

时间:2017-11-21 06:17:23

标签: c++ openmp

我使用openm来并行化我的c ++代码,如下所示:

        int shell_num = 50, grparallel[shell_num],grbot[shell_num]; 
    double  p_x,p_y,grp[shell_num];     
   for (int f = 0; f < shell_num; f++)
    {
    grp[f] = 0;
    grparallel[f] = 0;
    grbot[f] = 0;
    }

 //some code... 
 #pragma omp parallel for reduction(+ : grp,grparallel,grbot)
    for(int i = 0; i < N; i++){ //some code
       for(int j = 0; j < N; j++){
         if (j==i) continue;
         double delta_x = x[i]-x[j], 
         delta_y = y[i]-y[j],
         e_dot_e = e_x[i] * e_x[j] + e_y[i] * e_y[j],  
         e_cross_e = e_x[i] * e_y[j] - e_y[i] * e_x[j];
         if (j > i)
            {  
            double fasele = sqrt(dist(x[i],y[i],x[j],y[j],L)); 
        for (int h = 0; h < shell_num; h++) //determine periodic distance between i and j is in which shel
            {
            if( L * h / 100 < fasele && fasele < L * (h + 1) / 100 )
             {grp[h]+= e_dot_e;
              double pdotr = abs(periodic(delta_x,L) * p_x + periodic(delta_y,L) * p_y)/fasele;
            if (pdotr > 0.9659)
                {
                 grparallel[h]+= 1;}else if(pdotr < 0.2588)
                    {
                    grbot[h]+= 1;
                    }
                    break;
                    }
                    }
        }
                    }
                }

当我在终端中运行代码时,出现错误:

  

'grp'的'减少'类型无效

grparallel和grbot也会出现同样的错误。 如何删除错误?

0 个答案:

没有答案