Параллельді есептеуіште таратылған жадтар жүйесін ұйымдастыру



Жұмыс түрі:  Дипломдық жұмыс
Тегін:  Антиплагиат
Көлемі: 91 бет
Таңдаулыға:   
МАЗМҰНЫ

Глоссарий 3
КІРІСПЕ 4
1 ПАРАЛЛЕЛЬДІ ЕСЕПТЕУ, ПАРАЛЛЕЛЬДІ КОМПЬЮТЕР ЖӘНЕ АППАРАТТЫҚ ҚАМТАМАСЫЗДАНДЫРУ 7
1.1 Параллелизм, параллелизм деректері, параллелизм есебі және параллелизмді қолдану 7
1.2 Параллельді есептеуіш жүйелердің классификациясы 12
1.3 Параллельді компьютерлердің типтері және жаңа таксономия 22
жасау тәсілдері 22
2 ПАРАЛЛЕЛЬДІ БАҒДАРЛАМАЛАУ ОРТАСЫ 29
2.1 Параллельді бағдарламалаудың технологиясы 29
2.2 OpenMP параллельді бағдарламалау технологиясын С++ алгоритмдік тілде қолдану 35
2.3 Параллельді бағдарламалаудың бағалану тиімділігі 60
3. OPENMP ПАРАЛЛЕЛИЗМ ҰЙЫМДАСТЫРУДА ҚОЛДАНУ 67
3.1 Тізбектелген әдіспен Дирихле есебін шығару 67
3.2 Параллельді есептеуіште жалпы жадтар жүйесін ұйымдастыру 70
3.3 Параллельді есептеуіште таратылған жадтар жүйесін ұйымдастыру 86
ҚОРЫТЫНДЫ 96
ҚОЛДАНЫЛҒАН ӘДЕБИЕТТЕР ТІЗІМІ 97

Глоссарий

call pvmfexit( info ) - PVM жұмысын аяқтайды.
call pvmfkill( tid, info ) - tid - идентификаторымен жұмысты аяқтайды.
call pvmfspawn( task, flag, where, ntask, tids, numt ) task - орындалатын файл аты;
INTEGER ntask - орындалатын программалар саны;
INTEGER tids - мәндер массиві.
INTEGER flag - іске қосу опциясы;
MPI(Message Passing Interface ) - хабарламаларды беру интерфейсі.
MPI_Comm_rank - процесстер рангісін анықтайды.
MPI_Comm_size - процесстер санын анықтайды.
MPI_Recv - хабарламаның блокталынып алынуы.
MPI_Send - хабарламаның блокталынып берілуі.
msgtag - осы хабарлама тэгі;
nlnts - бүтін сандар саны;
PVM _Recv - блоктап алау.
PVM _Send - тағайындалған процесске хабарламаның асинхронды берілуі
PVM параллельді виртуальды машина.
PVM_initsend (int encoding) - үнсіз келісім бойынша инициализациялайды;
PVM_pkint - бүтін сандарды жинау.
PVM_rnkbuf (int encoding) - хабарламаны орналастыратын жаңа буфер құрып, идентификаторды қайтарады;
PVM_setsbuf (int bufid) - ағымдағы буферді хабарлама жіберуге дайындайды;
PVM_upkint - жиналған бүтін сандарды қайта ашу.
startAddress - бірінші бүтін сан адресі;
tid - хабарлама жіберетін есеп идентификаторы;
where - іске қосылатын орын;
КІРІСПЕ

Параллельді есептеулер (параллельді өңдеу) - бір бағдарламаның (бір жобаның) әр түрлі бөліктерін бір уақытта орындау үшін бірнеше немесе көптеген есептеу құрылғыларын пайдалану.
Параллельді есептеулер-бағдарлама параллель жұмыс істейтін өзара әрекеттесетін есептеу процестерінің жиынтығы ретінде әзірленетін компьютерлік есептеулерді ұйымдастырудың тәсілі.
Параллельді есептеулер-процесспен туындайтын көптеген әрекеттерді бір уақытта орындау мүмкіндігін пайдалана отырып, көппроцессорлық жүйелерде іске асыруға болатын есептеулер бір немесе көп есептерді шешу. Параллель есептеулердің негізгі мақсаты-есепті шешу уақытын азайту. Тәжірибе қажеттілігі үшін көптеген қажетті міндеттерді нақты уақытта шешу қажет немесе оларды шешу үшін өте үлкен есептеу қажет.
Процессорлар санының артуы міндетті түрде мәселені шешу уақытының азаюына әкелмейді. (Егер кішкентай шұңқыр бір уақытта 10 адамды қазуға тырысса, онда олар тек бір-біріне кедергі жасайды.)
Деректерді параллель өңдеуді пайдалану-есептеу жылдамдығын арттырудың жалғыз жолы емес. Тағы бір тәсіл-процессорлық құрылғылардың қуатын арттыру. Мұндай тәсілдің шектеулері:
1. Ауысу жылдамдығының шектеулілігі. Тіпті ең жылдам коммуникацияларда - оптикалық - ауысу жылдамдығы жарық жылдамдығынан аспайды.
2. Қосқыш өлшемдерінің шектеулілігі. Құрылғы компоненттерінің мөлшері аз болса, құрылғы жылдам жұмыс істей алады. Алайда, олардың молекулалық және атомдық құрылысымен байланысты компоненттер өлшеміне физикалық шек бар.
3. Экономикалық шектеулер. Процессордың жылдамдығын, қаптаманың тығыздығын, кристалдағы қабаттар санын арттыру үшін күрделенетін барлық ғылыми, инженерлік, өндірістік проблемаларды шешуге тура келеді. Сондықтан процессорлардың әрбір жаңа ұрпағы қымбат. Әрқашан үлкен тапсырмалар бар, оларды шешу үшін параллель компьютердің қуатын қажет етеді.
Параллельді есептеулердің міндеті-көппроцессорлық есептеуіш техниканы пайдаланудың барынша тиімділігіне қол жеткізу мақсатында есептерді шешу процестерінде параллелизм ресурсын құру (параллельді алгоритм алу) және осы параллелизмнің жүзеге асырылуын басқару.
Есепті шешудің параллельдік алгоритмін қолда бар тізбекті алгоритмді параллель шешу жолымен немесе жаңа параллельді алгоритмді өңдеу жолымен алуға болады. Мүмкін, параллельді шешу үшін тапсырманы шешу алгоритмін ауыстыру немесе түрлендіру керек (мысалы, операциялар арасындағы кейбір тәуелділікті жою).

Параллельді есептеулердің терминологиясын қалыптасқан деп санауға болмайды, сондықтан төменде келтірілген ұғымдардың кейбірі басқа түсіндірмелерге жол беруі мүмкін.
Суперкомпьютер - қазіргі компьютерлердің көпшілігінен айтарлықтай асып түсетін есептеуіш машина.
Кластер - жергілікті есептеу желісіне біріктірілген және бірыңғай есептеу ресурсы ретінде жұмыс істеуге қабілетті компьютерлер тобы.
Кластер тек жергілікті есептеу желісіне қарағанда жоғары сенімділік пен тиімділікті болжайды. Кластер типтік аппараттық және бағдарламалық шешімдерді пайдаланады және сондықтан параллельді есептеу жүйелерінің басқа үлгілерімен салыстырғанда айтарлықтай төмен құны бар.
Таратылған есептеулер - параллельді есептеуіш жүйеге біріктірілген бірнеше компьютерлерді пайдалана отырып, көп еңбекті қажет ететін есептеуіш есептерді шешу тәсілі. Әлсіз байланысқан, гетерогенді есептеу жүйелері бөлінген жүйелердің жеке тобына - Grid бөледі. [Уикипедия]
Таратылған есептеулер - есептеуіш желімен немесе интернетпен біріктірілген көптеген компьютерлердің арасында үлкен міндет үлестірілетін деректерді өңдеу технологиясы.
Бұлтты есептеулер - компьютерлік ресурстар мен қуаттар интернет-сервис ретінде берілетін деректерді өңдеу технологиясы.
Осылайша, таратылған және бұлтты есептеулер параллельді есептеулердің жеке жағдайы болып табылады. Параллельді есептеулер бір компьютерде (суперкомпьютерде немесе көп ядролы компьютерде), сондай-ақ көптеген компьютерлерде де жүргізілуі мүмкін. Бір компьютерде бөлінген және бұлтты есептеулер жүргізілмейді.
Параллельді тапсырмалар - бір мезгілде (міндетті түрде тәуелсіз емес) орындауға рұқсат беретін тапсырмалар.
Параллельді алгоритм - операциялары бір мезгілде орындалуы мүмкін алгоритм (міндетті емес тәуелсіз); анық немесе анық емес түрде бір мезгілде орындалатын операциялар немесе көптеген операциялар көрсетілгені түсініледі. Параллель алгоритмнің қатаң түсінігі енгізілген жоқ.
Параллельді бағдарлама - параллельді архитектураның есептеуіш жүйелеріне бағытталған кейбір бағдарламалау жүйесінде жазылған параллельді алгоритм.
Деректер бойынша параллелизм. Функционалдық параллелизм. Егер кейбір есептерді шешу кезінде процессорлар есептеудің бірдей бірізділігін орындаса, бірақ әртүрлі мәліметтерді қолданса, онда деректер бойынша параллелизм туралы айтады. Мысалы, деректер базасы бойынша іздеу кезінде әрбір процессор деректер базасының өз бөлігімен жұмыс істей алады. Егер процессорлар бір тапсырманың әр түрлі тапсырмаларын орындап, әр түрлі функцияларды орындайды, функционалдық параллелизм туралы айтады.
Операция деректерін конвейерлік өңдеу (операция деңгейіндегі конвейерлік параллелизм). Операция микро операцияға бөлінсін. Микрооперацияны орындау тәртібімен орналастырамыз және әрбір орындау үшін құрылғының жеке бөлігін бөлектеңіз. Бірінші кезеңде кіріс деректер өңдеу үшін бірінші бөлімге түседі. Бірінші микрооперацияны орындағаннан кейін бірінші бөлім өзінің екінші бөлігінің жұмыс нәтижелерін береді, ал өзі жаңа деректерді алады. Кіріс аргументтері барлық өңдеу кезеңдерінен өткенде, құрылғының шығуында операцияны орындау нәтижесі пайда болады. Осылайша, функционалдық параллелизм жүзеге асырылады. Құрылғының әр бөлігі конвейер баспалдағымен, ал сатылардың жалпы саны конвейердің ұзындығы деп аталады.
Табиғи параллелизм. Алгоритм табиғи параллелизмге ие, егер оны орындалатын бөліктерге бөлуге болады.
Ішкі параллелизм. Алгоритм ішкі параллелизмге ие, егер оны орындалатын бөліктерге параллель бөлуге болады (бірақ міндетті емес).
Параллельдеу. Бір мезгілде орындалуы мүмкін операцияларды немесе тізбектей алгоритмнің көптеген операцияларын анықтау (көрсету).
Статикалық параллельдеу. Алгоритмді (бағдарламаны) орындау басталғанға дейін жүзеге асырылатын параллельдеу.
Динамикалық параллельдеу. Алгоритмді (бағдарламаны) орындау кезінде жүзеге асырылатын параллельдеу.

1 ПАРАЛЛЕЛЬДІ ЕСЕПТЕУ, ПАРАЛЛЕЛЬДІ КОМПЬЮТЕР ЖӘНЕ АППАРАТТЫҚ ҚАМТАМАСЫЗДАНДЫРУ

1.1 Параллелизм, параллелизм деректері, параллелизм есебі және параллелизмді қолдану

