Commit 2be85af8 authored by Neil Gershenfeld's avatar Neil Gershenfeld
Browse files

start OpenMP

parent e7cf1f47
Pipeline #3764 passed with stage
in 1 second
/*
* mppi.c
* Neil Gershenfeld 6/21/19
* OpenMPI pi calculation benchmark
* pi = 3.14159265358979323846
*/
#include <stdio.h>
#include <time.h>
#include <omp.h>
#define NPTS 1000000000
double pi;
void main() {
int i;
printf("%d\n",omp_get_max_threads());
double a,b,c,dt,mflops;
struct timespec tstart,tend;
clock_gettime(CLOCK_REALTIME,&tstart);
a = 0.5;
b = 0.75;
c = 0.25;
pi = 0;
pi = 0;
#pragma omp parallel
#pragma omp for reduction(+:pi)
for (i = 1; i <= NPTS; ++i)
pi += a/((i-b)*(i-c));
clock_gettime(CLOCK_REALTIME,&tend);
dt = (tend.tv_sec+tend.tv_nsec/1e9)-(tstart.tv_sec+tstart.tv_nsec/1e9);
mflops = NPTS*5.0/(dt*1e6);
printf("NPTS = %d, pi = %f\n",NPTS,pi);
printf("time = %f, estimated MFlops = %f\n",dt,mflops);
}
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment