143
44 сурет. ОреnМР: бағдарламаның орындалу процесі
Бастапқы уақыт мезетінде жіп-мастер (нить-мастер) немесе "басты" жіп
туындайды және ол бағдарламаның орындалуын стартты нүктеден бастайды.
Сонымен қатар ол тек ӛзі ғана бағдарламаның барлық тізбекті облыстарын
орындайды. Параллельділікті қолдау үшін мұнда FORK/JOIN схемасы
пайдаланылады. Параллель облысқа енген кезде жіп-мастер қосымша
жіптерді туындатады (FORK операциясы орындалады). Одан кейін әрбір
қосымша жіп ӛзінің бірегей нӛмірін алады, ал жіп-мастердің нӛмірі әрқашан
0. Барлық қосымша туындаған жіптер пареллель облысқа сәйкес келетін
бір
кодты ғана орындайды. Параллель облыстан шығар мезетте басты жіп
қалған жіптердің аяқталуын күтеді және бағдарламаның ары қарай
орындалуын ӛзі ғана жалғастырады (JOIN операциясы орындалады).
Параллель облыста бағдарламаның барлық айнымалылары екі класқа
бӛлінеді:
жалпы (SHARED) және
жергілікті (PRIVATE). Жалпы
айнымалылар бағдарлама үшін әрқашанда бір экземплярда ғана болып,
барлық жіптерге бір атпен ғана қолжетімді болады. Жергілікті
айнымалыларды хабарлау әр жіп үшін әрбір айнымалының ӛз экземплярын
туындатады. Жіптің ӛзінің жергілікті айнымалысының мәнін ӛзгертуі, басқа
жіптердегі дәл осы жергілікті айнымалының мәнінің ӛзгеруіне ешқандай әсері
жоқ. Негізінде, бағдарлама облыстарының соңғы қарастырылған түсініктері
және айнымалылар кластары ОреnМР шеңберінде параллель бағдарламалар
жазудың жалпы идеяларын анықтайды: бағдарлама текстінің кейбір
фрагменттері параллель облыстар болып хабарланады; тек осы облыстар
ғана жіптер жиынымен орындалады, ал олар жалпы айнымалылармен де
жергілікті айнымалылармен де жұмыс істей алады.
ОреnМР негізгі конструкциясы мен базалық құрылымын қарастырайық
[2]. Ондағы барлық директивалар комментарилерде орналасады және келесі
комбинациялардың бірінен басталады: !$
ОМР
,
С
$
ОМР
немесе *$
ОМР
(еске сала
кетсек '!', 'с' или '*' символдарының бірінен басталатын жол, Fortran тілінің
ережелері бойынша комментарий болып есептеледі).
Достарыңызбен бөлісу: