Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <time.h>
- #include <cmath>
- using namespace std;
- int main()
- {
- int N = 1000;
- int i, j, k;
- double Tms;
- double x, y, z, f = 0;
- for (int c = 0; c < 3; c++, N + 500) {
- Tms = clock();
- #pragma omp parallel for reduction(x, y, z)
- for (i = 0; i < N - 1; i++)
- for (j = 0; j < N - 1; j++)
- for (k = 0; k < N - 1; k++)
- {
- x = 1 / N * (i + 1 / 2);
- y = 1 / N * (j + 1 / 2);
- z = 1 / N * (k + 1 / 2);
- f += 1 / (2 + 1 / (1 / (exp(x*x)) * sin(y*y + z*z)));
- }
- f *= (1 / N) * (1 / N) * (1 / N);
- Tms = (clock() - Tms) / CLOCKS_PER_SEC;
- cout << "Результат для N = " << N << " и балансировки нагрузки по умолчанию: f = " << f;
- cout << "Время выполнения: " << Tms << "sec";
- #pragma omp parallel for reduction(x, y, z) schedule(static)
- for (i = 0; i < N - 1; i++)
- for (j = 0; j < N - 1; j++)
- for (k = 0; k < N - 1; k++)
- {
- x = 1 / N * (i + 1 / 2);
- y = 1 / N * (j + 1 / 2);
- z = 1 / N * (k + 1 / 2);
- f += 1 / (2 + 1 / (1 / (exp(x*x)) * sin(y*y + z*z)));
- }
- f *= (1 / N) * (1 / N) * (1 / N);
- Tms = (clock() - Tms) / CLOCKS_PER_SEC;
- cout << "Результат для N = " << N << " и статистической балансировки нагрузки: f = " << f;
- cout << "Время выполнения: " << Tms << "sec";
- #pragma omp parallel for reduction(x, y, z) schedule(dynamic)
- for (i = 0; i < N - 1; i++)
- for (j = 0; j < N - 1; j++)
- for (k = 0; k < N - 1; k++)
- {
- x = 1 / N * (i + 1 / 2);
- y = 1 / N * (j + 1 / 2);
- z = 1 / N * (k + 1 / 2);
- f += 1 / (2 + 1 / (1 / (exp(x*x)) * sin(y*y + z*z)));
- }
- f *= (1 / N) * (1 / N) * (1 / N);
- Tms = (clock() - Tms) / CLOCKS_PER_SEC;
- cout << "Результат для N = " << N << " и динамической балансировки нагрузки: f = " << f;
- cout << "Время выполнения: " << Tms << "sec";
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement