Advertisement
Guest User

Untitled

a guest
Nov 15th, 2019
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.77 KB | None | 0 0
  1. #include <mpi.h>
  2. #include <stdio.h>
  3. #include <iostream>
  4.  
  5. int main(int argc, char** argv) {
  6.     srand(time(0));
  7.     int size;
  8.     int *arr = nullptr, *vec = nullptr, *localArr = nullptr, *localArr2 = nullptr, *arrSums = nullptr;
  9.     MPI_Init(&argc,  &argv);
  10.     int world_size;
  11.     MPI_Comm_size(MPI_COMM_WORLD, &world_size);
  12.     int world_rank;
  13.     MPI_Comm_rank(MPI_COMM_WORLD, &world_rank);
  14.     if(world_rank == 0) {
  15.         std::cout<< "Size: ";
  16.         std::cin >> size;
  17.         arr = new int[size*size];
  18.         for(int i=0; i<size; i++) {
  19.             for(int j=0; j<size; j++) {
  20.                 arr[i*size + j] = rand()%10;
  21.                 std::cout << arr[i*size + j] << " ";
  22.             }
  23.             std::cout << std::endl;
  24.         }
  25.         std::cout << std::endl;
  26.         vec = new int[size];
  27.         for(int i=0; i<size; i++) {
  28.             vec[i] = rand()%10;
  29.             std::cout << vec[i] << " ";
  30.         }
  31.         std::cout << std::endl;
  32.         arrSums = new int[size];  
  33.     }
  34.    
  35.     MPI_Bcast(&size, 1, MPI_INT, 0, MPI_COMM_WORLD);
  36.     std::cout << world_rank << ": " << size <<std::endl;
  37.     MPI_Bcast(vec, size, MPI_INT, 0, MPI_COMM_WORLD);
  38.     /*for(int i=0; i<size; i++) {
  39.             std::cout << vec[i] << " ";
  40.     }
  41.     std::cout << std::endl;
  42.         /*
  43.     int countVar = (size * size) / world_size;
  44.     localArr = new int[countVar];
  45.    
  46.     MPI_Scatter(arr, countVar, MPI_INT, localArr, countVar, MPI_INT, 0, MPI_COMM_WORLD);
  47.     int sum(0);
  48.     for (int i=0; i<countVar; i++) {
  49.         sum += localArr[i] * vec[i%size];
  50.     }
  51.     MPI_Gather(&sum, 1, MPI_INT, arrSums, 1, MPI_INT, 0, MPI_COMM_WORLD);
  52.     if(world_rank == 0) {
  53.         for(int i=0; i<size; i++) {
  54.             std::cout << arrSums[i] << " ";
  55.         }
  56.     }*/
  57.     MPI_Finalize();
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement