| |
![]() |
Пусть перемножаемые матрицы и
имеют порядок
. Количество процессов
является квадратом, квадратный корень
которого кратен
. В этом случае
и
. В
алгоритме Фокса матрицы разделяются среди процессов в виде клеток
шахматной доски. При этом процессы рассматриваются как виртуальная
двухмерная
сетка, и каждому процессу назначена подматрица
каждого множителя. Реализуется отображение:
Оно определяет сетку процессов: процесс относится к строке и
столбцу, заданному
. Процесс с рангом
назначается на подматрицы:
и
Например, если ,
, и
, то A будет
разделена следующим образом (рис. 4).
Процесс 0:
![]() |
Процесс 1:
![]() |
Процесс 2:
![]() |
Процесс 3:
![]() |
Процесс 4:
![]() |
Процесс 5:
![]() |
Процесс 6:
![]() |
Процесс 7:
![]() |
Процесс 8:
![]() |
В алгоритме Фокса, подматрицы блоков, и
, где
, перемножаются и собираются в процессе
.
Алгоритм состоит в следующем:
Выбрать подматрицу A в каждой строке
для всех процессов.
В каждой строке для всех процессов разослать
сетку подматриц, выбранную в этой строке для
других процессов в этой строки.
В каждом процессе, перемножить полученную подматрицу
A на подматрицу B, находящуюся в процессе.
В каждом процессе, отослать подматрицу B процессу,
расположенному выше. (Для процессов первой строки
отослать подматрицу в последнюю строку.)
}
Закладки на сайте Проследить за страницей |
Created 1996-2025 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |