2013-11-25 61 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(),..
相關問題