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



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

 
... 
MPI_Init (&argc, &argv);
MPI_Comm_rank (MPI_COMM_WORLD, &me);
MPI_Comm_size (MPI_COMM_WORLD, &size);
If( (me % 2) == 0) { 
if((me+1)< size) /* 
соңғысынан басқа процестердің бәрін жібереді */
MPI_Send (..., me+1, SOME_TAG, MPI_COMM_WORLD); 

else 
MPI_Recv (..., me-1, SOME_TAG, MPI_COMM_WORLD, &status); 
... 
MPI_Finalize(); 

Фортран тіліндегі нұсқасы 
program example3 
include 'mpif.h'
integer ierr, size, rank, a, b
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)
a = rank
b = -1 
if(mod(rank, 2) .eq. 0) then
if(rank+1 .It. size) then

соңғысынан басқа процестердің бәрін жібереді 
call MPI_Send(a, 1, MPI_INTEGER, rank+1, 5, 

MPI_COMM_WORLD, ierr); 


167 
end if
else 
call MPI_Recv(b, 1, MPI_INTEGER, rank-1, 5, 

MPI_COMM_WORLD, status, ierr); 
end if 
print *, 'process ', rank,‟ a = ', a, ', b = ', b
call MPI_FINALIZE(ierr)
end 
 
Хабарламаны қабылдау кезінде 
SOURCE
және 
MSGTAG
 
аргументтерінің 
орнына алдын ала анықталған келесі тұрақтыларды пайдалануға болады: 
• 
MPI
_
ANY
_
SOURCE
 
—кезкелген процестегі хабарлама сәйкестігінің 
белгісі; 
• 
MPI
_
ANY
_
TAG
 
— 
кезкелген 
идентификатормен 
хабарлама 
сәйкестігінің белгісі. 
Бұл екі тұрақтыны бір мезгілде пайдалану кезінде кезкелген процестен 
кезкелген идентификатормен хабарлама қабылдауға болады.
Қабылданған хабарламаның нақты атрибутарын әрқашанда status 
массивінің сәйкес элементтерімен анықтауға болады. Фортранда status 
параметрі ӛлшемі 
MPI
_
STATUS
_
SIZE


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




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

    Басты бет