/* file: allgather.c compile: cc -64 allgather.c -lmpi run: mpirun -np 2 ./a.out rank = 0 : 0 1 2 3 : 0 1 2 3 0 2 4 6 0 3 6 9 0 4 8 12 rank = 1 : 0 2 4 6 : 0 1 2 3 0 2 4 6 0 3 6 9 0 4 8 12 rank = 2 : 0 3 6 9 : 0 1 2 3 0 2 4 6 0 3 6 9 0 4 8 12 rank = 3 : 0 4 8 12 : 0 1 2 3 0 2 4 6 0 3 6 9 0 4 8 12 */ #include "mpi.h" main( argc, argv ) int argc; char **argv; { int myrank; int n; int i; int local_send[4]; int local_recv[100]; MPI_Init( &argc, &argv ); MPI_Comm_rank( MPI_COMM_WORLD, &myrank ); MPI_Comm_size( MPI_COMM_WORLD, &n ); for(i=0; i<4; i++){ local_send[i] = (myrank+1)*i; } MPI_Allgather(local_send,4, MPI_INT, local_recv, 4, MPI_INT, MPI_COMM_WORLD); printf("rank = %d : ", myrank); for (i = 0; i< 4; i++) printf("%2d ", local_send[i]); printf("\n : "); for (i = 0; i < 4*n; i++) printf("%2d ", local_recv[i]); printf("\n"); MPI_Finalize(); }