Параллельді есептеуіш жүйелер - ол физикалық компьютерлер, және де көптеген есептеуіш түйіндерде әртүрлі әдістермен мәліметтерді параллельді өңдеуді жүзеге асыратын бағдарламалық жүйелер. Есептерді қайта параллельдеу ойы көптеген есептердің бір уақытта шешілуі мүмкін кіші есептердің жиынтығына негізделеді. Әдетте параллельді есептеулер әрекеттердің координациясын талап етеді. Параллельді есептеулер бірнеше формаларда бар: биттер деңгейіндегі параллелизм, нұсқаулықтар негізіндегі параллелизм, мәліметтердің параллелизмі, есептердің параллелизмі. Параллельді есептеулер көп жылдар бойы жоғары өнімді есептерде қолданылды, бірақ соңғы кездерде оларға процессорлардың тактілік жиілігінің көбеюіне физикалық шектеулердің бар болуынан сұраныс көбейді. Параллельді есептеулер компьютерлер сәулеті негізінде көпядролы процессорлар формасында доминирлеуші парадигма болды.
Бірнеше әрекеттің бір мезгілде орындалуы үшін жүргізілетін мәліметтерді параллель өңдеудің екі түрі бар: конвейерлік және параллелизмдік.
Параллельді өңдеу. Егер бір құрылым бір уақыт бірлігінде бір операция орындаса, онда мың операцияны мың бірлікте орындайды. Егер осындай бір мезгілде жұмыс жүргізетін бір-біріне тәуелсіз бес құрылым болса, онда жүйе мың операцияны мың уақыт бірлігінде емес, екі жүз уақыт бірлігінде орындайды. Осыған ұқсас Ν құрылымды жүйе осындай жұмысты шамамен 1000 Ν уақыт бірлігінде орындайды,
Конвейерлік өңдеу. Құбылмалы үтір формасында берілген екі заттық сандарды қосу үшін не қажет? Көптеген операциялар жиынтығы қажет. Алғашқы компьютерлердің процессорлары мұндай майда операцияларды соңына жеткенше бірінен соң бірін орындайды, содан соң ғана келесі қосылғыштарды орындауға көшетін.
Конвейерлік өңдеудің мәні жалпы операцияларды орындаудың жекелеген кезеңдерін бөлу, әрбір кезең өзіне жүктелген жұмысты орындап болып, нәтижесін келесі кезеңге береді де, өзі жаңа мәліметтерді қабылдайды. Мұндай операцияларды біріктіру арқылы өңдеу жылдамдығын арттырамыз. Мысалы, операцияда бес шағын операцияларды бөлсек, олардың әрқайсысын орындауға уақыт бірлігі кетеді. Егер бөлінбейтін тізбекті құрылым болса, онда 100 жұп аргументтерді ол 500 бірлікте орындайды. Егер әрбір шағын операцияны конвейерлік құрылымның жеке кезеңдеріне бөлсек, онда уақыттың бесінші бірлігінде алғашқы 5 жұп аргумент болады, әрбір келесі аргумент - алдыңғыдан бір бірліктен соң келіп тұрады, яғни тізбекті құрылыммен салыстырғанда жылдамдық бес есе жоғары болады.
Жалпы жағдайда да осыған ұқсас болады. Егер конвейерлік құрылымда басқышы l болса, онда әрбір басқыш бәр уақыт бірлігінде жұмысқа қосылады, онда өңдеу уақыты n тәуелсіз операцияларын өңдеу уақыты , құрады. Егер құрылымды тізбекті режимде пайдаланса, өңдеу уақыты құрайды. Нәтижесінде конвейерлік өңдеуді пайдалану есебінен жылдамдық 1 есе жоғары болады.
Конвейерлік өңдеуді қарапайым параллель өңдеумен ауыстыруға болар еді. Алайда алынатын жүйе құны мен күрделіліг конвейрелік нұсқасының құны мен күрделігімен салыстыруға келмейді, ал өнімділігі бірдей деңгейде.
Параллелизм бағдарламаны жазу үшін онда бір мезгілде есептелетін операциялар тобын анықтау қажет және қандай процессормен, қандай құрылыммен, конвейердің қандай басқасында орындалғанына байланыссыз екендігін анықтау керек.
Бұл мүмкіндік бағдарламада нақты ақпараттық тәуелділік бар не жоқтығымен анықталады. Бағдарламаның екі операциясы бір операцияны орындау үшін аргумент ретінде екіншісі қолданылса, ақпараттық тәуелділік деп аталады. Егер операция В А операциясына ақпараттық тәуелділік болса, онда В операциясы А операциясы орындалған соң ғана орындалады. Бір жағынан, егер А және В операциялары ақпараттық тәуелді болса, онда алгоритм олардың орындалу тәртібіне ешқандай шектеу қоя алмайды. Сонымен, бағдарламаны параллель жүргізу одан тәуелсіз операциялардың санын жеткілікті түрде табуға әкеледі, оларды есептеу құрылымдары арасында тарату, синхрондылықты қамтамасыз ету болып табылады.
Ақпараттық тәуелсіздік ұғымын ендіру қарапайым түрде болады, ал ақпараттық тәуелсіздіктің барлық жиынтығыны зерттеу нақты бағдарламада күрделі міндет болып табылады. Бірнеше мыңдаған операторлардан тұратын бағдарламаныны елестету жеткілікті және әрбір циклі көптеген операциялардан тұрады десек, туындайтын мәселелер күрделене түседі. Міндеттер мен талдауды оңайлату үшін ақпараттық тәуелсіздік графасы ұғымын енгізу қажет.
Мұндай графалардағы ең биік тұғыр бағдарламаның кейбір операциялары танылады, егер екі операция арасында ақпараттық тәуелділік болса, бұл операцияларға сәйкес келетін биіктер доғамен байланыстырылады, оның бастапқысы ретінде ақпарат - жеткізуші биіктік, соңы ретінде - ақпарат - тұтынушы биіктік танылады. Графты зерттеуді оңайлату үшін доға саны аз тұғырлық граф айқындалады, егер графтың екі биіктігі жолмен байланысса оны тәуелділіктің ең аз графы деп атайды. Ең аз граф тәуелсіздігінің көмегімен шешілуі тиіс барлық тапсырмалар шешімін табады. Егер биіктіктерге бағдарлама операторларының жеке қосылулары сәйкес келсе, мұндай граф бағдарламаны орындаудың ақпараттық тарихы деп аталады. Ақпараттық тарих талдау жасалатын бағдарламаның ақпараттық тәуелділігі құрылымы туралы толық мәлімет береді, сондықтан бағдарламаға талдау жасауда параллельдеу мақсатымен ақпараттық тарих қолданылады. Алайда талдау жасаудың күрделілігі мынада, қарапайым жағдайда алынатын графты қолмен құруға және талдауға болатын болса, ал үлкен нақты бағдарламаларда бағдарламалық құралдар қажет.
Бағдарламаны орындаудың негізгі құрауыштары орталық процессор, кэш және жады болып табылады. Біртекті процессордың архитектурасын жақсартудың түрлі әдістері бар:
1. Жинақтаушының төрт модулін қолдану, орталық процессордың ішкі бөлімінің біреуінің орнына қосушы;
2. Өткізу жолағын үлкейту үшін екі немесе одан да көп жады блоктарын орталық процессорге қосу;
3. Бір мезгілде орындалатын командалар санын көбейту үшін екі немесе
бірнеше процессорларды қосу;
4. Барлық компьютерлердің жұмысы бірге бір бағдарламаны шешуге
бағытталуы үшін толық компьютерді қосу.
Параллелизм түрлі деңгейлерге жіктелуі мүмкін:
тапсырма деңгейінің параллелизмі;
бағдарлама деңгейінің параллелизмі;
команда деңгейінің параллелизмі;
арифметикалық - теңестіру параллелизмі.
Тапсырма деңгейінің параллелизмі - параллелизмдіктің ең жоғарғы деңгейі. Мысалы, зертханалық немесе компьютерлік орталықта берілген уақыт кезеңінің тапсырмаларын орындайды. Бұл үлкен компьютерлік жүйелерді сатып алумен қол жеткізетін нәрсе, сондықтан көптеген тапсырмаларды орындау үшін қолданушының кез келген тапсырмасы басқаларға қарағанда жылдамырақ орындалады.
Тапсырма деңгейінің параллелизмділігі бір компьютер деңгейінде де қолданылады.Орталық процессордың және енгізу-шығару жүйесі арқылы параллельді жұмыс атқарады.
Параллелизмдіктің берілген түрінің үлгісі - бірнеше тапсырмалар тұрақты жадында бір уақытта сақталады, тек біреуі кез келген уақытта орындалады. Егер бұл тапсырма енгізу-шығару типіндегі қызметті керек етсе, онда операция басталып, тапсырма тоқтатылып, ал басқа тапсырма орындалу жағдайына орналастырылады. Келесіде енгізу-шығару операциясы аяқталып, берілген деректерге қол жеткізген соң басқару бастапқы тапсырмаға кері барып, орындау жалғасады.
Бағдарлама деңгейінің параллелизмі - бағдарлама деңгейінің параллелизмділігі бір бағдарламаның құрамы бөліктерге бөлінген кезде жүзеге асады. Мысалы, С=АхВ матрицасының қорытындысы матрицаларды квадраттарға бөлу жолы арқылы есептелуі мүмкін:
С11
С11
=
А11
А12
х
В11
В12
С21
С22

А21
А22

В21
В22

Бағдарлама деңгейінің параллелизмділігі екі жолмен анықталады:
берілген бағдарламаны дербес бөліктерге бөлумен;
итерациялар арасындағы ешқандай тәуелді емес кезде циклдің жеке дара итерацияларын пайдалану;
Параллелизмдіктің бұл типі көптеген процессорлармен немесе көптеген функциялық модульдермен қолданылуы мүмкін.
Бағдарлама деңгейіндегі параллелизмдіктің қарапайым мысалы, қосындыларды анықтау. Төменде екі массивтің элементтерінің қосындысын анықтау коды берілген:
For (i=0; iN; i++)
A[j] = B[i] +C[i];
Қосындылар дербес, яғни B[i]+C[i] есептеуі кез келген jI үшін B[j] +C[j] дербес. Олар кез келген тәртіппен анықталуы мүмкін екенін білдіреді және әсіресе көппроцессорлы машиналарды есептеген кезде барлық деректерін бір мезгілде орындауы мүмкін.
Команда деңгейінің параллелизмі - команда деңгейінің параллелизмділігі архитектураның төменгі деңгейі және компьютерді ұйымдастыру шеңберіне жатады. Бұл параллелизмдіктің типін іске асырудың ең жалпылай әдісі - конвейерлер.
Бұл жағдайда жеке командалар жабылып, берілген команда бірнеше операцияларға бөлінуі мүмкін, олар өз кезегінде жабылады. Бірінші жағдайда, мысалы, орталық процессордың ішкі жадындағы мағынасын көшіретін қондыру командасын табады. Екінші жағдайда, арифметикалық өңдеудің тірегі болған барлық жерде жүретін конвейерлер арқылы көрсетілуі мүмкін.
Ең маңыздысы, компиляторлардың сапасы жүйеден жүйеге өткенде жылдам өзгереді және мүмкін компилятор құралдарын жоғары деңгейде қолдануы үшін кодын түрлі әдістермен құрастыру керек болады. Мысалы, Cray фирмасының супер ЭЕМ өте сапалы, олардың векторларының ұзындығы - 64 бит немесе одан аз және жұмысты жақсартатын үйлестіру бағдарламалары сапалы.
Арифметикалық- биттік- теңестіруші параллелизм - параллелизмдіктің ең төменгі деңгейі. Параллелизмдіктің бұл деңгейі орталық процессордағы арифметикалық-логикалық қондырғыларға жатады. Мысалы, 64 биттің қосындысы екі әдіспен анықталуы мүмкін:
1. барлық 64 битті бір мезгілде қосу.
2. операцияны 4 биттен бөліктерге бөлуге және 16 циклден толық қосындыны есептеуге болады.
Параллельді бағдарламалауды қамтамасыз ететін талаптар қалыптасқан:
параллелизмдік - көптеген іс-әрекетті бір мезгілде орындау қабілеті;
масштабтық (әмбебап) - процессорлардың көбею санына икемділік
қабілеті;
жергілікті - локальдық жадының жойылған жадыға қатынасының
жоғары коэффициентін көрсетеді;
модульдік - күрделі нысандардың қарапайым құрауыштарға бөлінуі.
Тізбектік модель.
командаларды тізбектеуді орындауға қабілетті процессор.
команда оқылатын немесе жадыға жазылатын берілген өлшемнің адресін, немесе келесі орындалатын команданың адресін анықтай алады.
Қазіргі таңда компьютерді осы негізгі модельдің терминдерімен машина тілімен бағдарламалауға болады. Берілген әдістің кемшілігі: біз жадының миллиондаған ұяшықтарын қарауға және машинаның мыңдаған командаларын орындауды ұйымдастыруға болады. Бағдарламалауды қарапайым құрал етудің бір әдісі - ол модульды бағдарламалаудың процедура, циклдеу үлгісін басым пайдалану қажет.
Параллельді модель. Есептеу үрдісі каналдармен(бағыттар) байланысқан тапсырмалар жинағын шешуден тұрады.
Тапсырма бағдарламаны және локальды жадыны инкапсулдайды және қоршаған ортамен өзара әрекеттестікті анықтайтын порттардың жинағын анықтайды.
Канал - жіберуші хабарлама орналастыратын хабарламалар реті және алушы хабарламаны жоя алады, егер хабарламалар қол жетерлік болмаса, онда канал оны алуға қарсылық жасайды.
Параллельді модельдеуді қарастырған кезде кейбір абстракциялауды қабылдау қажет. Параллельді бағдарламалауды қамтамасыз етуде мықты талаптарды қолдану келесі абстракцияларды қабылдауды жүктейді:
Параллельді есептеу бір немесе бірнеше есептерді шешуден тұрады. Тапсырмалар бір мезгілде орындалады. Тапсырмалар саны бағдарламаны орындау кезінде өзгеруі мүмкін;
Тапсырма тізбектік бағдарламаны және жергілікті жадыны жіктейді.(Шындығында, бұл Фон Нейманның виртуалды машинасы). Сонымен қатар, ішкі порттар (Outport) мен алыс порттардың (import) жиынтығы оның қоршаған ортамен өзара әрекетін анықтайды;
Жергілікті жады оқуға және жазуға қосымша ретінде төрт негізгі әрекет орындай алады: алыс орналасқан портқа хабарлама жіберу, ішкі портқа хабарлама қабылдау, сондай-ақ жаңа тапсырмалар құру және оларды орындау;
Хабарлама беру операциясы үйлесімсіз болып табылады, яғни бұл операция тез арада аяқталады. Қабылдау операциясы үйлесімді, яғни ол хабарлама жетпеген кезде тапсырмаларды қол жеткісіз етеді;
Outportimport жұптары хабарлама ретімен байланысып, каналдар деп аталады. Каналдар құрылуы, жойылуы мүмкін және сондай-ақ каналдарға сілтемелер хабарламаларға қосылуы мүмкін, яғни байланыс қызметі өзгеріп отырады;
Тапсырмалар физикалық процессорларға түрлі әдістермен көрініс беруі мүмкін, қолданылған көрініс бағдарламаның семантикасына әсер етпейді. Көптеген тапсырмалар бірпроцессорлы компьютерге де қабылданады.
Бағдарламалаудың түрлі параллелизмдік моделдері қалыптасқан, олар тапсырмалардың өзара әрекеті механизмі, тапсырмаларды бөлшектеу сатылары, орналасуы, әмбебаптығы және модульдығы арқылы айқындалады:
- Хабарлама жіберу;
- Деректердің параллелизмділігі;
- Жалпыға жетерлік жады.
Хабарлама жіберу бағдарламалары әрқайсысында жергілікті деректері бар көптеген тапсырмаларды құрайды. Әр тапсырма басқа тапсырмалармен өзара әрекеттесіп, аталған тапсырмалардан хабарлама алып және жіберіп отырады.
Деректер параллелизмділігі бөлінген есептеулерде қолданады, олар бір қосымшадан және бір операцияның деректер құрылымының көптеген элементтерінен шығады. Әр деректер элементінің әр операциясы туралы дербес тапсырма ретінде ойлау керек.
Жалпыға жететіндей жадыда модель мен тапсырмалар бағдарламалауда жалпы адрестік кеңістікті бірге қолданады, олар оны оқиды және үйлесімсіз жазады. Ол кезде жалпыға жететіндей жадыға қол жеткізуді басқару үшін түрлі механизмдер қолданады.

