Распараллеливание циклов OpenMP - PullRequest
0 голосов
/ 28 ноября 2018

Я пытаюсь распараллелить оба цикла этого фрагмента кода:

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)

Но у меня все еще есть проблема с внутренним циклом,Я пробовал, например, с частным (d, m) и сокращением (max: im), но это не работает ни с какой комбинацией.Ближе всего к последовательным результатам я получил с private (d).Есть идеи?Спасибо!

1 Ответ

0 голосов
/ 06 декабря 2018

Распараллеливания внутреннего цикла должно быть достаточно, чтобы использовать все доступные потоки.Если вы распараллелите оба, это приведет только к издержкам.

...