Advertisement
myname0

taskForParallel

Apr 10th, 2017
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.04 KB | None | 0 0
  1. #include <iostream>
  2. #include <time.h>
  3. #include <cmath>
  4. using namespace std;
  5.  
  6. int main()
  7. {
  8.     int N = 1000;
  9.     int i, j, k;
  10.     double Tms;
  11.     double x, y, z, f = 0;
  12.     for (int c = 0; c < 3; c++, N + 500) {
  13.         Tms = clock();
  14.         #pragma omp parallel for reduction(x, y, z)
  15.             for (i = 0; i < N - 1; i++)
  16.                 for (j = 0; j < N - 1; j++)
  17.                     for (k = 0; k < N - 1; k++)
  18.                     {
  19.                         x = 1 / N * (i + 1 / 2);
  20.                         y = 1 / N * (j + 1 / 2);
  21.                         z = 1 / N * (k + 1 / 2);
  22.                         f += 1 / (2 + 1 / (1 / (exp(x*x)) * sin(y*y + z*z)));
  23.                     }
  24.             f *= (1 / N) * (1 / N) * (1 / N);
  25.             Tms = (clock() - Tms) / CLOCKS_PER_SEC;
  26.             cout << "Результат для N = " << N << " и балансировки нагрузки по умолчанию: f = " << f;
  27.             cout << "Время выполнения: " << Tms << "sec";
  28.  
  29.         #pragma omp parallel for reduction(x, y, z) schedule(static)
  30.        
  31.             for (i = 0; i < N - 1; i++)
  32.                 for (j = 0; j < N - 1; j++)
  33.                     for (k = 0; k < N - 1; k++)
  34.                     {
  35.                         x = 1 / N * (i + 1 / 2);
  36.                         y = 1 / N * (j + 1 / 2);
  37.                         z = 1 / N * (k + 1 / 2);
  38.                         f += 1 / (2 + 1 / (1 / (exp(x*x)) * sin(y*y + z*z)));
  39.                     }
  40.             f *= (1 / N) * (1 / N) * (1 / N);
  41.             Tms = (clock() - Tms) / CLOCKS_PER_SEC;
  42.             cout << "Результат для N = " << N << " и статистической балансировки нагрузки: f = " << f;
  43.             cout << "Время выполнения: " << Tms << "sec";
  44.  
  45.         #pragma omp parallel for reduction(x, y, z) schedule(dynamic)
  46.    
  47.             for (i = 0; i < N - 1; i++)
  48.                 for (j = 0; j < N - 1; j++)
  49.                     for (k = 0; k < N - 1; k++)
  50.                     {
  51.                         x = 1 / N * (i + 1 / 2);
  52.                         y = 1 / N * (j + 1 / 2);
  53.                         z = 1 / N * (k + 1 / 2);
  54.                         f += 1 / (2 + 1 / (1 / (exp(x*x)) * sin(y*y + z*z)));
  55.                     }
  56.             f *= (1 / N) * (1 / N) * (1 / N);
  57.             Tms = (clock() - Tms) / CLOCKS_PER_SEC;
  58.             cout << "Результат для N = " << N << " и динамической балансировки нагрузки: f = " << f;
  59.             cout << "Время выполнения: " << Tms << "sec";
  60.     }
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement