Без использования директив Open MP - последовательное выполнение - см. снимок экрана здесь
Использование директив OpenMp - параллельное выполнение - см. снимок экрана здесь
#include "stdafx.h"
#include <omp.h>
#include <iostream>
#include <time.h>
using namespace std;
static long num_steps = 100000;
double step;
double pi;
int main()
{
clock_t tStart = clock();
int i;
double x, sum = 0.0;
step = 1.0 / (double)num_steps;
#pragma omp parallel for shared(sum)
for (i = 0; i < num_steps; i++)
{
x = (i + 0.5)*step;
#pragma omp critical
{
sum += 4.0 / (1.0 + x * x);
}
}
pi = step * sum;
cout << pi <<"\n";
printf("Time taken: %.5fs\n", (double)(clock() - tStart) / CLOCKS_PER_SEC);
getchar();
return 0;
}
Я пробовал несколько раз, последовательное выполнение всегда быстрее, почему?
Время последовательного выполнения: 0,0200 с. Время параллельного выполнения: 0,02500 с.
почему здесь последовательное выполнение быстрее? правильно ли я рассчитываю время выполнения?