121
одан соң, қосуға арналған екіеселену схемасын пайдаланып, [log
2
n] қадамда
у
векторының координаталарын анықтайтын барлық
n қосындыны параллель
есептеуге болады. Олай болса, квадраттық матрица және реті
n болатын
вектордың кӛбейтіндісін есептейтін алгоритм (биіктігінің реті log
2
n) тұрғыза
аламыз. Сонымен қатар, алгоритмнің ені
n
2
тең.
Процессорлар біркелкі
қолданылмайды. Тек бірінші қадамда ғана барлық процессорлар іске
араласады. Одан кейін, жұмыс істейтін процессорлардың саны әрбір қадам
сайын екі есе азаяды. 1.2.3 бекітіліміне сәйкес, биіктігі кіші болатын
алгоритмді тұрғызуға болмайды. Бірақ, логарифмдік
биіктікте ені кішірек
болатын алгоритмдер кездеседі.
Реті
n болатын екі матрицаны кӛбейту есебін, бір матрицаның және
реті
n болатын
n тәуелсіз векторлардың
n кӛбейтіндісін есептеу есебі деп
қарастыруға болады. Мұндағы векторлар ретінде екінші матрицаның
бағандары алынады. Егер барлық осы кӛбейтулерді
мазмұндалған алгоритм
бойынша параллель есептейтін болса, онда алынған алгоритмнің биіктігі
log
2
n және ені
n
3
тең болады. Тағы да процессорлар біркелкі
пайдаланылмайды және тағы да биіктіктігі кіші болатын алгоритмді
құрастыруға
болмайды, бірақ мұнда да логарифмдік биіктікте ені кішірек
болатын алгоритмдер кездеседі.
Ал енді келесі жағдайларға назар аударайық. Егер келтірілген
алгоритмдерді канондық параллель форма ярустары арқылы іске асыруға
талпынып кӛрсек, онда бірдей мәліметтерді кӛптеген процессорларға бір
уақытта жіберу қажеттілігі туындайды. Бұндай операцияны ӛте жылдам
орындауға болмайды. Сондықтан да нақты
жағдайларда мәліметтерді
жіберуге кеткен уақыт есептеу процесін айтарлықтай тежейді.
Биіктігі ең кіші болатын параллель алгоритмдерді құрастыру, матрица-
векторлық қосу және кӛбейтуде ешқандай қиындық тудырған жоқ десе
болады. Демек, бұндай алгоритмдерді басқа да матрица-векторлық есептер
үшін оңай құрастыруға болады деген ой тууы мүмкін. Бұндай ой әрине дұрыс
емес. Қарастырылған алгоритмдер дербес идеалды жағдайларда ғана іске
асуы мүмкін.
Берілген
x
Достарыңызбен бөлісу: