1

我正在尝试并行化这段代码的两个循环:

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) 得到的最接近顺序的结果。有任何想法吗?谢谢!

4

1 回答 1

0

并行化内部循环应该足以消耗所有可用线程。如果将两者并行化,只会产生开销。

于 2018-12-05T22:31:01.693 回答