Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <stdlib.h>
- #include "mpi.h"
- using namespace std;
- int main(int argc, char**argv)
- {
- MPI_Init(&argc, &argv);
- int rank, size;
- MPI_Comm_rank(MPI_COMM_WORLD, &rank);
- MPI_Comm_size(MPI_COMM_WORLD, &size);
- int rozmiar;
- int nRank;
- int maxRank;
- int maxAll;
- if(rank == 0) // pierwszy rank
- {
- cout<<"Podaj rozmiar tablicy: ";
- cin>>rozmiar;
- srand (time(NULL));
- int * tab = new int[rozmiar];
- for(int i = 0; i<rozmiar; ++i)
- {
- tab[i]=rand() % 100;
- }
- cout<<"ILOSC PROCESOW: "<<size<<endl;
- int nRank = rozmiar / size;
- cout<<"Rozmiar tablicy dla kazdego procesu: "<<nRank<<endl;
- MPI_Bcast(&nRank, 1, MPI_INT, 0, MPI_COMM_WORLD);
- for(int i=1;i<size;i++)
- {
- MPI_Send(&tab[i*nRank], 25, MPI_INT, i, 50, MPI_COMM_WORLD);
- }
- maxRank = tab[0];
- for (int i = 1;i<nRank;++i)
- {
- if(maxRank < tab[i])
- {
- maxRank = tab[i];
- }
- }
- cout<<"RANK" << rank<< ", Max z tablicy = "<<maxRank<<endl;
- cout<<"Max all = "<<maxAll<<endl;
- delete[] tab;
- }
- else //każdy inny
- {
- MPI_Bcast(&nRank, 1, MPI_INT, 0, MPI_COMM_WORLD);
- cout<<"Rank = "<<rank<<", tablica o rozmiarze: "<<nRank<<endl;
- int * tab = new int[nRank];
- MPI_Recv(tab, 25, MPI_INT, 0, 50, MPI_COMM_WORLD, MPI_STATUS_IGNORE);
- maxRank = tab[0];
- for (int i = 1;i<nRank;++i)
- {
- if(maxRank < tab[i])
- {
- maxRank = tab[i];
- }
- }
- cout<<"RANK" << rank<< ", Max z tablicy = "<<maxRank<<endl;
- MPI_Reduce(&maxRank, &maxAll, 1, MPI_INT, MPI_MAX, 0, MPI_COMM_WORLD);
- delete [] tab;
- }
- MPI_Finalize();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement