我有以下代码:
#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附近。
答案 0 :(得分:0)
您可以使用分析工具来检查它实际使用的线程数。如果是单线程,您可以检查
OMP_NUM_THREADS
,OMP_DYNAMIC
,omp_set_num_threads()
,...