Hi Pradeep I am not sure if this is the reason, but usually it is a bad idea to force an order of receives (such as you do in your receive loop - first from sender 1 then from sender 2 then from sender 3) Unless you implement it so, there is no guarantee the sends are performed in this order. B
It is better if you accept messages from all senders (MPI_ANY_SOURCE) instead of particular ranks and then check where the message came from by examining the status fields (http://www.mpi-forum.org/docs/mpi22-report/node47.htm) Hope this helps Jody On Mon, Feb 18, 2013 at 5:06 PM, Pradeep Jha <prad...@ccs.engg.nagoya-u.ac.jp> wrote: > I have attached a sample of the MPI program I am trying to write. When I run > this program using "mpirun -np 4 a.out", my output is: > > Sender: 1 > Data received from 1 > Sender: 2 > Data received from 1 > Sender: 2 > > And the run hangs there. I dont understand why does the "sender" variable > change its value after MPI_recv? Any ideas? > > Thank you, > > Pradeep > > > program mpi_test > > include 'mpif.h' > > !----------------( Initialize variables )-------------------- > integer, dimension(3) :: recv, send > > integer :: sender, np, rank, ierror > > call mpi_init( ierror ) > call mpi_comm_rank( mpi_comm_world, rank, ierror ) > call mpi_comm_size( mpi_comm_world, np, ierror ) > > !----------------( Main program )-------------------- > > ! receive the data from the other processors > if (rank.eq.0) then > do sender = 1, np-1 > print *, "Sender: ", sender > call mpi_recv(recv, 3, mpi_int, sender, 1, > & mpi_comm_world, status, ierror) > print *, "Data received from ",sender > end do > end if > > ! send the data to the main processor > if (rank.ne.0) then > send(1) = 3 > send(2) = 4 > send(3) = 4 > call mpi_send(send, 3, mpi_int, 0, 1, mpi_comm_world, ierr) > end if > > > !----------------( clean up )-------------------- > call mpi_finalize(ierror) > > return > end program mpi_test` > > > _______________________________________________ > users mailing list > us...@open-mpi.org > http://www.open-mpi.org/mailman/listinfo.cgi/users