我希望能够将这段代码并行化以获得最佳性能。"histogram" 存储了特定颜色出现的次数(有 10 种不同的颜色,因此直方图的大小为 10)。"img" 是一个存储某些图像信息的数组。在 img 的每个索引中都存储着一种颜色(int 值,范围为 0..9)。以下是该代码:
for( i=0; i<N1; i++ ){
for( j=0; j<N2; j++ ){
histogram[ img[i][j] ] = histogram[ img[i][j] ] + 1;
}
}
我尝试过这个方法,但性能非常差(比串行执行还要差):
#pragma omp parallel for schedule(static, N1/nthreads) private(i,j)
for(i=0; i<N1; i++){
for(j=0; j<N2; j++)
{
#pragma omp atomic
histogram[img[i][j]]++;
}
}
有什么建议吗?谢谢。
hist[:]
应该与hist[:BINS]
相同,对吗? - Zulan