Here is code of mpi scatter:
#include <stdio.h>
#include <mpi.h>
int a[10]={1,2,3,4,5,6,7,8,9,10};
int b[1];
int main(int argc, char *argv[]) {
int rank;
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
MPI_Barrier(MPI_COMM_WORLD);
if(rank ==0){
MPI_Scatter(a,1,MPI_INT,b,1,MPI_INT,0,MPI_COMM_WORLD);
}
MPI_Barrier(MPI_COMM_WORLD);
printf("\n%d from rank=%d\n",b[0],rank);
MPI_Finalize();
return 0;
}
I want output as follows:
1 from rank 0
2 from rank 1
3 from rank 2
...
But I am getting
1 from rank 0
0 from rank 1
0 from rank 2
0 from rank 3
0 from rank 4
...