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



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

WAIT
,
 
MPI
_
TEST 
процедураларының кӛмегімен анықтауға болады. 
Кезкелген MPI_SEND, MPI_ISEND процедураларымен жіберілген 
хабарлама кезкелген MPI_RECV және MPI_IRECV процедураларымен 
қабылдана алады.
Тӛменде сақина топологиясына сәйкес, барлық процестері жақын 
кӛршілерімен хабарлама алмасатын бағдарлама мысалы келтірілген.
#include "mpi.h"
#include  
int main(argc,argv) 
int argc; 
char *argv[]; { 
int numtasks, rank, next, prev, buf[2], tagl=l, tag2=2; 
MPI_Request reqs[4]; 
MPI_Status stats [4]; 
MPI_Init (&argc, &argv) ; 


172 
MPI_Comm_size(MPI_COMM_WORLD, &numtasks); 
MPI_Comm_rank(MPI_COMM_WORLD, &rank); 
prev = rank - 1; 
next = rank+1; 
if (rank == 0) prev = numtasks - 1; 
if (rank == (numtasks - 1)) next = 0; 
MPI_Irecv(&buf[0], 1, MPI_INT, prev, tagl, MPI_COMM_WORLD, 
&reqs[0]);
MPI_Irecv(&buf[1], 
1, 
MPI_INT, 
next, 
tag2, 
MPI_COMM_WORLD, &reqs[1]); 
MPI_Isend(&rank, 
1, 
MPI_INT, 
prev, 
tag2, 
MPI_COMM_WORLD, 
&reqs[2]); 
MPI_Isend(&rank, 
1, 
MPI_INT, next, tagl, MPI_COMM_WORLD, &reqs[3]); 
MPI_Waitall(4, reqs, stats); 
MPI_Finalize(); 

Фортран тіліндегі нұсқасы: 
program example5 
include 'mpif.h

integer ierr, rank, size, prev, next, reqs(4), buf(2) 
integer stats(MPI_STATUS_SIZE, 4) 


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




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

    Басты бет