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`

Reply via email to