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



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

mpif77/mpif90 (Фортран 77/90 тілдеріндегі бағдарламалар үшін ) пайдалануға 
болады. Компилятордың "-о name" опциясы алынатын орындалатын файлға 
ат беруге мүмкіндік береді, арнайы айтылмаса орындалатын файл аты a.out
мысалы, Фортран тілінде: 
mpif77 -о program program.f 
Орындалатын файлды қабылдағаннан кейін оны процессорлардың 
қажетті санында жіберу керек. Ол үшін МРI-қосымшаларды жіберу (жүктеу) 
командасы 
mpirun
 
ұсынылады, мысалы: 
mpirun -np N <
аргументтерімен бағдарлама>, 
Мұндағы N – бір есеп үшін процестер саны. Жүктелгеннен кейін барлық 
жіберілген процестер бір ғана бағдарламаны орындайды, және орындалу 
нәтижесі жүйеге байланысты терминалға беріледі немесе анықталған атпен 
файлға жазылады. 
Барлық қосымша обьектілер: МРI пайдаланылатын функция аттары, 
процедуралар аттары, тұрақтылар, деректердің анықталған типтері және 
т.с.с., 
MPI
_
префиксімен беріледі. Мысалы, бір процестен екіншісіне 
хабарлама жіберетін функцияның аты MPI_Send. Егер пайдаланушы 
бағдарламада осындай префикспен аттарды пайдаланбаса, онда МРI 
объектілерімен біле тұра келіспеушіліктер болмайды. МРI интерфейсінің 
барлық сипаттаулары 
mpif.h (mpi.h)
файлында жинақталған, 
сондықтан МРI-бағдарламасының басында 
include „mpif.h‟
(Фортран тіліндегі бағдарламалар үшін) 
(#include “mpi.h”
 
Си 
тіліндегі бағдарламалар үшін) директивасы тұруы керек.
MPI-бағдарлама - бұл параллель ара-қатынас жасайтын процестер 
жиынтығы. Бағдарламаның параллель бӛлігін құра отырып, барлық 
процестер бір рет қана туындайды. MPI-бағдарламаның орындалуы 
барысында қосымша процестердің туындауына немесе бар процестердің 
жойылуына жол берілмейді (MPI-2.0-де мұндай мүмкіндік бар). MPI-да 


