Здавалка
Главная | Обратная связь

OpenMP негізгі принциптері



OpenMP интефейсі SMP-жүйелерінде (SSMP, ccNUMA және т.б.) бағдарламалау үшін стандарт ретінде ойластырылған. OpenMP стандартына компилятор директиваларының, көмекші функциялардың және орта айнымалыларының жиыны спецификациялары кіреді. Стандарт көптеген UNIX-платформаларында және Windows NT ортасында қолжетімділікке ие.

OpenMP параллель есептеулерді көпағындылық UNIX көмегімен іске асырады, онда «басты» (master) ағын «бағыныңқы» (slave) ағындардың жиынын құрады және есеп солардың арасында таратылады. Ағындар бірнеше процессорлы машиналарда параллель орындалады деп болжанады және онда процессорлар саны ағындар санынан үлкен немесе тең болуы міндетті емес.

Бастапқы уақыт мезетінде жіп-мастер (нить-мастер) немесе "басты" жіп туындайды және ол бағдарламаның орындалуын стартты нүктеден бастайды. Сонымен қатар ол тек өзі ғана бағдарламаның барлық тізбекті облыстарын орындайды.

Параллель облысқа енген кезде жіп-мастер қосымша жіптерді туындатады . Одан кейін әрбір қосымша жіп өзінің бірегей нөмірін алады, ал жіп-мастердің нөмірі әрқашан 0. Барлық қосымша туындаған жіптер пареллель облысқа сәйкес келетін бір кодты ғана орындайды. Параллель облыстан шығар мезетте басты жіп қалған жіптердің аяқталуын күтеді және бағдарламаның ары қарай орындалуын өзі ғана жалғастырады.

Параллель облыста бағдарламаның барлық айнымалылары екі класқа бөлінеді: жалпы (SHARED) және жергілікті (PRIVATE). Жалпы айнымалылар бағдарлама үшін әрқашанда бір экземплярда ғана болып, барлық жіптерге бір атпен ғана қолжетімді болады. Жергілікті айнымалыларды хабарлау әр жіп үшін әрбір айнымалының өз экземплярын туындатады. Жіптің өзінің жергілікті айнымалысының мәнін өзгертуі, басқа жіптердегі дәл осы жергілікті айнымалының мәнінің өзгеруіне ешқандай әсері жоқ. Негізінде, бағдарлама облыстарының соңғы қарастырылған түсініктері және айнымалылар кластары ОреnМР шеңберінде параллель бағдарламалар жазудың жалпы идеяларын анықтайды: бағдарлама текстінің кейбір фрагменттері параллель облыстар болып хабарланады; тек осы облыстар ғана жіптер жиынымен орындалады, ал олар жалпы айнымалылармен де жергілікті айнымалылармен де жұмыс істей алады.

 

5. OpenMP технологиясындағы программалаудың принципиалды сұлбасы

44 сурет. ОреnМР: бағдарламаның орындалу процесі

 

Бастапқы уақыт мезетінде жіп-мастер (нить-мастер) немесе "басты" жіп туындайды және ол бағдарламаның орындалуын стартты нүктеден бастайды. Сонымен қатар ол тек өзі ғана бағдарламаның барлық тізбекті облыстарын орындайды. Параллельділікті қолдау үшін мұнда FORK/JOIN схемасы пайдаланылады. Параллель облысқа енген кезде жіп-мастер қосымша жіптерді туындатады (FORK операциясы орындалады). Одан кейін әрбір қосымша жіп өзінің бірегей нөмірін алады, ал жіп-мастердің нөмірі әрқашан 0. Барлық қосымша туындаған жіптер пареллель облысқа сәйкес келетін бір кодты ғана орындайды. Параллель облыстан шығар мезетте басты жіп қалған жіптердің аяқталуын күтеді және бағдарламаның ары қарай орындалуын өзі ғана жалғастырады (JOIN операциясы орындалады).

