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`