1.2 Параллельді есептеуіш жүйелердің классификациясы

М.Флинн есептеуіш жүйесінің классификациясы
Есептеу жүйесінің сәулетінің классификациясын бірнеше топтарға бөлуге болады, әрбір сәулеттің өзіндік сипаттамасы бар, параллельді есептеу жүйесінің құрылымы 60 жылдары М.Флинн алғашқы классификацияны анықтаған болатын. Флиннің компьютерлік жүйесі бойынша классификация саны командалар ағынымен және деректер ағынымен анықталады (Сурет 1.1)
SISD (single instruction streamsingle data stream)- командалардың жеке ағыны және жеке деректер ағыны;
SIMD (single instruction streammultiple data stream)- командалардың жеке ағыны және көптік деректердің ағыны;
MISD (multiple instruction streamsingle data stream)- командалардың көптік ағыны және жеке деректердің ағыны;
MIMD(multiple instruction streammultiple data stream)- командалардың көптік ағыны және көптік деректерді ағыны.

Сурет 1.1. Флинн классификациясы

SISD (single instruction streamsingle data stream)- командалардың жеке ағыны және жеке деректер ағыны. Бұл класқа классикалық жүйелі машиналары жатады немесе басқаша айтқанда фон - неймандық машинасының үлгісіне сәйкес келеді, мысалы, PDP-11 немесе VAX - 11780. Сондай-ақ командалар тек қана бір ағынды машиналарда болады, барлық команданың бірінен соң бірі жүйелі өңделеді және деректерді ағынының ретімен операцияны әрбір команда орындайды. Мысалы, командаладың жеке ағынымен және жеке деректер ағыннан тұратын машиналар мыналар:
CDC 6600 көп функционалды модульдерден тұрады;
CDC конвейерлік арифметикалық модульден тұрады;
Cray-1 векторлық өңдейді қанағаттандырады.
SISD (single instruction streamsingle data stream)- командалардың жеке ағыны және жеке деректер ағынының құрлымы төмендегідей бейнеленген (Сурет 1.2).

Басқару
моделі
Өңдеу
моделі
Қорытынды
Команда
Деректер

Сурет 1.2. SISD құрылымы

SIMD (single instruction streammultiple data stream)- командалардың жеке ағыны және көптік деректердің ағыны - бұл моедльде бір ғана командалар ағыны бар, процессор командалар тізбегінің соңынан және көптік деректер ағынының, әртүрлі деректер элементімен, әрбір процессор арасында таратылады. SIMD компьютері жадтарға таратуды қарастырады. Жалпы құрылымы төменде көрсетілген (Сурет 1.3).
Басқару
модулі
Өңдеу
модулі
Өңдеу
модулі
Өңдеу
модулі

Команда
Деректер

Деректер

Деректер

Қорытынды
Қорытынды
Қорытынды

Сурет 1.3. SIMD құрылымы

Бұл берілген құрылымда барлығы қарапaйым элементарлық процессорлардың бір уақытта командалармен және қадаммен синхронмен бірге орындалады. Әрбір компьютер өзінің жадындағы деректермен және деректер ағындарындағы ретімен жұмыс жасайды. Әрбір компьютер өзінің командаларын аяқтап болған соң келесі команданы орындауға ауысып көшеді. Команданың орындалуы синхронды болып табылады. SIMD компьютерінің моделіне мысал келтіретін болсақ, ол мынадай:
ILLIAC - IV;
BSP;
MMP;
Connection Machine.
SIMD компьютері көбінесе бөлінген деректермен нейрондық жүйедегі параллельді қосымшаларда қолданылады.
MIMD (multiple instruction streammultiple data stream)- командалардың көптік ағыны және көптік деректерді ағыны - бұл компьютер көптеген элементарлық процессорлармен байланысты, әрбір блок өзінің жеке басқармасына ие. MIMD компьютерінің құрылымы төмендегідей бейнеленген (Сурет 1.4).

Басқару
модулі
Басқару
модулі
Өңдеу
модулі
Өңдеу
модулі

Ж
Е
Л
І

Команда
Деректер
Команда
Деректер
Қорытынды
Қорытынды

Сурет 1.4. MIMD моделі

Процессор өзінің жеке деректерінің өзіндік жеке командаларының әрекетімен орындалады. Есептер әртүрлі процессорларда орындалады, олардың басталатын және аяқталатын уақыттары әртүрлі болуы мүмкін. Олардың орындалу қадамдары бірдей орындалмайды, SIMD компьютері сияқты емес, олар асинхронды түрде орындалады.
MIMD компьютерінің құрылымы таратылған жадтар болуы мүмкін немесе жалпы қолайлы жадтардың бірігуімен қолданылады. Мұндай типтегі компьютерлерге мысалы мыналарды жатқызуға болады:
Cray - 2, S1;
Cray X - MP;
IBM 370168 MP, iPSC.
MISD (multiple instruction streamsingle data stream)- командалардың көптік ағыны және жеке деректердің ағыны - бұл машина көп элементарлық процессорлар құрылмынан тұрады, әрбір процессор тәуелсіз командалар ағымын орындайды. Бірақ, барлық элементарлық процессорлар бір және сол деректер ағымымен орындалады. MISD типтегі компьютердің моделі төмендегідей бейнеленген (Сурет 1.5).

Басқару
модулі
Өңдеу
модулі
Өңдеу
модулі
Басқару
модулі
Деректер
Команда
Команда
Қорытынды

Сурет 1.5. MISD моделі

Бұл компьютердегі мысалға жалғыз белгі Carnegie - Mellon университетінде құрылған С.mmp (Computer multi-mini-processor - компьютер кішігірім көп процессор) MISD компьютерінде қабілетті орындалады.
Р.Хокин классификациясы
Р.Хокин компьютердің жүйеленген құрылымына сәйкес өз классификациясын өңдеп шығарды, М.Флинн MIМD класс жүйесіне сәйкес келеді. Хокин сәулетті жүйелей отырып, толық иерархиялық құрылымын анықтады, төменде көрсетілген (Сурет 1.6).
MIMD
Ауыстырылып қосылатындар
Жалпы
жадқа
Жадтарға бөлінген
Конвейерлік
Желі
Жүйелі
торлар
Гиперкуб
Иерархиялық құрылымы
Өзгеріп отыртаын кесін үйлесімі

Сурет 1.6. Хокиннің қосымша MIМD класының классификациясы

Бұл классификацияның негізгі идеясы мыналардан тұрады. Көптік командалар ағыны екі жолмен өңделуі мүмкін: бірі конвейерлік құрылымдармен өңделуі мүмкін, жеке ағымдар үшін бөлінген уақыт режимінде жұмыс жасайды, немесе әрбір ағын өзінің құрылымдарымен өңделіп отыруы мүмкін. Біріншіден, бұл жерде MIМD компьютерін қолдану мүмкіндігі бар, яғни автор айтқандай оны конвейерлік деп атайды. Сәулет өзінің екінші мүмкіндігін қолданады, өзінің кезегінде тағыда екі класқа бөлінеді. Бірінші класс MIМD коммпьютеріне тигізіп жатыр, яғни алғашқы байланысы тікелей әрбір процессордың мүмкіндігін ауыстырып қосылатындар көмегімен ұйымдастыруға болады. Екіншіден, класта MIМD компьютері бар, яғни әрбір процессордың арасындағы байланыс тек қана жақын орналасқан желілермен ғана болуы мүмкін, өшірілген процессорлардың қарым-қатынасы арнайы маршрутизация жүйесін қолдайды. Хокиннің MIМD машинасында ауыстырып қосылатын барлық процессорлар ортасында таратылған жадтармен жергілікті жадтар сияқты дейді. Осындай MIМD машиналар таратылған жадтар машинасы деп аталады.
Джонс классификациясы
Есептеу техникасының дамуында таратылған есептеуіш жүйесін құру, яғни келесі есептеуіш жүйесі келесі кластардан тұрады:
1. ЭЕМ желісі;
2. Мультипроцессорлық жүйе;
3. Арнайы ЭЕМ тағайындалған.
а) сәлет жоғары дәрежедегі параллелизм;
ә) матрицалық процессор;
б) есептеуіш жүйе фон Неймандық сәулет емес.
Сондықтан бір мүмкіндігін u1084 көппроцессорлық жүйе классификациясы үшін дәржесіне қарай нақтылаудың тереңдігін, бөлшектеу болып бөлінеді. Джонс өзінің классификациясындағы сәулетті екіге бөлуді ұсынды: бір жағынан алып қарайтын болсақ, сәулет арасында элементтер кооперациясы аз кездеседі; басқа жағынан қарайтын болсақ, сәулетте алмасу жиі болып тұрады, синхронизация деңгейі жеке командалардан туындайды.
Энслоу классификациясы
Энслоу есептеуіш жүйесіндегі сәулетке үш өлшемді классификациясын ұсынды. Оларды жеке қарастырайық.
1. Процессордың элементтерін тарату (аппараттық физикалық ұйымдастыру ортасы). Бір орталық процессордан бастлап көппроцессорлы сәулетке дейін таралады.
2. Басқаруды ұйымдастыру (орталық құрылымдарды басқарудан бастап таратылған жүйелер басқару таратылымына дейін).
3. Деректер тарату. Есептуіш жүйсінінің орталық құрылымды деректерінен бастап есептеуіш жүйелердің деректер қорының таратылымына дейін орындалады.
Т.Фенг классификациясы
1972 жылы Т.Фенг есептеуіш жүйесінің қарапайым классификаицясының сипаттамасын ұсынды. Бірінші, n саны машина сөзінде бит болады, яғни машина құрылымының көмегімен параллельді өңдейді. Тәжірибе бойынша барлық компьютерлерде бұл сан машина сөзінің ұзындығына сәйкес келеді. Екіншіден, m сөзінің санына тең сипатталады, бір уақытта деректерді есептеуіш жүйесінде өңдейді. Әрбір есептеуіш жүйесін (n, m) санынан тұратын жұптармен сипаттауға болады. P=n*m туындысын параллельді сәулеттің потенциалды интегралдық сипатымен анықталады, Фенг оны есептеуіш жүйенің жоғары дәрежелі параллелизм деп атайды. Осы айтылған түсініктерге қарай барлық есептеуіш жүйесін төрт класқа бөлуге болады.
Дәрежелі - тізбектелен, сөзбе-сөз - тізбектелген (n=m=1). Әрбір уақыттағы мүмкіндікте мұндай компьютерлер тек қана жалғаз екілік дәрежелерді өңдейді. Осы типтегі класқа MINIMA жүйесінің (1,1) .
Дәрежелі - параллельді, тізбектелген - Көптеген компьютерлер жүйесі классикалық түрде болады, яғни көптеген есептеуіш жүйелерінде қоланылатын кластар мыналыр: ІВМ 701 (36,1) көрсетіліммен, PDP-11 (16,1) көрсетіліммен, ІВМ 36050 және VAX 11780 екеуіде (32,1) көрсетіліммен көрсетілген.
Дәрежелі - жүйелер, тізбектелген параллельді (n=1, m1). Есетеуіш жүйесінің ережесі бойынша бұл кластар процессор элементтер санының үлкен бір дәрежесінен тұрады, әр қайсысы басқа деректерді өңдеулеріне тәуелсіз болуы мүмкін. Мұндай түрге мысал ретінде STARAN (1, 256) және MPP (1, 16384) Goodyear Aerospace фирмалары, SOLOMON (1, 1024) компьютері және тағы басқалар.
Дәрежелі - параллельді, тізбектелген - параллельді (n1, m1). u1087 басым көп ұлғайтылғандық параллельді есептеуіш жүйесі m*n екілік дәрежесін бір уақытта өңдейді, мұндай класқа жататындар: ILLIAC IV (64,64), TI ASC (64, 32), C.mmp (16, 16), CDC 6600 (60, 10) және тағы басқалар.
В.Хендлер классификациясы
Хендлердің негізгі классификациясында есептеуіш жүйені айқын анықталуын нақтылайды, параллельді және конвейерліктің мүмкіндіктерінде есептеуіш жүйенің ақпараттын өңдейді (Сурет 1.7). Ол сол себепті, әртүрлі мүмкіндіктерді, яғни процессорлар арасымен және жадтар блогымен қарастырмайды, коммуникациялық желілерде керекті конфигурацияларды және жүктелінетін әрекеттерді ммүкіндіктерін қолдануға болады деп ойлайды. Жоспарланған классификация үш түрлі дәрежемен бағдарламада орындалатын процестердің деректерін өңдейді:
Бағдарламаны орындау деңгейі; командаладың есеп көрсеткішіне сүйене отырып, және бірнеше басқа регистрлердің, басқару құрылымы таңдай жасайды және бағдарламаның командысын деширлайды, яғни кодтайды.
Командалады орындау деңгейі; арифметикалық*логикалық құрылылғыларда компьюетр командалады орындайды, оған берілген құрылғыларды басқару;
Биттік өңдеу деңгейі; барлық процессорлардағы элементарлық логикалық сызбасы топтарға бөлінеді, жалғыз екілік дәрежесінде операцияларды орындау үшін керек.

