Advertisement
Guest User

MPI Array min

a guest
Feb 1st, 2015
177
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.10 KB | None | 0 0
  1. #include "mpi.h"
  2. #include <stdio.h>
  3. #define SIZE 4
  4.  
  5. main(int argc, char *argv[])
  6. {
  7.     int numtasks, rank, sendcount, recvcount, source, i;
  8.     int tab[SIZE][SIZE] = {
  9.         {1, 2, 3, 4},
  10.         {5, 6, 7, 8},
  11.         {9, 10, 11, 12},
  12.         {13, 14, 15, 16}
  13.     };
  14.     int subTab[SIZE];
  15.  
  16.     MPI_Init(&argc,&argv);
  17.     MPI_Comm_rank(MPI_COMM_WORLD, &rank);
  18.     MPI_Comm_size(MPI_COMM_WORLD, &numtasks);
  19.  
  20.     int root = 0,
  21.         minGlobal;
  22.  
  23.     if (numtasks == SIZE) {
  24.  
  25.         MPI_Scatter(tab, SIZE, MPI_INT, subTab, SIZE, MPI_INT, root, MPI_COMM_WORLD);
  26.  
  27.         int min = subTab[0];
  28.         for(i = 1; i < SIZE; ++i) {
  29.             if(subTab[i] < min) {
  30.                 min = subTab[i];
  31.             }
  32.         }
  33.  
  34.         printf("rank = %d i = %d\n", rank, min);
  35.  
  36.         MPI_Reduce(&min, &minGlobal, 1, MPI_INT, MPI_MIN, root, MPI_COMM_WORLD);
  37.  
  38.         MPI_Barrier(MPI_COMM_WORLD);
  39.  
  40.         if(rank == root) {
  41.             printf("Global MIN = %d\n", minGlobal);
  42.         }
  43.  
  44.     }
  45.     else
  46.         printf("Must specify %d processors. Terminating.\n",SIZE);
  47.  
  48.     MPI_Finalize();
  49. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement