Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "mpi.h"
- #include <stdio.h>
- #include <stdlib.h>
- #define LICZNIK 3
- main(int argc, char *argv[]) {
- int numtasks, i,j, k , rank, a, rc;
- int *tab;
- int sum = 0, final = 0;
- int *rec_data;
- // liczba procesow
- //numtasks = 4;
- int *total_suma;
- total_suma = malloc(numtasks * sizeof(int));
- rec_data = malloc(LICZNIK * sizeof(int));
- rc = MPI_Init(&argc, &argv);
- MPI_Comm_size(MPI_COMM_WORLD, &numtasks);
- // if(numtasks == 0) {
- //printf("Wystapil blad. \n");
- tab = malloc(LICZNIK * numtasks * sizeof(int));
- for(i = 0; i < LICZNIK * numtasks; i++) {
- tab[i] = i;
- }
- MPI_Scatter(tab, LICZNIK, MPI_INT, rec_data, LICZNIK, MPI_INT, 0, MPI_COMM_WORLD);
- // }
- MPI_Comm_rank(MPI_COMM_WORLD, &rank);
- for(j = 0; j < LICZNIK; ++j) {
- sum = sum + rec_data[j];
- }
- MPI_Gather(&sum, 1, MPI_INT, total_suma, 1, MPI_INT, 0, MPI_COMM_WORLD);
- // if(numtasks == 0) {
- for (k=0; k < numtasks; ++k) {
- final = final + total_suma[k];
- }
- printf("Ilosc procesow= %d Jestem procesem= %d Suma_lokalna: %d \n", numtasks, rank, sum);
- printf("Total suma = %d ", final);
- // }
- MPI_Finalize();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement