ПАРАЛЛЕЛЬНОЕ ПРОГРАММИРОВАНИЕ
46
p
1
p
2
p
3
p
4
p
5
p
6
p
7
p
1
p
2
p
3
p
4
p
5
p
6
p
7
p
8
p
9
p
10
p
11
p
12
p
13
p
14
p
8
p
9
p
10
p
11
p
12
p
13
p
14
Рис. 5.4. Блочная схема распределения матриц по процессорам
Ленточная схема
Для матрицы
A
используется горизонтальное разбиение, для матрицы
B
– вертикальное разбиение.
Возможные способы распределения данных (частей матриц) по процессорам.
Размер полосы (количество строк или столбцов)
p n
/
.
На процессор для вычислений передается по одной полосе матриц
A
и
B
; при
распределении данных каждая полоса матрицы
A
должна пересечься с каждой поло-
сой матрицы
B
– всего
p
вариантов.
Каждый процессор вычисляет блок результирующей матрицы
C
размером
p np n
/
/
×
. Здесь и далее
n
– размер матрицы;
p
– количество процессоров.
Блочная схема
Размер блоков -
p np n
/
/
×
.
На процессор для вычислений передается по одному блоку матриц
A
и
B
; при
распределении данных блоки матрицы
A
встречаются однократно.
В ходе вычислений блоки матриц передаются между процессорами
(всего
p
итераций); схема коммуникационного взаимодействия соответствует
топологии типа
двумерной прямоугольной решетки-тора.
Рассмотрим алгоритм Фокса, который использует блочную схему перемноже-
ния матриц. Пусть
p=k
2
,
n=mk
и процессоры образуют логическую прямоугольную
решетку размером
k
×
k
(обозначим через
p
ij
процессор, располагаемый на пересече-
нии
i
строки и
j
столбца решетки). Основные правила метода, известного как
алгоритм Фокса
, состоят в следующем:
каждый из процессоров решетки отвечает за вычисление одного блока
матрицы
C
;
в ходе вычислений на каждом из процессоров
pij
располагается четыре
матричных блока:
o
блок
C
ij
матрицы
C
, вычисляемый процессором;
1...,38,39,40,41,42,43,44,45,46,47 49,50,51,52,53,54,55,56,57,58,...180