Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Duisembiev-Parallel-esep.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
5.86 Mб
Скачать

§ 2.1.3 Шексіз параллелділік концепциясы

Қазіргі таңда есептеу жүйелеріндегі параллельділік, бірнеше он жылдықтар өтсе де өзінің ары қарай дамуын және өзектілігін жоғалта қойған жоқ. Компьютер архитектурасының және элементтік базаларының дамуында ауқымды прогресс жүріп жатқанымен, бүгінгі күнгі өте үлкен есептерді шешуге қажетті өнімділікті «қарапайым» компьютерлер бере алмауда.

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

Бұл дегеніміз алгоритм параллель жүйеде жұмыс істей алу үшін, ол операциялардың тізбекті ансамблі ретінде көрсете алынуы керек. Бір ансамблдің барлық операциялары бір-біріне тәуелсіз болуы және жүйедегі функционалдық құрылғылар көмегімен бір мезгілде орындала алатындай мүмкіндігі болуы керек. Алдыңғы параграфтағы сөздіктерді (терминология) қолдана отырып, бұл ойды басқаша түрде айтуға болады: алгоритм, ярустар ені орта есеппен жүйенің функционалды құрылғылар санымен өлшенетін параллельдік формаға ие болуы керек. Жалпы жағдайда, ені тәуелсіз құрылғылар санына тең ярустар саны көп болған сайын, осы алгоритмде параллель есептеу жүйесінің өнімділігі соғұрлым жоғары болады.

Параллель есептеу жүйелерін құру, параллель алгоритмдерді тұрғызудың математикалық концепцияларын құрастыруды талап етті, яғни осы сияқты жүйелерде іске асырылуға бейімделген алгоритмдерді. Бұл концепциялар өткен ғасырдың 50-ші жылдарының аяғы және 60-шы жылдарының басында дами бастады. Ол уақытта параллель есептеу жүйелерінің құрылымы және оның даму жолдары, бағыттары бойынша мәліметтер аз болатын (тек осындай жүйелерде көптеген құрылғылар бір мезгілде жұмыс істей алады дегені болмаса). Осыған орай элементтік базаның қарқындап дамуы, жақын арада бұл құрылғылардың саны тез өсетінінен хабардар етті. Бұл концепция - «шексіз параллельділік концепциялары» деген атқа ие болды. Бұның негізінде айқын немесе айқын емес болжам жатыр десе болады, яғни алгоритм ешқандай шектеу қоймайтын параллель есептеу жүйесінде іске асырылады. Мұнда барлығы әмбебап синхронды режимде жұмыс істейтін және ортақ жадылы көптеген процессорлар болуы мүмкін және ақпаратты кезкелген түрде жіберу еш кедергісіз және дер кезінде орындалады деп есептелді. Алдыңғы параграфтағы терминдермен айтатын болсақ, бұл дегеніміз шексіз параллелділік концепциясының негізгі мақсаты - биіктігі минимальды болатын алгоритмдерді тұрғызу. Себебі, осындай есептеу моделінде алгоритмдердің іске асырылу уақытын биіктік анықтайды.

Шексіз параллельділік концепциясы параллель есептеу облысындағы сол уақыттағы математикалық білімдер деңгейін көрсетеді. Оның өзіне тиісті кемшіліктері де артықшылықтары да бар. Ал енді осының негізінде алынған кейбір нәтижелерді қарастырайық.

Бір есепті шешу үшін әртүрлі параллель күрделілігі болатын алгоритмдерді қолдануға болады. Олардың ішінде биіктігі ең кіші алгоритмдер де болуы мүмкін. Биіктігі төмен алгоритмдерді құрастыруда үлкен роль атқаратын идея көрініп тұратын а1, а2, ..., an, сандарының көбейтіндісін есептеу мысалын қарастырып көрейік.

n = 8 болсын. Тізбекті көбейту процесін іске асыратын дәстүрлі схема келесі түрде болады:

Деректер а1 а2 а3 а4 a5 а6 а7 a8

1-ші ярус а1 а2

2-ші ярус (a1 a2)a3

3-ші ярус (а1 а2 а3) а4

