Advertisement
Guest User

randomgeneratormpi.c

a guest
Dec 19th, 2014
194
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.99 KB | None | 0 0
  1. #include <mpi.h>
  2. #include <stdio.h>
  3. #include <math.h>
  4. #define N 10000
  5. #define MAX 1000
  6. int main(int argc,char* argv[]){
  7.     int i,np,yo,warn,flag;
  8.     double n;
  9.     srand (time(NULL));
  10.     MPI_Init(&argc,&argv);
  11.     MPI_Comm_size(MPI_COMM_WORLD,&np);
  12.     MPI_Comm_rank(MPI_COMM_WORLD,&yo);
  13.     double vectorRandom[np];
  14.     MPI_Request req;
  15.     MPI_Status status;
  16.     if(yo==0){
  17.         warn = 13;
  18.         n = rand() % N;
  19.         for(i=0;i<MAX;i++) n = rand() % N;
  20.         // Avisar a demás procesos //
  21.         for(i=0;i<np;i++) MPI_Send(&warn,1,MPI_INT,i,0,MPI_COMM_WORLD);
  22.     }
  23.     else{
  24.         n = rand() % N;
  25.         flag = 0;
  26.         // Recepción no bloqueante //
  27.         MPI_Irecv(&warn,1,MPI_INT,0,0,MPI_COMM_WORLD,&req);
  28.         MPI_Test(&req,&flag,&status);
  29.         while(!flag){
  30.             n = rand() % N ;
  31.             MPI_Test(&req,&flag,&status);
  32.         }
  33.     }
  34.     // Recogida en proceso 0 //
  35.     MPI_Gather(&n,1,MPI_DOUBLE,vectorRandom,1,MPI_DOUBLE,0,MPI_COMM_WORLD);
  36.     if(yo==0){
  37.         int f = rand() % np;
  38.         printf("Random: %f,",vectorRandom[f]);
  39.     }
  40.     MPI_Finalize();
  41.     return 0;
  42. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement