Facebook
From Chocolate Horse, 6 Years ago, written in C++.
Embed
Download Paste or View Raw
Hits: 266
  1. //obliczanie PI
  2. long long num_steps = 10000000;
  3. double step;
  4. double tab[100]; // zapisanie w pamieci nowej wartosci, a nie w rejestrze
  5.  
  6. int main(int argc, char* argv[])
  7. {
  8.         clock_t start, stop;
  9.         for (int j = 0; j < 20; j++)
  10.         {
  11.  
  12.  
  13.                 double x, pi, sum = 0.0;
  14.                 int i;
  15.                 step = 1. / (double)num_steps;
  16.                 start = clock();
  17.                 omp_set_num_threads(2);
  18. #pragma omp parallel
  19.                 {
  20.                         int id = omp_get_thread_num();
  21.                         tab[id + j] = 0;
  22.  
  23. #pragma omp for
  24.                         for (i = 0; i < num_steps; i++)
  25.                         {
  26.                                 double x = (i + .5)*step;
  27.                                 tab[j + id] += 4.0 / (1. + x*x);
  28.                         }
  29. #pragma omp atomic
  30.                         sum += tab[j + id];
  31.                 }
  32.                 pi = sum*step;
  33.                 stop = clock();
  34.  
  35.                
  36.                 printf("Czas przetwarzania %d wynosi %f sekund\n",j, ((double)(stop - start) / 1000.0));
  37.         }
  38.         return 0;
  39. }
  40.