Сурет 1.7. Хендлер классификациясының сызбасы

Мұндай сызбадағы деңшейлерді белгілеуді жорамалдайды, яғни есептеуіш жүйесі процессорда қандай да бір санғы ие, әрбір құрылғы өзінің басқару құрылғысымен бақыланып отырады. Әрбір басқару құрылғысы бірнеше арифметикалық-логикалық құрылғылармен байланысты болады, яңғни бір операцияны және сол операцияны қандайда бір уақыт мүмкіндігінде орындалады. Әрбір афирметикалық-логикалық құрылғылар бірнеше логикалық элементтер сызбасының топтарын қосады., ассоциирленген бір ғана екілік дәрежесін өңдейді. Егер бірнеше уақыт конвейеризациялауға қарамайтын болсақ, онда k саны құырылғыларды басқарады, d саны арифметикалық-логикалық құрылғылардың әрбір басқару құрылғыларын басқарады және логикалық элементтарлық сызбасында w саны топтардағы арифметикалық-логикалық құрылғылар үш санды есептеуіш жүйенде былай сипаттайды: C:t(C)=(k,d,w). Мұндай есептеуіш жүйенің сипатталуы келесі түрде болады:
t(MINIMA) = (1, 1, 1);
t(IBM 701) = (1, 1, 36);
t(SOLOMON) = (1, 1024, 1);
t(C.mmp) = (16, 1, 16);
t(ILLIAC IV) = (1, 64, 64).
Бұған қарамай, есептелген жйүеге тән параллелизм әртүрлі түрде болады, ол ерекшеленбей осы берілген үш деңгейдің баруы мүмкін. Енді, егер сипатталуын кеңейтетін болсақ, онда конывейердің өңделу мүкіндігін қолдана отырып, келесі деңгейді аламыз. Әрбір үштік t(C)=(k*k, d*d, w*w) осындай түрде болады, олар:
k - процессор саны (әрбір өзінің басқару құрылғысымен), яғн параллельді жұмыс жасайтын;
k - макроконвейердегі жеке процессордың тереңдігі;
d - әрбір процессордағы арифметикалық-логикалық құрылғылар саны, яғн параллельді жұмыс жасайтын;
d - функционалдық құрылғылардағы арифметикалық-логикалық құрылғылар конвейерінің тереңдігі;
w - сөздер санының дәрежесі, арифмктикалық-логикалық құрылғыда паралелльді өңдейтін;
w - конвейердегі функционалдық құрылғылардың арифметикалық-логикалық құрылғылар сатысының саны.
Д.Скилликорн классификациясы
1989 жылы Флинн классификациясының көлемін кеңейту үшін ммүкіндіктер жасалынды және оның жеткіліксіз жақтарын толтырып анықтау болып табылды. Д.Скилликорн осыған орай, керек көппроцессорлар жүйесінің құрылымын сипаттату үшін өңдеп шығарды (Сурет 1.8). Яғни кез келген сәулет компьютерінде қарастыру, абстракты құрылымда және төрт компоненттен тұрады:

DP
IP
Командалар
Күй-жағдай туралы ақапарат
Деректер жады
Операндлар адресі
Операндлар
Командалар жады
Командалар
Адрестер

Сурет 1.8. Д.Скилликорн классификациясының сызбасы

1. Командалардың процессоры (IP - Instruction - Processor) - функционалды құрылғы, интерпретатор командасы сияққты жұмыс жасайды;
2. Деректер процессоры (DP - Data Processor) - функционалды құрылғы, деректерді түрлендіріп арифметикалық операцияларға сәйкес жұмыс жасайды;
3. Жадтар иерархиясы (IM - Instruction Memory, Data Memory) - жадта сақату құрылғысы, яғни деректердің және командалардың орындалуын сақатйды, процессорлар арасында бір-бірімен алмасады.
4. ауыстырып қосқыш - абстакты құрылғы, процессорлармен және жадтардың арасындағы байланысты қамтамасыз етеді.
Скиллкорн күрделі параллельді есептеу жүйесін сипаттау үшін ауыстырып қосқыштың төрт түрін жазып көрсетті, яғни олар бір-бірімен байланысады:
1-1 - мұндай түрдегі ауыстырып қосқыштар функционалды құрылғыларды байланыстарды;
n-n - бұл түрдегі ауыстырып қосқыш көптеген сәйкес келетін құрылғыларды басқа құрылғылармен байланыстырып, жұптар арасындағы байланысты орнатады;
1- n - мұндай йтүрдегі ауыстырып қосқыш құрылғыда бөлінген барлық функционалды құрылғылар арасынан таңдау арқылы байланыстырады;
n*n - әрір функционалды құрылғылар бір көптеген құрылғылардың кез келгенімен байланысады.
Д.Скилликорнның классификациясының негізгі сегіз сипаттамадан тұрады:
- ІР командалар процессорының саны;
- ІМ командасының жадта сақтау құрылғысының саны;
- ІР және ІМ командаларының арасындағы ауыстырып қосқыш түрі;
- DP деректер процессорының саны;
- DМ деректері жадта сақату құрылғысының саны;
- DP және DМ командаларының арасындағы ауыстырып қосқыш түрі;
- DP және ІР командаларының арасындағы ауыстырып қосқыш түрі;
- DP және DP командаларының арасындағы ауыстырып қосқыш түрі.

1.3 Параллельді компьютерлердің типтері және жаңа таксономия
жасау тәсілдері

Параллелельді компьютер - бұл процессорлар жиынтығы, есептеуіш жүйелердің есептерін шешуде бірігіп жұмыс атқарады. Параллельді компьютерлердің сәулетіне қарай олар бір-бірінен ерекше болады. Параллельді компьютерлердің типтеріне қарай екі түрге бөліп қарастыруға болады:
1. Көппроцессорлық жүйенің жалпы жадпен (бөлінетін жадтар);
2. Мультипроцессормен хабарлама жіберу.
Параллельді компьютерлердің бірінші жалпы жадпен конфигурациясын қарастырайық. Бұл конфигурация көптеген процессорлардан тұрады, жад модульдерінің жиынтығымен байланысты.
Процессормен және жад арасындағы байланыс бірнеше желілер қатынасымен жүзеге асады. Жүйені қарастыра отырып, кеңістіктің жеке адресін қолданады. Параллельді компьютердің жалпы түрі жалпы жадтың конфигурациясы төменде бейнеленген (Сурет 1.9).

Желілерді байланыстырушы
Жадтардың модулі
Жалпы адрестік кеңістік
Команда
(процесосорға)
Деректер
(немесе процессордан)