4-ші ярус (а1 а2 а3 а4) a5

5-ші ярус 1 а2 а3 а4 а5) а6

6-ші ярус (а1 а2 а3 а4 a5 а6) а7

7-ші ярус (а1 а2 а3 а4 a5 а6 а7) a8

Параллель форманың биіктігі 7-ге тең, ені 1-ге тең. Егер есептеу жүйесі бірнеше процессордан тұратын болса, онда берілген есептеу схемасы бойынша бір процессордан басқасының бәрі барлық қадамда тоқтап тұрады. Сандарды көбейтуді есептеудің басқа алгоритмінің келесі параллель формасы процессорларды тиімдірек пайдаланады:

Деректер а1 а2 а3 а4 a5 а6 а7 a8

1-ші ярус а1а2 а3а4 a5а6 а7a8

2-ші ярус (a1a2)(a3а4) (a5а6)(а7a8)

3-ші ярус (a1a2a3а4) (a5а6а7a8)

Параллель форманың биіктігі 3-ке, ені 4-ке тең. Биіктіктің айтарлықтай төмендетілуі, процессорлардың пайдалы жұмыс атқаруға біршама толық жүктелуінің әсерінен болды.

Соңғы схема п – нің кез-келген мәні үшін жалғасын табады. Оны іске асыру үшін әрбір яруста, алдыңғы ярустан алынған қиылыспайтын сандар жұптары көбейтінділерінің максималды мүмкін санын алу қажет. Жалпы жағдайда параллель форманың биіктігі [log2n] тең. Бұл параллельдік форма п/2 процессорларда іске асырылады, бірақ бұнда процессорлардың жүктелінуі ярустан ярусқа көшкен сайын азаяды. Жасалған схема бойынша әрбір яруста сандарды тұрғызу процесі екіеселену процесі деп аталады. Бұл екіеселену процесінің көмегімен, сандарды көбейту операциясын көпқайтара қолдану үшін ғана емес, сонымен қатар кез келген ассоциативті операцияларды орындау үшін де (мысалы, сандарды қосу, матрицаларды көбейту және т.б.) логарифмдік биіктігімен алгоритмдерді құрастыруға болады. Назар аударатын болсақ, операцияларды тізбектей қолдану алгоритмі және екіеселену алгоритмі - бұлар негізінде әртүрлі алгоритмдер болып табылады. Бірақ әртүрлі алгоритм болғанымен өздерінің іске асуы үшін бірдей операция санының орындалуын талап етеді. Оларға тек қана әртүрлі процессорлар саны емес, сонымен қатар әртүрлі коммуникациялық желі де қажет. Сонымен қатар бұл алгоритмдерге дөңгелектеу қателіктерінің әсері әр түрлі беріледі және бұл алгоритмдерге бағдарламалар әртүрде жазылады. Жалпы жағдайда, оларда алгоритм графынан бастап бәрі әртүрлі болып келеді. 36-суретте n=8 болғандағы екі граф келтірілген, жоғарғысы операцияны тізбектей қолдану графы, төменгісі екіеселену қағидасы үшін граф. Бастапқа түйіндер деректердің кірісін көрсетеді.

36 сурет. Тізбектелген және екіеселенген графтар.

Қарастырылған мысал әдістемелік жағынан өте маңызды бір қорытынды шығаруға мүмкіндік береді.

Бекітілім 1.2.3

Берілген функция n айнымалыға тәуелді болсын және аргументтер саны р-дан аспайтын операциялардың шектеулі санының суперпозициясы ретінде берілсін. Оның мәндері осы операцияларды пайдаланатын қандай да бір алгоритмнің көмегімен есептелінеді делік. Егер деректердің енгізілуі ескерілмесе және алгоритмнің биіктігі s – ке тең болса, онда s ≥ logpn.

Енді алгоритм графының канондық параллельдік формасын қарастырайық. Нөлдік яруста, кіріс айнымалыларының енгізу мәндеріне сәйкес келетін шыңдар (төбелер) орналассын. Соңғы s-ші яруста бір ғана шың орналасады. Сонымен әрбір шыңдағы кіретін доғалар саны р-дан аспайтындықтан, (s – 1)-ші ярустағы шыңдар саны р-дан аспайды, (s – 2)-ші ярустағы шыңдар саны р2-ден аспайды және тағы с.с. Нөлінші ярустағы шыңдар саны рs –тен аспайды. рs ≥ n болатыны түсінікті, сондықтан s ≥ logpn.

Сонымен, егер қандай да бір есеп n кіріс деректерімен анықталса, онда жалпы жағдайда біз биіктігі log n аспайтын оның шешімінің алгоритмі бар болатынына сенім артпауымыз керек. Егер алынған алгоритм биіктігінің реті logαn , α > 0 болса, онда бұндай алгоритмді біз параллельдік есептеу жүйесінде іске асырылу уақытысы жағынан тиімді деп санауымызға болады. Егер, әрине оның іске асырылуының барлық басқа да аспектілерін есепке алмасақ.

Вектор у, квадраттық матрица А және реті n болатын х векторының көбейтіндісі ретінде есептеледі делік. Егер уi, aij, xj сәйкес векторлар және матрицаның элеметтері болса, онда кез-келген i үшін

Айталық, берілген есептеу жүйесінде n2 процессор бар болсын. Онда бірінші қадамда aij xj – дің барлық n2 көбейтіндісін параллель есептеуге, ал одан соң, қосуға арналған екіеселену схемасын пайдаланып, [log2n] қадамда у векторының координаталарын анықтайтын барлық n қосындыны параллель есептеуге болады. Олай болса, квадраттық матрица және реті n болатын вектордың көбейтіндісін есептейтін алгоритм (биіктігінің реті log2n) тұрғыза аламыз. Сонымен қатар, алгоритмнің ені n2 тең. Процессорлар біркелкі қолданылмайды. Тек бірінші қадамда ғана барлық процессорлар іске араласады. Одан кейін, жұмыс істейтін процессорлардың саны әрбір қадам сайын екі есе азаяды. 1.2.3 бекітіліміне сәйкес, биіктігі кіші болатын алгоритмді тұрғызуға болмайды. Бірақ, логарифмдік биіктікте ені кішірек болатын алгоритмдер кездеседі.

Реті n болатын екі матрицаны көбейту есебін, бір матрицаның және реті n болатын n тәуелсіз векторлардың n көбейтіндісін есептеу есебі деп қарастыруға болады. Мұндағы векторлар ретінде екінші матрицаның бағандары алынады. Егер барлық осы көбейтулерді мазмұндалған алгоритм бойынша параллель есептейтін болса, онда алынған алгоритмнің биіктігі log2n және ені n3 тең болады. Тағы да процессорлар біркелкі пайдаланылмайды және тағы да биіктіктігі кіші болатын алгоритмді құрастыруға болмайды, бірақ мұнда да логарифмдік биіктікте ені кішірек болатын алгоритмдер кездеседі.

Ал енді келесі жағдайларға назар аударайық. Егер келтірілген алгоритмдерді канондық параллель форма ярустары арқылы іске асыруға талпынып көрсек, онда бірдей мәліметтерді көптеген процессорларға бір уақытта жіберу қажеттілігі туындайды. Бұндай операцияны өте жылдам орындауға болмайды. Сондықтан да нақты жағдайларда мәліметтерді жіберуге кеткен уақыт есептеу процесін айтарлықтай тежейді.

Биіктігі ең кіші болатын параллель алгоритмдерді құрастыру, матрица-векторлық қосу және көбейтуде ешқандай қиындық тудырған жоқ десе болады. Демек, бұндай алгоритмдерді басқа да матрица-векторлық есептер үшін оңай құрастыруға болады деген ой тууы мүмкін. Бұндай ой әрине дұрыс емес. Қарастырылған алгоритмдер дербес идеалды жағдайларда ғана іске асуы мүмкін.

Берілген x0, x-1, , x-r+1 векторларын пайдалана отырып, келесі түрдегі сызықтық рекурренттік қатынастар:

(2.1)

