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