Оқулық Қазақстан Республикасы Білім және ғылым министрлігі бекіткен Алматы, 2011


шақырылатын болса, онда MPI_PROBE



Pdf көрінісі
бет89/121
Дата31.08.2022
өлшемі2,81 Mb.
#38343
түріОқулық
1   ...   85   86   87   88   89   90   91   92   ...   121
Байланысты:
duisembiev-parallel-esep

 
шақырылатын болса, онда
MPI_PROBE 
процедурасын шақыру кӛмегімен ақпарат алынған дәл сол 
хабарлама қабылданады. 
Келесі мысал келетін хабарламаның құрылымын анықтау үшін 
MPI_PROBE
 
процедурасының қолданылуын кӛрсетеді. Процесс 0 кез-
келген 1 және 2 (тегтері бірдей) процестерден келетін хабарламаны күтеді. 
Алайда, бұл процестерден жіберілетін деректер типтері әртүрлі. Келетін 
хабарламаны қай айнымалыға орналастыру керек екенін анықтау үшін, 
процесс алдымен 
MPI_PROBE
 
шақыруының кӛмегімен хабарламаның 
кімнен келгенін анықтайды. Одан кейінгі 
MPI
_
RECV
шақыруы қажетті 
хабарламаны кепілді түрде қабылдайды.
Соңынан басқа процестен хабарлама 
қабылданады (Фортран тіліндегі нұсқасы)
program
example4 
include 'mpif.h‟ 
integer rank, ierr, ibuf, status(MPI_STATUS_SIZE) 
real rbuf 
call MPI_INIT(ierr) 
call MPI_COMM_RANK(MPI_COMM_WORLD, rank, ierr) 
ibuf = rank 
rbuf = 1.0 * rank 
if(rank .eq. 1) call MPI_SEND(ibuf, 1, MPI_INTEGER, 0, 5, 

MPI_COMM_WORLD, ierr) 
if(rank .eq. 2) call MPI_SEND(rbuf, 1, MPI_REAL, 0, 5, 

MPI_COMM_WORLD, ierr) 
if(rank .eq. 0) then 


169 
call MPI_PROBE(MPI_ANY_SOURCE, 5, MPI_COMM_WORLD, 

status, ierr) 
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 
 


Достарыңызбен бөлісу:
1   ...   85   86   87   88   89   90   91   92   ...   121




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет