/* * mpipi.c * (c) Neil Gershenfeld 9/1/97 * use MPI to evaluate pi by summation */ #include #include "mpi.h" void main(int argc, char** argv) { int rank,nproc,tag,i,istart,iend,N; double sum,pi; tag = 0; sum = 0.0; N = 100000000; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &nproc); if (rank == 0) { MPI_Reduce(&sum,&pi,1,MPI_DOUBLE,MPI_SUM,0,MPI_COMM_WORLD); printf("Using %d processes, pi = %f\n",nproc,pi); } else { istart = 1 + (rank-1)*N/(nproc-1); iend = rank*N/(nproc-1); 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(); }