https://www.openmp.org/wp-content/uploads/OpenMP4.0.0.Examples.pdf
https://www.openmp.org/wp-content/uploads/omp-hands-on-SC08.pdf
https://sites.cs.ucsb.edu/~tyang/class/240a17/slides/lectureOpenMP.pdf
#include <string.h>
#include <omp.h>
#define NUM_STEPS 100
int main(int argc, char **argv)
{
int num_steps = NUM_STEPS;
int i;
double x;
double pi;
double step = 1.0 / (double)num_steps;
double sum[num_steps];
for(i = 0; i < num_steps; i++)
{
sum[i] = 0;
}
omp_set_num_threads(num_steps);
#pragma omp parallel
{
x = (omp_get_thread_num() + 0.5) * step;
sum[omp_get_thread_num()] += 4.0 / (1.0 + x * x);
}
double totalSum = 0;
for(i = 0; i < num_steps; i++)
{
totalSum += sum[i];
}
pi = step * totalSum;
printf("Pi: %.8f", pi);
}