көмегімен хi 1 ≤ i ≤ s векторларын есептеу процесін қарастырайық [31]. Мұндағы Аij, bi – реті n болатын берілген матрица және вектор, олар n = 1 болғанда санға айналады. Біз мүмкіндігінше бекітілген (фиксированный) s кезіндегі биіктігі неғұрлым ең кіші болатын х1, хs векторларын есептеудің параллель алгоритмін тұрғызуымыз керек болды делік. Бұл жағдайда n2r процессорларды қолдана отырып, (2.1) қатынасының оң жағын шамамен log2nr қадамда есептеп шығуға болады. Бұл биіктігінің реті шамамен slog2nr болатын параллель алгоритмді береді. Бірақ-та биіктігі s-ке айтарлықтай әлсіз тәуелді болатын алгоритмді қалай тұрғызу керек екені және ондай алгоритмдердің бар болуы мүмкін екені туралы айқындылық жоқ.

Рекурренттік қатынасты (2.1) - матрица және реті үлкен векторлар арқылы біршама басқаша жазуға болады:

Матрицаны Qi, ал сол жағындағы векторды уi арқылы белгілейік. Онда

Матрица мен векторлардың реті nr + 1. Екіеселену алгоритміне сәйкес, макрооперациялары ретінде реті nr + 1 болатын екі матрицаны көбейтуді орындайтын ns+1 макропроцессорды пайдаланып, барлық көбейтулерін [log2(s+1)] макроқадамда есептеуге болады. Екі матрицаның көбейтіндісін табу үшін тұрғызылған параллель алгоритмді ескере отырып, биіктігі log2 × log2nr және ені (nr)3s болатын барлық x1, x2, …, xs векторларын есептеу үшін енді параллель алгоритмді жеңіл тұрғызуға болады. Бұл алгоритм процестің рекурренттік екіеселену атына ие болды.

Суреттелген процестің, (2.1) теңдігіндегі хi векторларын тікелей есептеуге негізделген алгоритмнен принципиалды айырмашылықтары бар. Екі алгоритм дәл есептеулер жағдайында ғана бірдей нәтижелер береді. (2.1) сияқты рекурренттік қатынастарды қолдана отырып сызықтық алгебраның, математикалық физика және анализдің және т.б. көптеген сандық әдістері тұрғызылған. Рекуренттік екі еселену процесі егер де біз процессорлардың үлкен санын қолдана отырып, биіктігі кіші алгоритмдерді құрастыру жағынан қарайтын болсақ бұл әдістерден не күтетінімізді түсінуге жол көрсетеді. Мысалы реті n нөлдік емес үшбұрышты матрицалы сызықтық алгебралық теңдеулер жүйесі шешілуде делік. Бір параллель қадамда, шамамен n2/2 процессорларды пайдалана отырып, матрицаның барлық диагональ элементтерін 1-ге тең етуге болады. Ол үшін оларға сәйкес теңдеулердің коэффициенттерін бөлеміз. Кері қою әдісі көмегімен жүйені шеше отырып, біз бірден белгісіздер үшін (2.1) түріндегі рекурентті қатынастарды аламыз. Бұл теңдеулерде барлық матрицалар мен векторларды сандар көрсетеді, x0 = 0, r = i, s= n. Демек, рекурренттік екіеселену процесін қолдану арқылы, үшбұрышты жүйені 0(log22n) параллель қадамда, 0(n3) процессорларды іске қоса отырып шешуге болады.

Енді, реті n квадраттық матрица А үшін кері матрицаны А-1 есептеу тапсырмасын қарастырайық. Жылдам параллель алгоритмді құрастыру негізін келесі идея құрайды. А матрицасының характеристикалық көпмүшелігін былай белгілейік: . Кели-Гамильтонның теоремасына сәйкес f(А) = 0 болатыны белгілі. Сондықтан

(2.2)

Егер λi - характеристикалық теңдеудің түбірлері және sk - Аk матрицаcының іздері (след матрицы) болса, онда λi және sk Ньютон қатынастарын деп аталатын байланыста болады.

(2.3)

