/* file: gatherv.c compile: cc gatherv.c -lmpi run: mpirun -np 4 ./a.out */ #include "mpi.h" main( argc, argv ) int argc; char **argv; { int myrank; int gsize,sendarray[10]; int root, *rbuf, stride; int *displs,i,*rcounts; stride = 12; root = 0; MPI_Init( &argc, &argv ); MPI_Comm_size( MPI_COMM_WORLD, &gsize); MPI_Comm_rank( MPI_COMM_WORLD, &myrank ); /* send data of rank0 0 1 2 3 4 5 6 7 8 9 send data of rank1 1 2 3 4 5 6 7 8 9 10 send data of rank2 2 3 4 5 6 7 8 9 10 11 send data of rank3 3 4 5 6 7 8 9 10 11 12 */ printf("send data of rank%d", myrank); for(i=0; i<10; i++){ sendarray[i] = myrank+i; printf(" %d", sendarray[i]); } printf("\n"); if(myrank == root){ rbuf = (int *)malloc(gsize*stride*sizeof(int)); displs = (int *)malloc(gsize*sizeof(int)); rcounts = (int *)malloc(gsize*sizeof(int)); for (i=0; i