Я написал этот последовательный код. Как я могу получить это значение, используя OpenMP.
Я хочу знать, сколько времени потребуется программе для вычисления значения интеграла.
#include <iostream>
#include <omp.h>
#include <iomanip>
#include <math.h>
using namespace std;
const int TOTAL_STEPS = 100000;
const double DELTA = 0.5;
const double STEP_DELTA = (double)(1.0d/TOTAL_STEPS);
const double INT_FACTOR = 4.0d;
const int TOTAL_THREADS = 50;
double getIntResult();
int main(int argc, char** argv)
{
double intResult = getIntResult();
cout << "integral result is: " << setprecision(25) << intResult << endl;
return 0;
}
double getIntResult()
{
double x, pi;
double totalSum = 0.0d;
for(int i = 0; i < TOTAL_STEPS; i++)
{
x = (i + DELTA)*STEP_DELTA;
totalSum += INT_FACTOR/(1.0 + x*x);
}//end-for(0)
pi = STEP_DELTA * totalSum;
return pi;
}
Iхотел бы сравнить экономию, которую приносит распараллеливание, используя openMp.