Commit e7cf1f47 authored by Neil Gershenfeld's avatar Neil Gershenfeld
Browse files

wip

parent 296c169d
Pipeline #3739 passed with stage
in 1 second
......@@ -8,11 +8,10 @@
#include <mpi.h>
#include <sys/time.h>
#define NPTS 100000000
#define NLOOP 10
#define NPTS 1000000000
void main(int argc, char** argv) {
int rank,nproc,i,istart,iend,loop,N;
int rank,nproc,i,istart,iend;
unsigned long int start_time,end_time;
struct timeval start,end;
double sum,pi,mflops;
......@@ -25,24 +24,22 @@ void main(int argc, char** argv) {
istart = 1 + NPTS*((rank+0.0)/nproc);
iend = NPTS*((rank+1.0)/nproc);
sum = 0.0;
for (loop = 0; loop < NLOOP; ++loop)
for (i = istart; i <= iend; ++i)
sum += 0.5/((i-0.75)*(i-0.25));
for (i = istart; i <= iend; ++i)
sum += 0.5/((i-0.75)*(i-0.25));
MPI_Reduce(&sum,&pi,1,MPI_DOUBLE,MPI_SUM,0,MPI_COMM_WORLD);
gettimeofday(&end, NULL);
start_time = start.tv_sec * 1e6 + start.tv_usec;
end_time = end.tv_sec * 1e6 + end.tv_usec;
mflops = NLOOP*(NPTS*(5.0/(end_time-start_time)));
printf("processes = %d, NPTS = %d, NLOOP = %d, pi = %f\n",nproc,NPTS,NLOOP,pi/NLOOP);
mflops = NPTS*(5.0/(end_time-start_time));
printf("processes = %d, NPTS = %d, pi = %f\n",nproc,NPTS,pi);
printf("time = %f, estimated MFlops = %f\n",(end_time-start_time)/1.0e6,mflops);
}
else {
istart = 1 + NPTS*((rank+0.0)/nproc);
iend = NPTS*((rank+1.0)/nproc);
sum = 0.0;
for (loop = 0; loop < NLOOP; ++loop)
for (i = istart; i <= iend; ++i)
sum += 0.5/((i-0.75)*(i-0.25));
for (i = istart; i <= iend; ++i)
sum += 0.5/((i-0.75)*(i-0.25));
MPI_Reduce(&sum,&pi,1,MPI_DOUBLE,MPI_SUM,0,MPI_COMM_WORLD);
}
MPI_Finalize();
......
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