Процессорлар
Сурет 1.9. Мультипроцессорлардің құрылымы жалпы жадпен

Әрбір көппроцессорлы жүйелерді жалпы жадпен бағдарламалауда орныдалатын бағдарламалар коды әрбір процессор үшін жадта сақталады, яғни қайтан орындалу үшін.
Егер желілерді байланыстырушы қосатын болсақ, жадтар шинасымен және матрицалық коммутатор өзімен көрсетілсе, яғни екіден бастап отызға дейінгі процессорларға ие болады, әрбір процессор бірдей уақытта кез келген жадтардың кеңістігіне қол жетімді болады, мұндай түрдегі мультипроцессорды біртекті (UMA - uniform memory access - жадқа біртекті қол жетімділік) немесе симметриялық мультипроцессор (SMP - Symmetric Multi - Processing) деп аталады.
Егерде мұны басқа жағынан алып қарайтын болсақ, онда үлкен мультипроцессорлар оннан бастап немесе жүз дейінгі процессорларға ие болады, желілерді байланыстырушының ауыстырып қосқышы және жадылар кеңістігі ағаш (бұтақ) тәрізді түрде болады, жад иерархиялық түрде ұйымдастырылған, бұл уақытта қол жетімділік бүтіндей тең болмайды. Мұндай мультипроцессорды жадқа біртекті емес қолжетімділік (NUMA - non uniform memory access machines) деп атаймыз.
Бұл екі машина түрінде жеке кэш жадқа ие. Егер екі процессор жадтың кез келген аймағына сілтеме берсе, олардың мазмұнын кэштің кез келгенін қауіпсіз сыйдыруға болады. Деректерді біртектіде оқыған кезде, кэшке әрбір процессордағы деректердің көшірмесін көшіру мүмкіндік бар. Кэште біртекті біреуін және деректер жазбасын оқығанда процессорлар арасында мәселелер туындауы мүмкін. Осындай мәселені шешу үшін - басылу әрбір процессордың адрестік шинасына, жадтар аймағындағыларға сілтеме беру.
Тағы да, жадтардың келсімдерінің арасында мәселелер туындауы мүмкін: алғашқы жадқа жарату кеңізілсе? Жадтардың келсімдеріне қарай бірнеше модельдер бар:
жүйелі келісім;
процессоралар келісімі;
босату келісімі.
Жүйелі келісімінде жадтарды жаңарту бірнеше жүйелерден тұрады,
яғни әрбір процессор көрініп тұрады.
Процессоралар келісімінде жадтарды әрбір процесс жазбалармен қамтамасыз етеді, бірақ процессордағы жазбалар әртүрлі болуы мүмкін.
Босату келісімі бойынша алғашқы жадтар бағдарламалаушының синхронизация нүктесінің бағытымен жаңартылады. Соңғы келісім моделі жадта жиі қолданылады.
Сол себепті, мультипроцессорлар жоғары өнімді кэш - жадтарын қолданады. Бірақ иерархиялық жадтар кэш және жадтар келісімдер арасында мәселелер туындайды, тағы да қате бөлімдер болуы мүмкін. Осыған сәйкес бағдарламалаушылар жадтар жүйесінің сипаттамасына қарай берілген машинаға және оларды қоса есептегенде бағдарлама жазу керек.
Мұндай түрлерге бірнеше бағдарламаларды қолдануға болады:
жаңа параллельді бағдарламалау тілдері (мысалы, Ада);
жүйеде енгізілген тілдері өзгерту (мысалы, Фортран, С++);
кітапханадағы ішкібағдарламаларды қолдану (мысалы, Java).
Мультипроцессормен хабарлама жіберу. Бұл компьютер жүйелері өзара байланысқан яғни желілер арықлы байланысқан компьютерлер тобынан тұрады. Әрбір компьютер процессордан және жергілікті желіден тұрады, яғни басқа компьютерлерге қол жетімділік жоқ. Жад компьютерлер арасында бөлінген. Процессорлар қамтамасыз ету үшін бір-бірімен хабарларды жіберу және қабылдау арқылы байланысады. Хабарламалар деректерге қосылуы мүмкін, яғни басқа процессорлар оны есептеу үшін керек етуі мүмкін. Сол себепті, бұл жүйеде кэшпен және жадтар арасындағы келісімдерде мәселелер туындауы мүмкін. Хабарлама жіберу мультикомпьютернің сызбасы төменде көрсетілген (Сурет 1.10).
Желілерді байланыстырушы
Компьютерлер
Хабарлама
Процессор
Жергілікті жад

Сурет 1.10. Мультикомпьютер жүйесінде хабарлама жіберу моделі

Процессорлар арасында хабарлама жіберу бағдарлама оқылып отырады. Бұл жүйенің негізгі идеясы - шешілетін есептерді бөліктерге бөлу, яғни берілгендерді бөлігін бір уақытта орындалуын, осылайша қойылған есепті толығымен шешуге болады.
Желілік жүйе, жұмыс істеу станцияларының топтарынан тұратындарды жұмыс істеу станциялар желісі (NOW - network of workstations) немесе жұмыс істеу станцияларының кластері (COW - cluster of workstations) деп аталады. Барлық жұмыс ітеу станциялары бір немесе бірнеше өзара байланысқан қосымшаларды орындайды. Таратылған жадтар мультипроцессорын құру үшін ең танымал әдіс бар - ол Beowulf машинасы деп аталады. Ол аппараттық қамтамасыз ету қорынан тұрады. Көптеген таратылған жадтар мультикомпьютерінің жалпы комбинаицямен таратылған-бөлінген жадтар машинасының қолдануынан турады.
Мұндай мультикомпьютерлер түрінің бағдарламасын бірнеше әрекеттермен жетуге болады:
арнайы параллельді бағдарламалар тілімен жобалау (мысалы, Occam - параллельді бағдарламалау тілі);
хабарламаларды жіберу үшін кеңейтілген жүйелі тілдерді қолдану (мысалы, С++, Фортран);
жүйелі тілдері жоғары деңгейде хабарламаларды жіберу процедураларын қолдану (мысалы, PVM, MPI).
Жаңа таксономия құру үшін төрт категория қарастырылады.
1. Процессорлардың әртүрлілігі;
2. Детелизация дәрежесі;
... жалғасы

Сіз бұл жұмысты біздің қосымшамыз арқылы толығымен тегін көре аласыз.
Ұқсас жұмыстар
Параллельді есептеуіште жалпы жадтар жүйесін ұйымдастыру
Параллельді программалау
Астрофизикалық құбылыстарды моделдеу үшін cuda қолдану
Ақпаратты шығару перифериялық құрылғылары
Мс және амс мәліметтері бойынша, ауа температурасына салыстыру
RFID технологиясының даму тарихы
Мәліметтер жинау
Жады қалай жұмыс жасайды? Жады элементтері
Туристік қызмет көрсету сапасының мәні
Экономика жағдайы
Пәндер