Әбілқас Сағынов атындағы
Қарағанды техникалық университеті
Ақпараттық-есептеу
жүйелері кафедрасы
Зертханалық жұмыс №2 Пәні: Параллельді және жоғары өнімді есептеу
Тақырыбы: Матрица-векторды көбейтудің параллель әдістері
Жетекшісі: Мухаметжанова Б. О
Студент: Манат Азамат
ВТиПОМ 23-1
2023 жыл
Зертханалық жұмыс № 2
Тақырыбы: Матрица-векторды көбейтудің параллель әдістері
Жұмыстың мақсаты: Параллель матрица-векторды көбейтудің екі әдісінің уақытын есептеу.
Қысқаша теориялық ақпарат.
Көптеген матрицалық есептеу әдістеріне тән белгі болып табылады әртүрлі элементтер үшін бірдей есептеу әрекеттерін қайталау матрицалар Бұл нүкте параллелизмнің бар екенін көрсетеді матрицалық есептеулерді орындау кезінде деректер және нәтижесінде.
Матрицалық операцияларды параллельдеу көп жағдайда төмендейді өңделген матрицаларды ағындар арасында бөлу. Әдіс таңдау матрицалық бөлу нақты әдісті анықтауға әкеледі, параллельді есептеулер; әртүрлі тарату схемаларының болуы деректер бірқатар параллельді матрицалық алгоритмдерді жасайды есептеулер.
Ең көп таралған және кеңінен қолданылатын бөлу әдістері матрицалар деректерді жолақтарға бөлуден тұрады (тігінен немесе көлденең) немесе тікбұрышты фрагменттерге (блоктарға).
1. Матрицаның жолақты бөлімі. Таспамен (блоктан тазартылған) бөлу, әрбір ағынға жолдардың бір немесе басқа ішкі жиыны бөлінеді (жол бойынша немесе көлденең бөлу) немесе бағандар (баған бойынша немесе матрицаның тік бөлімі). Жолдар мен бағандарды бөлу жолақтар көп жағдайда үздіксіз жүреді (тізбекті) негіз. Тік бөлу деректер бағандар бойынша). Мұндай тәсілді жүзеге асыру үшін, көбейту алгоритмінің ішкі циклін параллельдеу қажет бір векторға арналған матрицалар. Осы тәсілдің нәтижесінде параллель аймақтар әрбір жеке элементті есептеу үшін жасалады алынған вектор. Бағдарлама нысанда көрсетіледі тізбекті (бір ағынды) және параллельдер жиынтығы (көп ағынды) бөлімдер. Ұқсас ұйымдастыру принципі параллелизм «forkjoin» немесе деп аталады пульсирленген параллелизм. Көп ағынды орындаған кезде бөлімінде әрбір жіп оның бір элементін көбейтуді орындайды вектордың бір элементі бойынша бастапқы матрицаның бағаны. Келесі кейін мұнымен бір ағынды секция алынғанның қосындысын орындайды нәтиженің элементін есептеу үшін нәтижелер векторы. Осылайша, бағдарлама ауыспалы n тұрады көп ағынды және n бір ағынды секциялар.
2. Блок әдісі – мәліметтерді бөлудің басқа тәсіліне негізделген матрицаны тікбұрышты фрагменттерге (блоктарға) бөлу. Сағат негізгі ішкі тапсырмалардың матрицасының блоктық көрінісін пайдалану бойынша жүргізілген есептеулер негізінде анықтаған жөн матрицалық блоктар. Нөмірлеу үшін ішкі тапсырмаларды пайдалануға болады ішкі тапсырмаларда орналасқан А матрицасының блоктарының индекстері, яғни. қосалқы тапсырма (i,j) Aij блогында есептеулерді орындайды. Матрицалық блокқа қосымша А әрбір ішкі тапсырманың в векторлық блогына кіру мүмкіндігі болуы керек b. Оның үстіне, үшін бір қосалқы тапсырманың блоктары, белгілі сәйкестік ережелері – Aij матрицасының блогын көбейту операциясы мүмкін b'(i,j) векторының блогы келесі пішінге ие болса ғана орындалады: