if(status(MPI_SOURCE) .EQ. 1) then
call MPI_RECV(ibuf, 1, MPI_INTEGER, 1, 5,
& MPI_COMM_WORLD, status, ierr)
call MPI_RECV(rbuf, 1, MPI_REAL, 2, 5,
& MPI_COMM_WORLD, status, ierr)
else
if(status(MPI_SOURCE) .EQ. 2) then
call MPI_RECV(rbuf, 1, MPI_REAL, 2, 5,
& MPI_COMM_WORLD, status, ierr)
call MPI_RECV(ibuf, 1, MPI_INTEGER, 1, 5,
& MPI_COMM_WORLD, status, ierr)
end if
end if
print *, 'Process 0 recv ', ibuf, ' from process 1, ',
& rbuf, ' from process 2'
end if
call MPI_FINALIZE(ierr)
end
<ke_^mxs_fijbf_j_fh^_ebjm_lkyihke_^h\Zl_evguch[f_gkhh[s_gbyfb
f_`^m^\mfyijhp_kkZfbaZf_jy_lky\j_fygZh^gmbl_jZpbxh[f_gZhij_
-
^_ey_lkyaZ\bkbfhklv\j_f_gbh[f_gZhl^ebgukhh[s_gbyLZdbfh[jZahf
hij_^_eyxlky [Zah\u_ oZjZdl_jbklbdb dhffmgbdZpbhgghc k_lb iZjZee_ev
-
gh]h dhfivxl_jZ eZl_glghklv\j_fy gZ i_j_^Zqm khh[s_gby gme_\hc
^ebgubfZdkbfZevgh^hklb`bfZyijhimkdgZykihkh[ghklvdhebq_kl\hf_
-
]Z[Zcl\k_dmg^mdhffmgbdZpbhgghck_lbZlZd`_^ebgZkhh[s_gbcgZdh
-
lhjhchgZ^hklb]Z_lkyDhgklZglZ
NMAX
aZ^Z_lh]jZgbq_gb_gZfZdkbfZevgmx
^ebgm ihkueZ_fh]h khh[s_gby Z dhgklZglZ
NTIMES
hij_^_ey_l dhebq_kl\h
ih\lhj_gbc ^ey mkj_^g_gby j_amevlZlZ KgZqZeZ ihkueZ_lky khh[s_gb_
gme_\hc ^ebgu ^ey hij_^_e_gby eZl_glghklb aZl_f ^ebgZ khh[s_gbc
m^\Zb\Z_lkygZqbgZykihkuedbh^gh]hwe_f_glZlbiZ
real*8
.
program example8
include 'mpif.h'
integer ierr, rank, size, i, n, lmax, NMAX, NTIMES
parameter (NMAX = 1 000 000, NTIMES = 10)
double precision time_start, time, bandwidth, max
real*8 a(NMAX)
integer status(MPI_STATUS_SIZE)
call MPI_INIT(ierr)
call MPI_COMM_SIZE(MPI_COMM_WORLD, size, ierr)
call MPI_COMM_RANK(MPI_COMM_WORLD, rank, ierr)
time_start = MPI_WTIME(ierr)
n = 0
max = 0.0
lmax = 0
do while(n .le. NMAX)
time_start = MPI_WTIME(ierr)