Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "mpi.h"
- #include <stdio.h>
- #define SIZE 4
- main(int argc, char *argv[])
- {
- int numtasks, rank, sendcount, recvcount, source, i;
- int tab[SIZE][SIZE] = {
- {1, 2, 3, 4},
- {5, 6, 7, 8},
- {9, 10, 11, 12},
- {13, 14, 15, 16}
- };
- int subTab[SIZE];
- MPI_Init(&argc,&argv);
- MPI_Comm_rank(MPI_COMM_WORLD, &rank);
- MPI_Comm_size(MPI_COMM_WORLD, &numtasks);
- int root = 0,
- minGlobal;
- if (numtasks == SIZE) {
- MPI_Scatter(tab, SIZE, MPI_INT, subTab, SIZE, MPI_INT, root, MPI_COMM_WORLD);
- int min = subTab[0];
- for(i = 1; i < SIZE; ++i) {
- if(subTab[i] < min) {
- min = subTab[i];
- }
- }
- printf("rank = %d i = %d\n", rank, min);
- MPI_Reduce(&min, &minGlobal, 1, MPI_INT, MPI_MIN, root, MPI_COMM_WORLD);
- MPI_Barrier(MPI_COMM_WORLD);
- if(rank == root) {
- printf("Global MIN = %d\n", minGlobal);
- }
- }
- else
- printf("Must specify %d processors. Terminating.\n",SIZE);
- MPI_Finalize();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement