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



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

Си тіліндегі нұсқасы
#include "mpi.h"
#include  
int main(argc,argv) 
int argc; 
char *argv[]; { 
int numtasks, rank, dest, src, rс, tag=l; 
char inmsg, outmsg='x'; 
MPI_Status Stat; 
MPI_Init(&argc,&argv); 
MPI_Comm_size(MPI_COMM_WORLD, &numtasks); 
MPI_Comm_rank(MPI_COMM_WORLD, &rank); 
if (rank ==0) { 
dest = 1;
src = 1; 
rc = MPI_Send(&outmsg, 1, MPI_CHAR, dest, tag, MPI_COMM_WORLD);
rc = MPI_Recv(&inmsg,1,MPI_CHAR, src, tag, MPI_COMM_WORLD, &Stat); 
}


165 
else 
if (rank == 1) {
dest = 0;
src = 0;
rc = MPI_Recv(&inmsg, 1, MPI_CHAR, src, tag, MPI_COMM_WORLD, 
&Stat);
rc = MPI_Send(&outmsg, 1, MPI_CHAR, dest, tag, MPI_COMM_WORLD);
}
MPI_Finalize ();
}
Егер бағдарлама кӛп процестер санымен жіберілсе, онда жіберулерді 
нақты тек нӛлінші және бірінші процестер ғана орындайды. MPI_Init 
функциясы орындалуынан туындаған қалған процестер MPI_Finalize 
функциясын орындап бірден аяқталады

Фортран тіліндегі нұсқасы. 
program example2
include 'mpif.h‟
integer ierr, size, rank
real 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 = 0.0
b = 0.0 
if(rank .eq. 0) then
b = 1.0 
call MPI_SEND(b, 1, MPI_REAL, 1, 5, 

MPI_COMM_WORLD, ierr); 
call MPI_RECV(a, 1, MPI_REAL, 1, 5, 

MPI_COMM_WORLD, status, ierr); 
else 
if(rank .eq. 1) then
a = 2.0 
call MPI_RECV(b, 1, MPI_REAL, 0, 5, 

MPI_COMM_WORLD, status, ierr); 
call MPI_SEND(a, 1, MPI_REAL, 0, 5, 

MPI_COMM_WORLD, ierr); 
end if
end if 
print *, 'process ', rank,‟ a = ', a, ', b = ', b
call MPI_FINALIZE(ierr)
end 
Мұнда да егер бағдарлама кӛп процестер санымен жіберілсе, онда 
жіберулерді нақты тек нӛлінші және бірінші процестер ғана орындайды. 
MPI_Init функциясы орындалуынан туындаған қалған процестер a және 
айнымалыларының бастапқы мәндерін баспаға беріп, одан кейін 
MPI_Finalize функциясын орындап аяқталады 
 


166 
Келесі мысалда жұп нӛмірлі әрбір процесс нӛмірі бірге артық ӛз 
кӛршілеріне хабарлама жібереді. Масималды нӛмірлі процеске келесі жоқ 
процеске хабарлама жібермеу үшін қосымша тексеру қойылған. 
Бағдарламаның тӛменде сүлбесі ғана кӛрсетілген (Си тілінде). 
main(int argc, char **argv) 

int me, size; 
int SOME_TAG=0; 
MPI_Status status; 


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




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

    Басты бет