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



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

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(l), 
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); 


173 
print *, „process ‟, rank, 

„ prev=‟, buf(l), „ next=‟, 
buf(2) 
call MPI_FINALIZE(ierr) 
end 
 
 
int MPI_Waitany( int count, MPI_Request *requests, int 
*index, MPI_Status *status) 

count - асинхронды операциялар идентификаторларының саны; 

requests - асинхронды қабылдау немесе жіберу операцияларының 
идентификаторлары; 

OUT 
index - аяқталған алмасу операциясының нӛмірі; 

OUT 
status - хабарлама параметрлері. 
Фортран тіліндегі нұсқасы: 
MPI_WAITANY(COUNT, REQUESTS, INDEX, STATUS, IERR) 
INTEGER COUNT, REQUESTS(*), INDEX, 
STATUS(MPI_STATUS_SIZE), IERR 
Асинхронды COUNT операцияларының бірінің орындалуын күту. 
Кӛрсетілген идентификаторлармен анықталған алмасудың қандай да бір 
асинхронды 
операциясы 
аяқталмайынша, 
процестің 
орындалуы 
бұғатталынып тұрады. Егер бірнеше операциялар аяқталса, онда оладың 
бірі кездейсоқ түрде таңдалып алынады. Аяқталған операция 
идентификаторы кіретін requests массивіндегі элемент нӛмірін index 
параметрі қамтиды.


Достарыңызбен бөлісу:
1   ...   90   91   92   93   94   95   96   97   ...   121




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

    Басты бет