Программа дисциплины для студентов


MPI – хабар беру интерфейсі



бет20/45
Дата06.01.2022
өлшемі0,76 Mb.
#12433
түріБағдарламасы
1   ...   16   17   18   19   20   21   22   23   ...   45
MPI – хабар беру интерфейсі

MPI параллель программалаудың алғашқы құралдарының бірі. MPI кітапханасын қолданғанда торап үлестірілген программалар процессі С және Fortran сияқты тізбекті программалар тілдерінде жазылады. Процесстердің өзара әрекеті және оларды синхрондау MPI кітапханасына процедураларын шақыру көмегімен беріледі.

MPI қосымшаларын программалау интерфейсін 90-жылдардың ортасында университеттер, үкімет және өндірі ұйымдарының жобалау топтары құрған. Мақсат- әртүрлі көппроцессорлы машиналарда тиімді жүзеге асыратын бірдей кітапхана жасау. Бүгінгі күні MPI стандартқа айналды.

MPI кітапханасын қолданушы программаның SPMD стилі болады. Ол алдыңғы тауарлара сипатталған. Берілген жағдайда әрбір процесс бір ғана программаның көшірмесін орындайды. Программаның әрбір экземпляры MPI кітапханасының функцияларын шақыру арқылы өзара әрекеттеседі, олар процесстер, топтар және қоршаған ортаның өзара әрекеттерін қамтамасыз етеді.

MPI функционалдық сұраулардың кейбіреулерін қарастырамыз.

MPI Init- MPI кітапханасын инициализациялайды және программаға беретін командалық жолдың аргументерінің көшірмесін қайтарады. Нәтижесінде жіберілген процесстер жиыны инициаланады.

MPI Comm size- жіберілетін процесстер санын анықтайды.

MPI Send- процестің процесс рангін(идентификатор) анықтайды.0-ден 1-ге дейінгі сандар бола алады.

MPI Recv- хабарды беруді бұғаттау. Басқа процесске хабар береді.

MPI Finalize- MPIкітапханасын «алып тастайды» және процессті аяқтайды.

MPI Send және MPI Recv кітапханаларын толығырақ қарастырайық:

Int MPI Send (void*buf, int count, MPI Datatype dataType, int dest, int tag, MPI Comm comm)

Мұндағы buf,-буфер адресінің басы, count-жіберілетін элементтер саны; dataType-әрбір элемент типі, мысалы: MPI Int, MPI Double, MPI Char, және т.б.; dest-адресат рангісі; tag-хабар тэгі; comm.-коммуникатор.
Int MPI Recv (void*buf, int count,

MPI Datatype dataType,

int source, int tag,

MPI Comm comm,

MPI Status*status)

Мұндағы status-қайтару күнін қайтарады, source-беретін процесс идентификаторы немесе «немқұрайлы»; tag- хабар белгісі; қалған аргументтер MPI Send процедурасында сипатталған сияқты.

MPI кітапханасының көмегімен екі процесс арасындағы мәндерді алмастыру программасының бірін келтіреміз.

#include

#include

main(int argc, char*argv[])

{

Int myid,otherid,size;



Int length=1, tag=1;

Int myvalue, othervalue;

MPI Status status;

MPI Int

MPI Comm

MPI Comm





Достарыңызбен бөлісу:
1   ...   16   17   18   19   20   21   22   23   ...   45




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

    Басты бет