Zobrazit příspěvky

Tato sekce Vám umožňuje zobrazit všechny příspěvky tohoto uživatele. Prosím uvědomte si, že můžete vidět příspěvky pouze z oblastí Vám přístupných.


Témata - aladarus

Stran: [1]
1
Vývoj / OpenMP na multicore spomaľuje
« kdy: 23. 07. 2010, 13:59:15 »
Snažím sa zrýchliť výpočet IDS algoritmu na viacjadrovom procesore pomocou OpenMP. Ide o jednoduchý cyklus. Avšak čas výpočtu s použitím OpenMP na paralelizáciu výpočtu sa  približne zdvojnásobí oproti výpočtu bez použitia OpenMP na tom istom procesore.
Kde je chyba?
Prikladám zdrojový kód:
RASTER* IDS(RASTER* raster, DATA* data)
{
   int i,j;
   float final_time;
   float sum_up; //citatel vo vzorci
   float sum_down; //menovatel vo vzorci
   float distance;
   clock_t start = clock();
   #pragma omp parallel for default(none) shared(raster,data) private(j, sum_up, sum_down, distance,th_id)
   for(i = 0; i < raster->points_count; i++)
   {
      sum_up = 0;
      sum_down = 0;
      for(j =0; j < data->_data; j++)
      {
         distance = SQR(raster->x - data->x[j]) + SQR(raster->y - data->y[j]);
         sum_up += (data->value[j]/distance);
         sum_down += (1.00/distance);
      }
      
      raster->value = sum_up/sum_down;   
   }
   
   final_time = ((double)clock() - start) / CLOCKS_PER_SEC;   
   printf("Time elapsed: %f\n", final_time);
   return raster;
}

Stran: [1]