Высокопроизводительные вычисления на кластерах. Беликов Д.А - 181 стр.

UptoLike

181
водности с помощью неявных разностных схем. Чтобы яснее пред-
ставить себе процесс распараллеливания и связанные с ним измене-
ния в алгоритме, разберем отдельно каждую матрично-векторную
операцию, которая используется в изложенном выше методе.
Рис. 9.4 Строчное распределение
Первая операция это матрично-векторное произведение
y Ax
. Известно, что в общем случае при умножении матрицы на
вектор возможны два способа распределения данных. В первом слу-
чае каждому процессорному элементу назначается определенное
количество строк матрицы
A
и целиком вектор
x
(рис. 9.4). Каж-
дый процессорный элемент реализует умножение распределенных
ему строк матрицы
A
на вектор
x
(число вычислительных узлов
меньше или равно числу строк). Получаем абсолютно не связанные
подзадачи, однако предложенный алгоритм не лишен и недостат-
ков. Дело в том, что компоненты результирующего вектора
y
ока-
зываются разбросанными по всем процессорным элементам и для
старта следующей итерации необходимо собрать вектор
y
на каж-
дом процессорном элементе.
Другой вариант каждому процессорному элементу распределя-
ется определенное количество столбцов матрицы
A
, тогда отпадает
необходимость хранить на каждом процессоре целиком вектор
x
, и
он распределяется по всем вычислительным узлам (схема распреде-
ления данных представлена на рис. 9.5). Тогда в процессе вычисле-
ний результирующий вектор
y
оказывается разобранным на сла-
гаемые, а каждое слагаемое находится на отдельном процессорном
элементе. То есть опять потребуются пересылки данных для того,