А матрицасының кері А-1 матрицасын анықтаудың параллель алгоритмі келесі этаптардан тұрады. Алдымен екіеселену схемасы бойынша А матрицасының біріншісінен бастап (n - 1)-ге дейінгі барлық дәрежелері табылады. Бұл этап log2n макроқадамдардан тұрады және мұндағы әрбір макроқадам реті n екі матрицаның саны n/2 аспайтын көбейтулерін есептеу.

Барлық бірінші этап 0(n4) процессорларда 0(log22n) параллель қадамда орындала алув мұмкін. Ал екінші этапта Ак матрицаларының барлық sк іздері 0(log2n) қадамда 0(n2) процессорларын пайдалана отырып есептеледі. Ал үшінші этапта 0(log22n) қадамда 0(n3) процессорларын пайдалана отырып (2.3) үшбұрышты жүйені шешу арқылы характеристикалық теңдеудің ск коэффициенттері табылады. Ал төртінші этапта (2.2) формуласына сәйкес 0(log2n) параллель қадамда 0(n3) процессорларын пайдалана отырып А-1 матрицасы табылады. Тұтас алғанда А-1 матрицасын есептеудің параллель алгоритмінің биіктігі 0(log22n) және ені 0(n4). Дәл қазіргі уақытта осы есепті шешу үшін биіктіктері бұдан әлдеқайда кіші болатын алгоритмдер анықталмаған. Ал алгоритмнің ені азайтылуы мүмкін.

Егер реті n - ге тең квадрат А матрицалы Ах = в сызықты алгебралық теңдеулер жүйесі шешілетін болса, онда параллель алгоритм өте оңай құрылады. Жүйе шешімін х = А-1в түрінде елестетіп көрейік. Алдымен, 0(log22n) параллель қадамда 0(n4) процессорларын қолданып А-1 матрицасын табамыз. Одан соң 0(log2n) параллель қадамда 0(n2) процессорларын қолданып А-1 матрицасы мен в векторының көбейтіндісін х = А-1в, яғни шешімін табамыз.

Шексіз параллельділік концепциясы шеңберінде көптеген биіктігі кіші алгоритмдер құрастырылды. Олардың кейбіреулерін [31] жұмыста және сол тақырыптарға берілген әдебиеттерден кездестіруге болады. Сондықтан да біз оларды талдамай – ақ қоямыз. Мұның себебі: практика жүзінде бұл алгоритмдердің басым көпшілігі толық қолданыс таппаған. Оларға тән ортақ кемшіліктердің біразын айта кетсек: процессорлар сандарын көп қажет ету, операциялар арасындағы күрделі ақпараттық байланыс, сандық есептеудегі орнықсыздықтар, жадыдағы келіспеушіліктер санының көп болуы және т.б. Шексіз параллельділік концепциясының толық талдауын [10] кітаптан табуға болады. Айтылған кемшіліктерге қарамастан, кітапта біз осы концепция туралы қысқаша қарастырып кеттік.

Сұрақтар мен тапсырмалар

  1. Келесі есептер үшін биіктігі кіші параллель алгоритмдер тұрғызыңыздар:

    1. Қандай да бір нүктедегіі көпмүшеліктің мәнін есептеу.

    2. Үшбұрышты матрицалы сызықты алгебралық теңдеулер жүйесінің шешімі.

    3. Екідиагоналды матрицалы сызықты алгебралық теңдеулер жүйесінің шешімі.

    4. Үшдиагоналды матрицалы сызықты алгебралық теңдеулер жүйесінің шешімі.

    5. Квадрат матрицалы сызықты алгебралық теңдеулер жүйесінің шешімі.

    6. Кері матрицаны табу есебі.

    7. Матрицаны матрицаға көбейту есебі.

    8. Матрицаны векторға көбейту есебі.

  2. Шексіз параллельділік концепциясын қалай түсінесіз?

  3. Параллель алгоритмдер туралы не айтасыз?

  4. Биіктігі минимальды болатын алгоритмдерді қалай түсінесіз?

  5. Тізбект көбейту процесін іске асыратын дәстүрлі схема.

  6. Бірнеше сандарды көбейту процесінің қандай да бір параллель схемасы.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]