|
|
|
@ -11,15 +11,15 @@ int main(int argc, char *argv[]) {
|
|
|
|
|
return 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int my_rank, num_procs;
|
|
|
|
|
int mi_rank, num_procs;
|
|
|
|
|
MPI_Init(&argc, &argv);
|
|
|
|
|
MPI_Comm_size(MPI_COMM_WORLD, &num_procs);
|
|
|
|
|
MPI_Comm_rank(MPI_COMM_WORLD, &my_rank);
|
|
|
|
|
MPI_Comm_rank(MPI_COMM_WORLD, &mi_rank);
|
|
|
|
|
|
|
|
|
|
if(! my_rank)
|
|
|
|
|
if(! mi_rank)
|
|
|
|
|
printf("Procesos: %d\n", num_procs);
|
|
|
|
|
|
|
|
|
|
srand(time(NULL) + my_rank);
|
|
|
|
|
srand(time(NULL) + mi_rank); // Ojo, tal vez un proceso se lanza un segundo después que otro y esta cuenta coincide.
|
|
|
|
|
|
|
|
|
|
size_t tiros = atol(argv[1]);
|
|
|
|
|
tiros = tiros / num_procs * num_procs;
|
|
|
|
@ -35,7 +35,7 @@ int main(int argc, char *argv[]) {
|
|
|
|
|
size_t positivos;
|
|
|
|
|
MPI_Reduce(&positivos_parciales, &positivos, 1, MPI_LONG, MPI_SUM, 0, MPI_COMM_WORLD);
|
|
|
|
|
|
|
|
|
|
if(! my_rank) {
|
|
|
|
|
if(! mi_rank) {
|
|
|
|
|
double pi = 4.0 * positivos / tiros;
|
|
|
|
|
|
|
|
|
|
printf("Tiros = %zd, Positivos = %zd\n", tiros, positivos);
|
|
|
|
|