Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Зертхана ПВ.doc
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
495 Кб
Скачать
☆

Зертханалық жұмыс №1. Параллельді есептеулерді талдау және модельдеу. Жеке тізбектік сумманың сандық мәнін табу тапсырмасын шешу

Мақсаты: Параллельді есептеулерді талдау модельдерінде пайдалану. Тізбектің қосындысын шығаруда қолдануды үйрету

Көрсеткіштер бойынша ауысу әдісі – тізімді өңдеу параллелді алгоритмінің маңызды құралы. Бұл әдістің көмегімен O(log n) уақытында тізімде(тізім соңына дейінгі аралықта) тізім ұзындығы n баМақсаты:рлық элементтер үшін орналасуын табуға мүмкіндік береді.

Айталық, тізімнің әрбір элементі үшін өзінің процессоры жауап береді, сондықтан тізімнің барлық элементтерін паралелді өңдеуге болады.

Алгоритм әдісі:

1 for (үшін) әрбір I процессор

2 do if next[i] = NIL

3 then d[i] ←0

4 else d[i] ←1

5 while I объектісі болғанда , next[i] ≠ NIL болады

6 do for (үшін) әрбір i процессоры үшін

7 do if next[i] ≠ NIL

8 then d[i] ← d[i] + d[next[i]]

9 next[i] ← next[next[i]]

Бірінші қадамда соңғысынан басқа барлық объектілерде, көрсеткіштер NIL-ге тең емес, сондықтан 8 – 9 жолдар n -1 алғашқы процессорлері үшін орындалады. Келесі қадамда 8 – 9 жолдары n -2 алғашқы процессорлері үшін орындалады. Циклдың соңғы орындалуы кезінде тек қана алғашқы екі процессор жұмыс істейді. Көрсеткіштер бойынша ауысу композиция идеясы next[i] ← next[next[i]] амалы орындалатын 9 жолда жүзеге асырылған. Ескерте кететіні, бұл іс-әрекет тізімнің құрылымын бұзады, себебі көрсеткіш жолы өзгереді. Егер тізімді сақтау қажет болса, онда көрсеткіш жолының көшірмесін алуға әрі осы көшірмемен жұмыс жасауға болады.

Тапсырма: кез-келген тізім үшін көрсеткіш бойынша ауысу әдісін жүзеге асыр.

Негізгі әдебиет 1[9-14]

Қосымша әдебиет 11[24-28]

Бақылау сұрақтары

  1. PRAM-машинасының құрылғысын суреттеңіз.

  2. Жалпы жадыны қолданудың қандай жолдары бар?

  3. Көрсеткіштер бойынша ауысу композиция идеясы неден тұрады?

Жеке тізбектік сумманың сандық мәнін табу тапсырмасын шешу.

Салыстырмалы түрде жеке тізбектік сумманың сандық мәнін табудың қарапайым тапсырмасын қарастырамыз

Мұнда, n қосынды мәнінің саны.

Қосу тізбектік алгоритмі.

Бұл тапсырманы шешу үшін дәстүрлі алгоритм тізбектеп қосылған элементтердің сандық жиынынан тұрады

Берілген алгоритмнің есептеу сұлбасы келесі түрде болуы мүмкін: ,

Мұндағы, қосу амалдарының жиыны ( төбелері енгізу амалдарын көрсетеді, әрбір төбесіне, сәйкесінше жинақталушы суммасына мәні қосылып отырады ) ал амалдардың ақпараттық тәуелділігін анықтайтын көптеген доғалар жиыны.

Қосу алгоритмінің тізбектелген есептеу сұлбасы.

Қосудың каскадтық сұлбасы.

Есептеу процесін басқаша, амалдың ассоциативті қосылуының қолданылуына негізделген әдіспен құру кезінде ғана қосу алгоритмінің параллелденуі жүзеге асуы мүмкін. Есептеудің алынатын жаңа нұсқасы келесілерден тұрады:

  • Каскадтық сұлбаның алғашқы итерациясында барлық шығатын мәліметтер жұптарға бөлінеді де әрбір жұп үшін мәннің қосындысы есептелінеді,

  • Барлық шыққан жұп суммасы тағы да жұптарға бөлінеді және қайта жұптың мәндік қосындысы есептелінеді ж.т.б.

Берілген есептеу сұлбасы граф түрінде анықталуы мүмкін (айталық )

,

Қосу алгоритмінің каскадтық сұлбасы

Мұнда, граф төбесі (υ0l- енгізу амалдары, υ1l – алғашқы итерация амалдары ж.т.б.) ал R2 –графтың доғалар жиыны.

Параллелді орындау кезінде каскадтық сұлбаны қолдану керекті нәтижені бермейді; тиімді параллельдеуге қол жеткізу тапсырманы шешудің жаңа параллелді-бағытталған алгоритмдеріне жол ашады; Сөйтіп, қарастырылып отырған тапсырмаға жаман емес нәтижені алуды қамтамасыз ететін барлық жеке суммаларын табу алгоритмі келесілерден тұрады:

  • Есептемес бұрын қосылатын мәндердің векторлық көшірмесі жасалады;

  • әрбір қосынды итерациясында векторын оңға қарай жылжытумен қосымша вектор қалыптасады; алгоритм итерациясы векторларды қосу амалдарының параллелденуімен аяқталады.

Параллелді алгоритмнің барлық жеке суммасын есептеудің сұлбасы

Әрбір алгоритм итерациясында n скалярлық қосу амалдары параллелді түрде орындалып отырады.

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