Advertisement
bartekltg

par_sort

Jul 24th, 2013
186
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.89 KB | None | 0 0
  1. template <class iterator,class comp>
  2. void _par_sort5( iterator begin, iterator  end, comp cmp, int glebokosc)
  3. {
  4.     if(glebokosc>0)
  5.     {
  6.         cout<<"par"<<endl;
  7.         iterator polowa = begin + (end-begin)/2;
  8.     #pragma omp parallel sections num_threads(2)
  9.         {
  10.         #pragma omp section
  11.             _par_sort5(  begin,   polowa,  cmp,  glebokosc-1);
  12.         #pragma omp section
  13.             _par_sort5(  polowa,   end,  cmp,  glebokosc-1);
  14.  
  15.         }//pierwza sekcja
  16.         cout <<"merge "<<end-begin<<endl;
  17.         inplace_merge(begin,polowa,end,cmp);
  18.     }
  19.     else
  20.         sort(  begin,   end,  cmp);
  21.  
  22. };
  23.  
  24. template <class iterator,class comp>
  25. void par_sort5(iterator begin, iterator end, comp cmp)
  26. {
  27.     int rdzeni = omp_get_num_procs();
  28.     int glebokosc=0;
  29.  
  30.     int nest=omp_get_nested();
  31.  
  32.     omp_set_nested(1);
  33.  
  34.     while( rdzeni>1)
  35.     {
  36.         rdzeni=(rdzeni+1)/2;
  37.         glebokosc++;
  38.     }
  39.     _par_sort5( begin,  end,  cmp, glebokosc);
  40.  
  41.     omp_set_nested(nest);
  42. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement