Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Compile about every existing SMPI examples (reduce don't compile)
[simgrid.git] / examples / smpi / reduce.c
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <mpi.h>
4
5 int main(int argc, char *argv[]) {
6   int rank, size;
7   int i;
8   int *sendbuf, *recvbuf;
9   MPI_Init(&argc, &argv);
10   MPI_Comm_rank(MPI_COMM_WORLD, &rank);
11   MPI_Comm_size(MPI_COMM_WORLD, &size);
12   sendbuf = malloc(sizeof(int) * size);
13   recvbuf = malloc(sizeof(int) * size);
14   for (i = 0; i < size; i++) {
15     sendbuf[i] = 0;
16     recvbuf[i] = 0;
17   }
18   sendbuf[rank] = rank + 1;
19   MPI_Reduce(sendbuf, recvbuf, size, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD);
20   if (0 == rank) {
21     printf("nodes: ", rank);
22     for (i = 0; i < size; i++) {
23       printf("%d ", recvbuf[i]);
24     }
25     printf("\n");
26   }
27   free(sendbuf);
28   free(recvbuf);
29   MPI_Finalize();
30   return 0;
31 }