Page 51 - 6601
P. 51

c[i] += a[i][j]*b[j];
                                                 }
                                   }
                                    При  виконанні  паралельних  алгоритмів  множення  матриці
                            на  вектор,  окрім  матриці  А  необхідно  розділити  ще  вектор  B  і
                            вектор  результату  С.  Елементи  векторів  можна  продублювати,
                            тобто  скопіювати  всі  елементи  вектора  на  всі  процесори,  які
                            утворюють     багатопроцесорну   обчислювальну     систему,   або
                            розділити  між  процесорами.  Розділювати  матрицю  А  можна  по
                            рядках або по стовбцях.
                                    Для прикладу розглянемо паралельний алгоритм множення
                            матриці  на  вектор  з  розділенням  по  рядках.  При  такому  способі
                            розділення даних базовою підзадачею може бути вибрана операція
                            скалярного множення одного рядка матриці на вектор.
                                    Для  виконання  базової  підзадачі  скалярного  добутку
                            процесор  повинен  містити  відповідний  рядок  матриці  А  і  копію
                            вектора  В.  Після  завершення  обчислень  кожна  базова  підзадача
                            визначає один з елементів вектора результату С.
                                    Для об'єднання результатів розрахунку і отримання повного
                            вектора  С  на  кожному  з  процесорів  обчислювальної  системи
                            необхідно  виконати  операцію  узагальненого  збору  даних,  в  якій
                            кожен процесор передає свій обчислений елемент вектора С решті
                            всіх  процесорів.  Цей  крок  можна  виконати,  наприклад,  з
                            використанням  функції  MPI_Allgather  з  бібліотеки  MPI.  У
                            загальному  вигляді  схема  інформаційної  взаємодії  підзадач  в  ході
                            виконуваних обчислень показана на рис. 6.1.



















                                                           49
   46   47   48   49   50   51   52   53   54   55   56