Advertisement
Guest User

Untitled

a guest
Dec 6th, 2019
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.44 KB | None | 0 0
  1. #include <mpi.h>
  2. #include <stdio.h>
  3. #include <cstdlib>
  4.  
  5. int main(int argc, char** argv)
  6. {
  7.    
  8.     int n,m,summ = 0;
  9.     int size;
  10.     int **a = nullptr,*local = nullptr,*v = nullptr,*v2 = nullptr, *vect;
  11.     MPI_Init(&argc,  &argv);
  12.     int world_size;
  13.     MPI_Comm_size(MPI_COMM_WORLD, &world_size);
  14.     int world_rank;
  15.     MPI_Comm_rank(MPI_COMM_WORLD, &world_rank);
  16.     v2 = new int[n];
  17.     if (world_rank == 0)
  18.     {
  19.         srand(time(0));
  20.         n = world_size;
  21.         a = new int*[n];
  22.         v = new int[n];
  23.         vect = new int[n*n];
  24.         int k = 0;
  25.         for (int i = 0; i < n; i++)
  26.         {
  27.             v[i] = rand() % 20;
  28.             a[i] = new int[n];
  29.             for (int j = 0; j < n; j++)
  30.             {
  31.                     a[i][j] = rand() % 20;
  32.                     vect[k++] = a[i][j];
  33.                     printf("%d ",a[i][j]);
  34.             }
  35.             printf("\n");
  36.         }
  37.         printf("\n");
  38.         for (int i = 0; i < n; i++)
  39.             printf("%d\n",v[i]);
  40.         printf("\n");
  41.     }
  42.  
  43.     MPI_Bcast(&n,1,MPI_INT,0,MPI_COMM_WORLD);
  44.     MPI_Bcast(v,n,MPI_INT,0,MPI_COMM_WORLD);
  45.     local = new int[n];
  46.     MPI_Scatter(vect,n,MPI_INT,local,n,MPI_INT,0,MPI_COMM_WORLD);
  47.     printf("pross %d\n",world_rank);
  48.     for (int i = 0; i < n; i++)
  49.         printf("%d ",local[i]);
  50.         printf("\n");
  51.     for (int i = 0; i < n; i++)
  52.     {
  53.         summ += local[i] * v[i];
  54.     }
  55.     printf("%d \n",summ);
  56.     MPI_Gather(&summ,1,MPI_INT,v2,1,MPI_INT,0,MPI_COMM_WORLD);
  57.     printf("success\n");
  58.  
  59.     if (world_rank == 0)
  60.     {
  61.         for (int i = 0;i < n;i++)
  62.             printf("%d ",v2[i]);
  63.     }
  64.     MPI_Finalize();
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement