Win Than Aung wrote:
MPI_Recv(....) << is it possible to receive the message sent from other sources? I tried MPI_ANY_SOURCE in place of source but it doesn't work out
Yes of course. Can you send a short example of what doesn't work? The example should presumably be less than about 20 lines. Here is an example that works:
% cat a.c #include <stdio.h> #include <mpi.h> int main(int argc, char **argv) { int np, me, sbuf = -1, rbuf = -2; MPI_Init(&argc,&argv); MPI_Comm_size(MPI_COMM_WORLD,&np); MPI_Comm_rank(MPI_COMM_WORLD,&me); if ( np < 2 ) MPI_Abort(MPI_COMM_WORLD,-1); if ( me == 1 ) MPI_Send(&sbuf,1,MPI_INT,0,344,MPI_COMM_WORLD); if ( me == 0 ) { MPI_Recv(&rbuf,1,MPI_INT,MPI_ANY_SOURCE,344,MPI_COMM_WORLD,MPI_STATUS_IGNORE); if ( rbuf == sbuf ) printf("Send/Recv self passed\n"); else printf("Send/Recv self FAILED\n"); } MPI_Finalize(); return 0; } % mpicc a.c % mpirun -np 2 a.out Send/Recv self passed %