Advertisement
Guest User

Untitled

a guest
Dec 9th, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.82 KB | None | 0 0
  1. #include <iostream>
  2. #include <stdlib.h>
  3. #include "mpi.h"
  4.  
  5. using namespace std;
  6.  
  7. int main(int argc, char**argv)
  8. {
  9.   MPI_Init(&argc, &argv);
  10.  
  11.     int rank, size;
  12.    
  13.     MPI_Comm_rank(MPI_COMM_WORLD, &rank);
  14.     MPI_Comm_size(MPI_COMM_WORLD, &size);
  15.    
  16.     int rozmiar;
  17.     int nRank;
  18.     int maxRank;
  19.     int maxAll;
  20.    
  21.    
  22.     if(rank == 0)   // pierwszy rank
  23.     {
  24.       cout<<"Podaj rozmiar tablicy: ";
  25.       cin>>rozmiar;
  26.       srand (time(NULL));
  27.       int * tab = new int[rozmiar];
  28.       for(int i = 0; i<rozmiar; ++i)
  29.     {
  30.     tab[i]=rand() % 100;
  31.     }
  32.  
  33.     cout<<"ILOSC PROCESOW: "<<size<<endl;
  34.    
  35.       int nRank = rozmiar / size;
  36.       cout<<"Rozmiar tablicy dla kazdego procesu: "<<nRank<<endl;
  37.      
  38.       MPI_Bcast(&nRank, 1, MPI_INT, 0, MPI_COMM_WORLD);
  39.      
  40.       for(int i=1;i<size;i++)
  41.       {
  42.     MPI_Send(&tab[i*nRank], 25, MPI_INT, i, 50, MPI_COMM_WORLD);
  43.       }
  44.    
  45.         maxRank = tab[0];
  46.      for (int i = 1;i<nRank;++i)
  47.       {
  48.     if(maxRank < tab[i])
  49.     {
  50.       maxRank = tab[i];
  51.     }
  52.       }
  53.       cout<<"RANK" << rank<< ", Max z tablicy = "<<maxRank<<endl;
  54.    
  55.      
  56.      
  57.      cout<<"Max all = "<<maxAll<<endl;
  58.       delete[] tab;
  59.     }
  60.     else        //każdy inny
  61.     {
  62.      MPI_Bcast(&nRank, 1, MPI_INT, 0, MPI_COMM_WORLD);
  63.      cout<<"Rank = "<<rank<<", tablica o rozmiarze: "<<nRank<<endl;
  64.      int * tab = new int[nRank];
  65.      MPI_Recv(tab, 25, MPI_INT, 0, 50, MPI_COMM_WORLD, MPI_STATUS_IGNORE);    
  66.      
  67.      maxRank = tab[0];
  68.      for (int i = 1;i<nRank;++i)
  69.       {
  70.     if(maxRank < tab[i])
  71.     {
  72.       maxRank = tab[i];
  73.     }
  74.       }
  75.      
  76.      cout<<"RANK" << rank<< ", Max z tablicy = "<<maxRank<<endl;
  77.      
  78.     MPI_Reduce(&maxRank, &maxAll, 1, MPI_INT, MPI_MAX, 0, MPI_COMM_WORLD);  
  79.      delete [] tab;
  80.      
  81.     }
  82.    
  83.    
  84.  
  85.   MPI_Finalize();
  86.   return 0;
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement