ijhp_^mju b^_glbnbdZlhj g_[ehdbjmxs_c hi_jZpbb
REQUEST
mklZgZ\eb\Z_lky\agZq_gb_
MPI_REQUEST_NULL
.
MPI_WAITALL(COUNT, REQUESTS, STATUSES, IERR)
INTEGER COUNT, REQUESTS(*), STATUSES(MPI_STATUS_SIZE,*), IERR
H`b^Zgb_ aZ\_jr_gby
COUNT
Zkbgojhgguo hi_jZpbc Zkkhpbbjh\Zgguo k
b^_glbnbdZlhjZfb fZkkb\Z
REQUESTS
>ey hi_jZpbc g_[ehdbjmxsbo
ijb_fh\ hij_^_eyxlky khhl\_lkl\mxsb_ iZjZf_lju \ fZkkb\_
STATUSES
.
?keb\h\j_fyh^ghcbebg_kdhevdbohi_jZpbch[f_gZ\hagbdebhrb[dblh
ihe_ hrb[db \ we_f_glZo fZkkb\Z
STATUSES
[m^_l mklZgh\e_gh \
khhl\_lkl\mxs__agZq_gb_Ihke_\uiheg_gbyijhp_^mjukhhl\_lkl\mxsb_
we_f_glu iZjZf_ljZ
REQUESTS
mklZgZ\eb\Zxlky \ agZq_gb_
MPI_REQUEST_NULL
.
Gb`_ihdZaZgijbf_jnjZ]f_glZijh]jZffu\dhlhjhc\k_ijhp_kkuh[f_
-
gb\Zxlky khh[s_gbyfb k [eb`Zcrbfb khk_^yfb \ khhl\_lkl\bb k lhiheh
-
]b_cdhevpZijbihfhsbg_[ehdbjmxsbohi_jZpbcAZf_lbfqlhbkihevah
-
\Zgb_^eywlbop_e_c[ehdbjmxsbohi_jZpbcfh]ehijb\_klbd\hagbdgh\_
-
gbxlmibdh\hckblmZpbb
program example9
include 'mpif.h'
integer ierr, rank, size, prev, next, reqs(4), buf(2)
integer stats(MPI_STATUS_SIZE, 4)
call MPI_INIT(ierr)
call MPI_COMM_SIZE(MPI_COMM_WORLD, size, ierr)
call MPI_COMM_RANK(MPI_COMM_WORLD, rank, ierr)
prev = rank - 1
next = rank + 1
if (rank .eq. 0) prev = size - 1
if (rank .eq. size - 1) next = 0
call MPI_IRECV(buf(1), 1, MPI_INTEGER, prev, 5,
& MPI_COMM_WORLD, reqs(1), ierr)
call MPI_IRECV(buf(2), 1, MPI_INTEGER, next, 6,
& MPI_COMM_WORLD, reqs(2), ierr)
call MPI_ISEND(rank, 1, MPI_INTEGER, prev, 6,
& MPI_COMM_WORLD, reqs(3), ierr)
call MPI_ISEND(rank, 1, MPI_INTEGER, next, 5,
& MPI_COMM_WORLD, reqs(4), ierr)
call MPI_WAITALL(4, reqs, stats, ierr);
print *, ‘process ’, rank,
& ‘ prev=’, buf(1), ‘ next=’, buf(2)
call MPI_FINALIZE(ierr)
end
MPI_WAITANY(COUNT, REQUESTS, INDEX, STATUS, IERR)
INTEGER COUNT, REQUESTS(*), INDEX, STATUS(MPI_STATUS_SIZE), IERR
H`b^Zgb_ aZ\_jr_gby h^ghc ba
COUNT
Zkbgojhgguo hi_jZpbc Zkkhpbbjh
-
\Zgguokb^_glbnbdZlhjZfb
REQUESTS
?kebdfhf_glm\uah\ZaZ\_jrbebkv