Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
working on mpi_comm_split.
[simgrid.git] / src / smpi / sample / allreduce.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_Allreduce(sendbuf, recvbuf, size, MPI_INT, MPI_SUM, MPI_COMM_WORLD);
20   printf("node %d has: ", rank);
21   for (i = 0; i < size; i++) {
22     printf("%d ", recvbuf[i]);
23   }
24   printf("\n");
25   free(sendbuf);
26   free(recvbuf);
27   MPI_Finalize();
28   return 0;
29 }