私が書こうとしている MPI プログラムのサンプルを添付しました。「mpirun -np 4 a.out」を使用してこのプログラムを実行すると、出力は次のようになります。
Sender: 1
Data received from 1
Sender: 2
Data received from 1
Sender: 2
そして、実行はそこにぶら下がっています。Sender 変数が MPI_recv の後で値を変更する理由がわかりません。何か案は?
ありがとう、プラディープ
` プログラム 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`