Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
# include "mpi.h"
# include <math.h>
int main(argc, argv)
int argc;
char *argv[];
{
int n, myid, numprocs, i;
double mypi, pi, h, x, sum = 0.0;
double MPI_Wtime(), starttime, endtime;
MPI_Init(&argc, &argv);
MPI_Comm_size(MPI_COMM_WORLD, &numprocs);
MPI_Comm_rank(MPI_COMM_WORLD, &myid);
/* Cálculo de Pi */
if ( myid == 0 ){
printf("Entre com o numero de intervalos :");
scanf("%d", &n);
}
MPI_Bcast(&n, 1, MPI_INT, 0, MPI_COMM_WORLD);
starttime = MPI_Wtime();
if ( n != 0 ){
h = 1.0/(double)n;
for ( i = myid + 1; i <= n; i += numprocs ){
x = h * ((double)i - 0.5 );
sum += (4.0/(1.0 + x*x));
}
}
/* Fim cálculo Pi */
mypi = h * sum;
MPI_Reduce(&mypi, &pi, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD);
endtime = MPI_Wtime();
if ( myid == 0 ){
printf("Valor aproximado de Pi: %.16f\n tempo: %.16f\n", pi,endtime-starttime);
}
MPI_Finalize();
}