我正在尝试并行处理这段代码的两个循环:
for ( j = 0 ; j < nt2 ; j++ ) {
dm = MAX_LON + 1;
for ( i = 0 ; i < nt1 ; i++ ) {
d = distancia(tabla1[i],tabla2[j]);
if ( d < dm ) {
dm = d;
im = i;
}
}
ps[j] = im;
}
并行化外循环成功:
#pragma omp parallel for private(i,d,dm,im)
但是我的内心仍然有问题。我尝试了例如private(d,m)和reduction(max:im),但不适用于任何组合。我使用private(d)获得的最接近顺序结果。有任何想法吗? 谢谢!
答案 0 :(得分:0)
并行化内部循环应该足以消耗所有可用线程。如果将两者并行化,只会产生开销。