2013-11-25 64 views
0

我有如下因素代码:为什么这个版本和这个版本一样?

#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版本上运行。我做错了什么?行,列的值是4000+,中心在10-30附近。

+0

可能是一个愚蠢的问题,但你有告诉你的编译器使用OpenMP吗? – JakubT

回答

0

您可以使用性能分析工具来检查它实际使用的线程数。如果是单线程的,你可以,如果支持OpenMP启用在编译选项检查

  • 如果环境的变量或OpenMP API已禁用多线程,即OMP_NUM_THREADSOMP_DYNAMIComp_set_num_threads(),..
相关问题