156 
ешқандай жалпы айнымалылар болмаса деректер жоқ, әрбір процесс ӛзінің 
адрестік кеңістігінде жұмыс істейді. Процестер арасындағы ара-қатынастың 
негізгі тәсілі хабарламаны айқын жіберу болып табылады. 
Бағдарлама 
параллель 
процестерінің 
ара-қатынасын 
таратпау 
(локализация) үшін процестер топтарын құруға болады. Бұл жағдайда 
олардың қатынас жасауы үшін жеке ортасы— коммуникатор ұсынылады
Құрылатын топтар құрамы еркін түрде алынады. Топтар бірдей болуы, 
қиылысуы да қиылыспауы да және бірі бірінің ішіне толық кіруі де мүмкін. 
Процестер ара-қатынасы тек қандай да бір коммуникатордың ішінде ғана 
орын алады, әртүрлі коммуникаторлармен жіберілген хабарламалар 
қиылыспайды және бір-біріне кедергі келтірмейді. Фортран тілінде 
коммуникаторлар типі 
INTEGER
,
ал Си тілінде - 
MPI_Comm
. Бағдарламаның 
жүктелген мезетінде барлық туындаған процестер 
MPI
_
COMM
_
WORLD 
коммуникаторы шеңберінде жұмыс істейді деп есептеледі. Бұл коммуникатор 
әрқашан болады және ол MPI-бағдарламасының барлық жүктелген 
процестерінің ара-қатынасы үшін қызмет атқарады. Сонымен қатар, 
бағдарламаның бастапқы жүктелуі кезінде бір ғана ағымды процестен 
тұратын 
MPI
_
COMM
_
SELF 
коммуникаторы және бірде-бір процесс кірмейтін 
MPI
_
COMM
_
NULL 
коммуникаторы болады.
MPI-бағдарламасының әрбір процесіне бүтін теріс емес сан болатын 
бірегей атрибут процесс нөмірі беріледі. Осы атрибуттың кӛмегімен 
процестер арасындағы ӛзара қатынастың айтарлықтай бӛлігі жүргізіледі. Бір 
коммуникатордағы әрбір процестің жеке нӛмірлері болатыны түсінікті. Бірақ 
процесс бір мезгілде әртүрлі коммуникаторларға кіре алатыны себепті, оның 
бір коммуникатордағы нӛмірі басқа коммуникатордағы нӛмірінен ӛзгеше 
болуы мүмкін. Бұдан келіп процестің негізгі екі атрибуты шығады: 
коммуникатор және коммуникатордағы нөмірі. 
Егер топта п процесс болса, онда кезкелген процестің осы топтағы 
нӛмірі 0-ден п-1-ге дейінгі аралықта жатады. Осы сияқты сызықты нӛмірлеу, 
бағдарлама процестерінің логикалық ара-қатынасын әрқашан бірдей кӛрсете 
бермейді. Мысалы, процестер берілген есептің мағынасына байланысты 
тікбұрышты тордың тораптарында орналасуы және олар ӛздерінің тікелей 
кӛршілерімен ғана ара-қатынас жасауы мүмкін. Мұндай жағдайды, сәйкес 
процестердің виртуалды топологиясын суреттей отырып пайдаланушы 
ӛзінің бағдарламасында жеңіл кӛрсете алады.
Бағдарлама 
процестерін 
есептеу 
жүйесінің 
физикалық 
процессорларына кӛшіргенде бұл ақпараттың пайдасы болуы мүмкін.
Процестер ӛзара қатынасының негізгі әдісі хабарламаны жіберу болып 
табылады. Хабарлама – бұл қандай да бір типтегі деректер жиыны. Әрбір 
хабарламаның бірнеше атрибуттары болады, мысалы, жіберген-процесс 
нӛмірі, қабылдаған-процесс нӛмірі, хабарлама идентификаторы және т.б. 
Хабарламаның маңызды атрибуттарының бірі болып оның идентификаторы 


157 
немесе тэг есептеледі. Мысалы, идентификатор бойынша хабарламаны 
қабылдаған процесс, оған тек бір процестен ғана келіп түскен екі 
хабарламаны ажырата алады. Хабарлама идентификаторы 0-ден 32767-ге 
дейінгі аралықта жататын бүтін теріс емес сан. 
Хабарлама атрибуттарымен жұмыс істеу үшін, ӛрістері атрибуттар 
мәндеріне қатынасты қамтамасыз ететін MPI_Status структураcы 
енгізілген.
Тәжірибе жүзінде хабарлама кӛбіне қандай да бір буферде бірінен кейін 
бір қатар орналасқан бір типті деректер жиыны түрінде болады. Мұндай 
хабарлама мысалы, пайдаланушы сәйкес бүтін санды векторда орналастырған 
бірнеше жүздеген бүтін саннан тұруы мүмкін. Алайда, бұндай ситуацияның 
кемінде екі шектеуі болуы мүмкін. Біріншіден, кейбір кездерде түрлі типті 
деректерден тұратын хабарлама құру қажет болады. Екіншіден, жіберілетін 
деректер жадыдан әрқашан үздіксіз облыс ала бермейді. Мысалы, егер Fortran 
бағдарламалау тілінде матрица бағандарының элементтері жадыда бірінен 
кейін бірі орналасса, онда жолдар элементтері қандай да бір қадаммен 
орналасады. Жол элементтерін жіберу үшін, біріншіден оларды жинақтап алу 
керек, одан кейін жіберу, одан қайта ашу керек болады. 


Достарыңызбен бөлісу:
1   ...   77   78   79   80   81   82   83   84   ...   121




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

    Басты бет