31
столбцов. Как правило, для чередования используется число процессоров
p – в этом случае при горизонтальном разбиении матрица принимает
вид
В результате умножения матрицы
A
размерности
n
m
и вектора
b
,
состоящего из
n
элементов, получается вектор
c
размера
m
, каждый
i
-й
элемент которого есть результат
скалярного умножения
i
-й
строки
матрицы
A
(обозначим эту строчку ) и вектора :
.
Тем самым получение результирующего вектора
c
предполагает
повторение
m
однотипных операций по умножению строк матрицы
A
и
вектора
b
.
Последовательный алгоритм умножения матрицы на вектор может
быть представлен следующим образом.
for (i = 0; i < m; i++){
c[i] = 0;
for (j = 0; j < n; j++){
c[i] += A[i][j]*b[j]
}}
Рассмотрим алгоритм умножения матрицы на вектор, основанный на
представлении матрицы непрерывными наборами (горизонтальными
полосами) строк. При таком способе разделения данных в качестве
базовой подзадачи может быть выбрана операция скалярного умножения
одной строки матрицы на вектор.
Для выполнения базовой подзадачи скалярного произведения
процессор должен содержать соответствующую строку матрицы
A
и
копию вектора
b
. После завершения вычислений каждая базовая
подзадача определяет один из элементов вектора результата
c
.
Для объединения результатов расчета и получения полного вектора c
на каждом из процессоров вычислительной
системы необходимо
выполнить операцию обобщенного сбора данных, в которой каждый
процессор передает свой вычисленный элемент вектора
c
всем остальным
процессорам.
В общем виде схема информационного взаимодействия подзадач в
ходе выполняемых вычислений показана на рисунке 2.6.
32
Рис. 2.6. Схема взаимодействия подзадач
В
процессе
умножения
матрицы
на
вектор
количество
вычислительных операций для получения скалярного произведения
одинаково для всех базовых подзадач.
Поэтому в случае, когда число
процессоров
p
меньше числа базовых подзадач
m
, мы можем объединить
базовые подзадачи таким образом, чтобы каждый процессор выполнял
несколько
таких
задач,
соответствующих
непрерывной
последовательности строк матрицы
A
. В
этом случае по окончании
вычислений каждая базовая подзадача определяет набор элементов
результирующего вектора
c
[5,10].
Достарыңызбен бөлісу: