为什么它与secvential版本同时运行?

时间:2013-11-25 21:15:18

标签: c parallel-processing openmp

我有以下代码:

   #pragma omp parallel for private(dot,sum,c,cc)
   for(r=0;r<rows;r++){

       for(c=0;c<cols;c++){
       dot = 0.0;
       sum = 0.0;

       for(cc=(-center);cc<=center;cc++){
        if(((c+cc) >= 0) && ((c+cc) < cols)){
           dot += (float)image[r*cols+(c+cc)] * kernel[center+cc];
           sum += kernel[center+cc];
        }
     }
     tempim[r*cols+c] = dot/sum;
  }
}

此代码以与secvential版本相同的速度运行。我做错了什么?行,col值类似于4000+并且居中于10-30附近。

1 个答案:

答案 0 :(得分:0)

您可以使用分析工具来检查它实际使用的线程数。如果是单线程,您可以检查

  • 如果为编译选项启用了OpenMP支持
  • 如果环境变量或OpenMP API已禁用多线程,即OMP_NUM_THREADSOMP_DYNAMIComp_set_num_threads(),...