Параллель облыста бағдарламаның барлық айнымалылары екі класқа бөлінеді: жалпы (SHARED) және жергілікті (PRIVATE). Жалпы айнымалылар бағдарлама үшін әрқашанда бір экземплярда ғана болып, барлық жіптерге бір атпен ғана қолжетімді болады. Жергілікті айнымалыларды хабарлау әр жіп үшін әрбір айнымалының өз экземплярын туындатады. Жіптің өзінің жергілікті айнымалысының мәнін өзгертуі, басқа жіптердегі дәл осы жергілікті айнымалының мәнінің өзгеруіне ешқандай әсері жоқ. Негізінде, бағдарлама облыстарының соңғы қарастырылған түсініктері және айнымалылар кластары ОреnМР шеңберінде параллель бағдарламалар жазудың жалпы идеяларын анықтайды: бағдарлама текстінің кейбір фрагменттері параллель облыстар болып хабарланады; тек осы облыстар ғана жіптер жиынымен орындалады, ал олар жалпы айнымалылармен де жергілікті айнымалылармен де жұмыс істей алады.

6. Амдал заңы. Үдеулігі (жеделдету). Тиімділік

(Амдалдың бірінші заңы)

Өзара байланысқан құрылғылардан тұратын есептеуіш жүйенің өнімділігі, жалпы жағдайда, оның өнімділігі ең төмен құрылғысымен анықталады.

Салдар

Есептеу жүйесі қарапайым s құрылғыдан тұрсын және жүйенің графы байланысты болсын. Егер жүйе құрылғыларының шекті өнімділіктері бірдей болса, онда жүйенің асимптотикалық өнімділіігі максималды болады.

Амдалдың екінші заңы

Жүйе бірдей s қарапайым әмбебап құрылғылардан құралған болсын. Алгоритмнің паралельді бөлігін орындау кезінде барлық s құрылғы толығымен жүктеледі деп болжам жасайық. Онда максималды мүмкін жеделдік R тең болады:

тізбекті есептеулер еншісі(долясы) деп атайық

Амдалдың үшінші заңы

Жүйе қарапайым бірдей әмбебап құрылғылардан құралсын делік. Кез-келген жұмыс режимінде оның жеделдігі тізбекті есептеулер еншісінің кері шамасынан асып түсе алмайды.

Амдал формуласын негізінен жеделдету мүмкіндігін болжау үшін қолданған жөн.

 

 

7. Суперскалярлы және векторлы процессорлар.

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

Тәжірибе жүзінде VLIW–процессорлары (Very Large Instruction Word) негізінен фон-неймандық компьютері ережесімен жұмыс істейді. Айырмашылығы: процессорге әр цикл сайын берілетін команда, бір ғана операцияны емес, бірден бірнешеуін анықтайды.

VLIW-процесорының командасы өрістер жиынтығынан тұрады, олардың әрқайсысы өзінің операциясына жауап береді, мысалы, функционалды құрылғыларды активтеу, жадпен жұмыс істеу, регистрлермен операция және т.б. Егер процессордың қандай да бір бөлігі, бағдарламаның орындалуы барысының ағымды этапында қажет етілмесе, онда команданың оған сәйкес өрісі әрекет етпейді.

VLIW-процессоры үшін бағдарлама әрқашанда параллельділік туралы нақты, дәл ақпаратты қамтиды. Мұнда, компилятор, әрдайым бағдарламадағы параллельділікті өзі анықтап, қандай операциялар бір-біріне тәуелсіз екені туралы ақпаратты аппаратураға айқын түрде хабарлайды.

VLIW-процессорына арналған кодта процессордың бағдарламаны қалай орындайтыны туралы нақты жоспары енгізілген: әр операция қай кезде орындалады, қандай функционалды құрылғылар жұмыс істейді, қандай регистрлерге қандай операндтар кіреді және т.б.

 

 







©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.