Параллельный алгоритм 2: метод Фокса

advertisement
Нижегородский государственный университет
им. Н.И.Лобачевского
Факультет Вычислительной математики и кибернетики
Образовательный комплекс
Введение в методы параллельного
программирования
Лекция 10.
Параллельные методы матричного
умножения
Гергель В.П., профессор, д.т.н.
Кафедра математического
обеспечения ЭВМ
Содержание
Постановка задачи
 Последовательный алгоритм
 Алгоритм 1 – ленточная схема
 Алгоритм 2 – метод Фокса
 Алгоритм 3 – метод Кэннона
 Заключение

Н.Новгород, 2005 г.
Основы параллельных вычислений: Матричное умножение
© Гергель В.П.
2 из 47
Постановка задачи
Умножение матриц:
C  A B
или
 c0, 0 ,
c0,1 , ..., c0,l 1   a0, 0 ,
a0,1 , ..., a0,n 1   b0, 0 , b0,1 , ..., a0,l 1 

 


...
...
...




c
 a
  b , b , ..., b

,
c
,
...,
c
,
a
,
...,
a
m

1
,
0
m

1
,
1
m

1
,
l

1
m

1
,
0
m

1
,
1
m

1
,
n

1
n

1
,
0
n

1
,
1
n

1
,
l

1

 


 Задача умножения матрицы на вектор может быть
сведена к выполнению m·n независимых операций
умножения строк матрицы A на столбцы матрицы B
cij  ai , bTj    aik  bkj , 0  i  m, 0  j  l
n 1
k 0
В основу организации параллельных вычислений может
быть положен принцип распараллеливания по данным
Н.Новгород, 2005 г.
Основы параллельных вычислений: Матричное умножение
© Гергель В.П.
3 из 47
Последовательный алгоритм…
// Алгоритм 8.1
// Последовательный алгоритм матричного умножения
double MatrixA[Size][Size];
double MatrixB[Size][Size];
double MatrixC[Size][Size];
int i,j,k;
...
for (i=0; i<Size; i++){
for (j=0; j<Size; j++){
MatrixC[i][j] = 0;
for (k=0; k<Size; k++){
MatrixC[i][j] = MatrixC[i][j] + MatrixA[i][k]*MatrixB[k][j];
}
}
}
Н.Новгород, 2005 г.
Основы параллельных вычислений: Матричное умножение
© Гергель В.П.
4 из 47
Последовательный алгоритм


Алгоритм осущесвляет последовательное вычисление
строк матрицы С
На одной итерации цикла по переменной i используется
первая строка матрицы A и все столбцы матрицы B
A
X


C
B
=
Для выполнения матрично-векторного умножения
необходимо выполнить m·n операций вычисления
скалярного произведения
Трудоемкость вычислений имеет порядок O(mnl).
Н.Новгород, 2005 г.
Основы параллельных вычислений: Матричное умножение
© Гергель В.П.
5 из 47
Параллельный алгоритм 1: ленточная схема…

Возможный подход – в качестве базовой
подзадачи процедура вычисления одного из
элементов матрицы С



cij  ai , bTj , ai  ai 0, ai1 ,...,ain1 , bTj  b0 j , b1 j ,...,bn1 j
T
Достигнутый уровень параллелизма - количество
базовых подзадач равно n2 – является
избыточным!
 Как правило p<n2 и необходимым является
масштабирование параллельных вычислений

Н.Новгород, 2005 г.
Основы параллельных вычислений: Матричное умножение
© Гергель В.П.
6 из 47
Параллельный алгоритм 1: ленточная схема…

Базовая подзадача (агрегация) - процедура
вычисления всех элементов одной из строк
матрицы С (количество подзадач равно n)

Распределение данных – ленточная схема
(разбиение матрицы A по строкам и матрицы B
по столбцам) A
B
Н.Новгород, 2005 г.
Основы параллельных вычислений: Матричное умножение
© Гергель В.П.
7 из 47
Параллельный алгоритм 1: ленточная схема…

Выделение информационных зависимостей
– Каждая подзадача содержит по одной строке матрицы
А и одному столбцу матрицы В,
– На каждой итерации проводится скалярное умножение
содержащихся в подзадачах строк и столбцов, что
приводит к получению соответствующих элементов
результирующей матрицы С,
– На каждой итерации каждая подзадача i, 0 i<n,
передает свой столбец матрицы В подзадаче с
номером (i+1) mod n.
После выполнения всех итераций алгоритма в каждой
подзадаче поочередно окажутся все столбцы матрицы В.
Н.Новгород, 2005 г.
Основы параллельных вычислений: Матричное умножение
© Гергель В.П.
8 из 47
Параллельный алгоритм 1: ленточная схема…

Схема информационного взаимодействия
x
=
x
=
x
=
x
=
x
=
x
=
x
=
x
=
x
=
x
=
x
=
x
=
x
=
x
=
x
=
x
=
Н.Новгород, 2005 г.
Основы параллельных вычислений: Матричное умножение
© Гергель В.П.
9 из 47
Параллельный алгоритм 1: ленточная схема…

Масштабирование
процессорам
и
распределение
подзадач
по
– Если число процессоров p меньше числа базовых подзадач n
(p<n), базовые подзадачи могут быть укрупнены с тем, чтобы
каждый процессор вычислял несколько строк результирующей
матрицы С,
– В этом случае, исходная матрица A разбивается на ряд
горизонтальных полос, а матрица B представляется в виде
набора вертикальных полос,
– Для распределения подзадач между процессорами может быть
использован любой способ, обеспечивающий эффективное
представление кольцевой структуры информационного
взаимодействия подзадач.
Н.Новгород, 2005 г.
Основы параллельных вычислений: Матричное умножение
© Гергель В.П.
10 из 47
Параллельный алгоритм 1: ленточная схема…

Анализ эффективности
– Общая оценка показателей ускорения и эффективности
Sp 
n3
(n
3
p)
 p
Ep 
n3
p  (n p)
3
1
Разработанный способ параллельных вычислений
позволяет достичь идеальных
показателей ускорения и эффективности
Н.Новгород, 2005 г.
Основы параллельных вычислений: Матричное умножение
© Гергель В.П.
11 из 47
Параллельный алгоритм 1: ленточная схема…

Анализ эффективности (уточненные оценки)
- Время выполнения параллельного алгоритма, связанное непосредственно
с вычислениями, составляет
T p calc  (n 2 / p)  2n  1  
- Оценка трудоемкости выполняемых операций передачи данных может быть
определена как
T p comm   p  1    w  n  n p /  
(предполагается, что все операции передачи данных между процессорами в ходе
одной итерации алгоритма могут быть выполнены параллельно)
Общее время выполнения параллельного алгоритма составляет
T p  (n 2 / p)2n  1     p  1    w  n  n p  /  
Н.Новгород, 2005 г.
Основы параллельных вычислений: Матричное умножение
© Гергель В.П.
12 из 47
Параллельный алгоритм 1: ленточная схема…
Tp

Результаты вычислительных экспериментов
– Сравнение теоретических оценок и экспериментальных
данных
Размер матриц
2 процессора
4 процессора
T p*
T p(модель)
6 процессоров
T p*
T p(модель)
T p(модель)
T p*
500x500
1,0638
1,0521
0,5553
0,5454
0,3859
0,3825
1000x1000
8,4217
8,3916
4,3035
4,2255
2,9309
2,8196
1500x1500
28,3236
28,6602
14,3699
14,3110
9,7189
9,5786
2000x2000
67,0197
67,8705
33,8797
33,9281
22,8332
22,5448
время
4 процессора
40
35
30
25
20
15
10
5
0
Эксперимент
Модель
500
1000
1500
2000
размер матриц
Н.Новгород, 2005 г.
Основы параллельных вычислений: Матричное умножение
© Гергель В.П.
13 из 47
Параллельный алгоритм 1: ленточная схема…

Результаты вычислительных экспериментов
– Ускорение вычислений
2 процессора
4 процессора
6 процессоров
Последовательный
алгоритм
Время
Ускорение
Время
Ускорение
Время
Ускорение
500x500
2,0628
1,0521
1,9607
0,5454
3,7825
0,3825
5,3925
1000x1000
16,5152
8,3916
1,9681
4,2255
3,9084
2,8196
5,8573
1500x1500
56,5660
28,6602
1,9737
14,311
3,9526
9,5786
5,9055
2000x2000
133,9128
67,8705
1,9731
33,928
3,9469
22,545
5,9399
7
6
ускорение
Размер
матрицы
5
500
4
1000
3
1500
2000
2
1
0
2
4
6
количество процессоров
Н.Новгород, 2005 г.
Основы параллельных вычислений: Матричное умножение
© Гергель В.П.
14 из 47
Параллельный алгоритм 1': ленточная схема…

Другой возможный вариант распределения
данных состоит в разбиении матриц A и B
по строкам)
A
Н.Новгород, 2005 г.
B
Основы параллельных вычислений: Матричное умножение
© Гергель В.П.
15 из 47
Параллельный алгоритм 1': ленточная схема…

Выделение информационных зависимостей
– Каждая подзадача содержит по одной строке матриц
А и B,
– На каждой итерации подзадачи выполняют
поэлементное умножение векторов, в результате в
каждой подзадаче получается строка частичных
результатов для матрицы C,
– На каждой итерации подзадача i, 0 i<n, передает
свою строку матрицы В подзадаче с номером
(i+1) mod n.
После выполнения всех итераций алгоритма в каждой
подзадаче поочередно окажутся все строки матрицы В
Н.Новгород, 2005 г.
Основы параллельных вычислений: Матричное умножение
© Гергель В.П.
16 из 47
Параллельный алгоритм 1': ленточная схема

Схема информационного взаимодействия
x
=
x
=
x
=
x
=
x
=
x
=
x
=
x
=
x
=
x
=
x
=
x
=
x
=
x
=
x
=
x
=
Н.Новгород, 2005 г.
Основы параллельных вычислений: Матричное умножение
© Гергель В.П.
17 из 47
Параллельный алгоритм 2: метод Фокса

Распределение данных – Блочная схема
A
B
X

C
=
Базовая подзадача - процедура вычисления всех
элементов одного из блоков матрицы С
 A00 A01... A0 q 1   B00 B01...B0 q 1   C00C01...C0 q 1 

 
 







, Cij 
 A A ... A
  B B ...B
  c C ...C

 q 10 q 11 q 1q 1   q 10 q 11 q 1q 1   q 10 q 11 q 1q 1 
Н.Новгород, 2005 г.
Основы параллельных вычислений: Матричное умножение
© Гергель В.П.
q
A B
is
sj
s 1
18 из 47
Параллельный алгоритм 2: метод Фокса…

Выделение информационных зависимостей
– Подзадача (i,j) отвечает за вычисление блока Cij, как
результат, все подзадачи образуют прямоугольную
решетку размером qxq,
– В ходе вычислений в каждой подзадаче располагаются
четыре матричных блока:
• блок Cij матрицы C, вычисляемый подзадачей,
• блок Aij матрицы A, размещаемый в подзадаче перед
началом вычислений,
• блоки A'ij, B'ij матриц A и B, получаемые подзадачей в
ходе выполнения вычислений.
Н.Новгород, 2005 г.
Основы параллельных вычислений: Матричное умножение
© Гергель В.П.
19 из 47
Параллельный алгоритм 2: метод Фокса…

Выделение информационных зависимостей - для
каждой итерации l, 0 l<q, выполняется:
– блок Aij подзадачи (i,j) пересылается на все подзадачи той же
строки i решетки; индекс j, определяющий положение подзадачи в
строке, вычисляется в соответствии с выражением:
j = ( i+l ) mod q,
где mod есть операция получения остатка от целого деления;
– полученные в результате пересылок блоки Aij’, Bij’ каждой
подзадачи (i,j) перемножаются и прибавляются к блоку Cij
Cij  Cij  Aij  Bij
– блоки Bij’ каждой подзадачи (i,j) пересылаются подзадачам,
являющимися соседями сверху в столбцах решетки подзадач
(блоки подзадач из первой строки решетки пересылаются
подзадачам последней строки решетки).
Н.Новгород, 2005 г.
Основы параллельных вычислений: Матричное умножение
© Гергель В.П.
20 из 47
Параллельный алгоритм 2: метод Фокса…

Схема информационного взаимодействия
1 итерация
A0,0
A0,1
A0,0
A0,1
A0,0
B0,0
A0,1
B0,1
A0,0
B0,0
A0,0
B0,1
C0,0=0
C0,1=0
C0,0=A0,0·B0,0
C0,1=A0,0·B0,1
A1,0
A1,1
A1,0
A1,1
A1,0
B1,0
A1,1
B1,1
A1,1
B1,0
A1,1
B1,1
C1,0=0
C1,1=0
C1,0= A1,1·B1,0
C1,1= A1,1·B1,1
A0,0
A0,1
A0,0
A0,1
A0,0
B1,0
A0,1
B1,1
A0,1
B1,0
A0,1
B1,1
C0,0=A0,0·B0,0
C0,1=A0,0·B0,1
C0,0=A0,0·B0,0
+ A0,1·B1,0
C0,1=A0,0·B0,1
+ A0,1·B1,1
A1,0
A1,1
A1,0
B0,0
A1,1
B0,1
A1,0
A1,1
C1,0= A1,1·B1,0
C1,1= A1,1·B1,1
A1,0
B0,0
A1,0
B0,1
C1,0= A1,1·B1,0
+ A1,0·B0,0
C1,1= A1,1·B1,1
+ A1,0·B0,1
2 итерация
Н.Новгород, 2005 г.
Основы параллельных вычислений: Матричное умножение
© Гергель В.П.
21 из 47
Параллельный алгоритм 2: метод Фокса…

Масштабирование и распределение подзадач по
процессорам
– Размеры блоков могут быть подобраны таким образом,
чтобы общее количество базовых подзадач совпадало с
числом процессоров p,
– Наиболее эффективное выполнение метода Фокса может
быть обеспечено при представлении множества
имеющихся процессоров в виде квадратной решетки,
– В этом случае можно осуществить непосредственное
отображение набора подзадач на множество процессоров
- базовую подзадачу (i,j) следует располагать на
процессоре pi,j
Н.Новгород, 2005 г.
Основы параллельных вычислений: Матричное умножение
© Гергель В.П.
22 из 47
Параллельный алгоритм 2: метод Фокса…

Анализ эффективности
– Общая оценка показателей ускорения и эффективности
Sp 
n2
n2 / p
p
Ep 
n2
p  (n / p)
2
1
Разработанный способ параллельных вычислений
позволяет достичь идеальных
показателей ускорения и эффективности
Н.Новгород, 2005 г.
Основы параллельных вычислений: Матричное умножение
© Гергель В.П.
23 из 47
Параллельный алгоритм 2: метод Фокса…

Анализ эффективности (уточненные оценки)
- Время выполнения параллельного алгоритма, связанное непосредственно
с вычислениями, составляет
T p calc  q[( n 2 / p)  2n / q  1  (n 2 / p)]  
- На каждой итерации алгоритма один из процессоров строки процессорной
решетки рассылает свой блок матрицы A остальным процессорам своей строки
Tp1 comm   log 2 q (  w(n 2 / p ) /  )
- После умножения матричных блоков процессоры передают свои блоки матрицы
В предыдущим процессорам по столбцам процессорной решетки
T p2 comm     w  (n 2 p) / 
Общее время выполнения параллельного алгоритма составляет
Tp  q[(n2 / p)  2n / q 1  (n2 / p)]   (q log 2 q  (q 1) )(  w(n2 / p) /  )
Н.Новгород, 2005 г.
Основы параллельных вычислений: Матричное умножение
© Гергель В.П.
24 из 47
Параллельный алгоритм 2: метод Фокса…

Программная реализация…
– Начальный этап: Инициализация и распределение
данных между процессорами:
• Создание новых коммуникаторов:
– размер процессорной решетки определяется при помощи
функции MPI_Dims_create,
– Создание решетки производится при помощи функции
MPI_Cart_create
– Определение для каждого процесса координаты его положения в
решетке: MPI_Cart_coords.
• Действия, связанные с инициализацией и распределением
данных, выделены в отдельную функцию DataInitialization
Программа
Н.Новгород, 2005 г.
Основы параллельных вычислений: Матричное умножение
© Гергель В.П.
25 из 47
Параллельный алгоритм 2: метод Фокса…

Программная реализация…
– Выполнение итерации: рассылка блоков матрицы A по
строкам процессорной решетки (функция
AblockCommunication )
• В каждой строке решетки определяется ведущий процесс Pivot,
осуществляющий рассылку,
• Для рассылки используется блок pMatrixAblock, переданный в
процесс в момент начального распределения данных,
• Выполнение операции рассылки блоков осуществляется при
помощи функции MPI_Bcast (используется коммуникатор
RowComm)
Программа
Н.Новгород, 2005 г.
Основы параллельных вычислений: Матричное умножение
© Гергель В.П.
26 из 47
Параллельный алгоритм 2: метод Фокса…

Программная реализация…
– Выполнение итерации: перемножение матричных
блоков (функция BlockMultiplication)
• Блок матрицы А pAblock умножается на блок матрицы B
pBblock, результат этого умножения прибавляется к блоку
матрицы С pCblock
Программа
Н.Новгород, 2005 г.
Основы параллельных вычислений: Матричное умножение
© Гергель В.П.
27 из 47
Параллельный алгоритм 2: метод Фокса…

Программная реализация
– Выполнение итерации: циклический сдвиг блоков
матрицы B по столбцам процессорной решетки
(функция BblockCommunication )
• Каждый процесс передает свой блок следующему процессу
NextProc в столбце процессов,
• Каждый процесс получает блок, переданный из предыдущего
процесса PrevProc в столбце решетки,
• Выполнение операций передачи данных осуществляется при
помощи функции MPI_SendRecv_replace, которая
обеспечивает все необходимые пересылки блоков, используя
при этом один и тот же буфер памяти pBblock
Программа
Н.Новгород, 2005 г.
Основы параллельных вычислений: Матричное умножение
© Гергель В.П.
28 из 47
Параллельный алгоритм 2: метод Фокса…

Результаты вычислительных экспериментов
– Сравнение теоретических оценок и экспериментальных
данных
40
4 процессора
(модель)
T p*
500×500
0,5558
0,6417
1000×1000
4,3056
4,6018
1500×1500
14,3747
15,2201
2000×2000
33,8881
35,9625
Tp
35
30
время
Размер матриц
25
Эксперимент
20
Модель
15
10
5
0
500
1000
1500
2000
размер матриц
Н.Новгород, 2005 г.
Основы параллельных вычислений: Матричное умножение
© Гергель В.П.
29 из 47
Параллельный алгоритм 2: метод Фокса

Результаты вычислительных экспериментов
– Ускорение вычислений
Последовательный
алгоритм
Параллельный алгоритм,
4 процессора
3,8
3,7
3,6
Время
Ускорение
500×500
2,0628
0,6417
3,2146
1000×1000
16,5152
4,6018
3,5889
ускорение
Размер
матриц
3,5
3,4
3,3
3,2
3,1
1500×1500
56,566
15,2201
3,7165
3
2,9
2000×2000
133,9128
35,9625
3,7237
500
1000
1500
2000
размер матриц
Н.Новгород, 2005 г.
Основы параллельных вычислений: Матричное умножение
© Гергель В.П.
30 из 47
Параллельный алгоритм 3: метод Кэннона…

Распределение данных – Блочная схема
A
B
X

C
=
Базовая подзадача - процедура вычисления всех
элементов одного из блоков матрицы С
 A00 A01... A0 q 1   B00 B01...B0 q 1   C00C01...C0 q 1 

 
 







, Cij 
 A A ... A
  B B ...B
  c C ...C

 q 10 q 11 q 1q 1   q 10 q 11 q 1q 1   q 10 q 11 q 1q 1 
Н.Новгород, 2005 г.
Основы параллельных вычислений: Матричное умножение
© Гергель В.П.
q
A B
is
sj
s 1
31 из 47
Параллельный алгоритм 3: метод Кэннона…

Выделение информационных зависимостей
– Подзадача (i,j) отвечает за вычисление блока Cij, все
подзадачи образуют прямоугольную решетку размером qxq,
– Начальное расположение блоков в алгоритме Кэннона
подбирается таким образом, чтобы располагаемые блоки в
подзадачах могли бы быть перемножены без каких-либо
дополнительных передач данных:
• в каждую подзадачу (i,j) передаются блоки Aij, Bij,
• для каждой строки i решетки подзадач блоки матрицы A
сдвигаются на (i-1) позиций влево,
• для каждого столбца j решетки подзадач блоки матрицы B
сдвигаются на (j-1) позиций вверх,
– процедуры передачи данных являются примером операции
циклического сдвига
Н.Новгород, 2005 г.
Основы параллельных вычислений: Матричное умножение
© Гергель В.П.
32 из 47
Параллельный алгоритм 3: метод Кэннона…

Перераспределение блоков исходных матриц на
начальном этапе выполнения метода
A0,0
A0,1
A0,2
A0,0
A0,1
A0,2
B0,0
B0,1
B0,2
B0,0
B1,1
B2,2
C0,0=0
C0,1=0
C0,2=0
C0,0=0
C0,1=0
C0,2=0
A1,0
A1,1
A1,2
A1,1
A1,2
A1,0
B1,0
B1,1
B1,2
B1,0
B2,1
B0,2
C1,0=0
C1,1=0
C1,2=0
C1,0=0
C1,1=0
C1,2=0
A2,0
A2,1
A2,2
A2,2
A2,0
A2,1
B2,0
B2,1
B2,2
B2,0
B0,1
B1,2
C2,0=0
C2,1=0
C2,2=0
C2,0=0
C2,1=0
C2,2=0
Н.Новгород, 2005 г.
Основы параллельных вычислений: Матричное умножение
© Гергель В.П.
33 из 47
Параллельный алгоритм 3: метод Кэннона…

Выделение информационных зависимостей
– В результате начального распределения в каждой
базовой подзадаче будут располагаться блоки, которые
могут быть перемножены без дополнительных операций
передачи данных,
– Для получения всех последующих блоков после
выполнения операции блочного умножения:
• каждый блок матрицы A передается предшествующей
подзадаче влево по строкам решетки подзадач,
• каждый блок матрицы В передается предшествующей
подзадаче вверх по столбцам решетки.
Н.Новгород, 2005 г.
Основы параллельных вычислений: Матричное умножение
© Гергель В.П.
34 из 47
Параллельный алгоритм 3: метод Кэннона…

Масштабирование и распределение подзадач
по процессорам
– Размер блоков может быть подобран таким образом,
чтобы количество базовых подзадач совпадало с
числом имеющихся процессоров,
– Множество имеющихся процессоров представляется в
виде квадратной решетки и размещение базовых
подзадач (i,j) осуществляется на процессорах pi,j
(соответствующих узлов процессорной решетки)
Н.Новгород, 2005 г.
Основы параллельных вычислений: Матричное умножение
© Гергель В.П.
35 из 47
Параллельный алгоритм 3: метод Кэннона…

Анализ эффективности
– Общая оценка показателей ускорения и эффективности
Sp 
n2
2
n /p
p
Ep 
n2
p  (n / p)
2
1
Разработанный способ параллельных вычислений
позволяет достичь идеальных
показателей ускорения и эффективности
Н.Новгород, 2005 г.
Основы параллельных вычислений: Матричное умножение
© Гергель В.П.
36 из 47
Параллельный алгоритм 3: метод Кэннона…

Анализ эффективности (уточненные оценки)
- Алгоритм Кэннона отличается от метода Фокса только видом выполняемых в
ходе вычислений коммуникационных операций, следовательно:
T p calc  (n 2 / p)  2n  1  
- На этапе инициализации производится перераспределение блоков матриц А
и B при помощи циклического сдвига матричных блоков по строкам и
столбцам процессорной решетки (предполагаем, что топология системы
представляет собой полный граф)

T p1 comm   2    w  (n 2 p) / 

На каждой итерации алгоритма после умножения матричных блоков
процессоры передают свои блоки предыдущим процессорам по строкам (для
блоков матрицы A) и столбцам (для блоков матрицы B)

T p2 comm   2    w  (n 2 p) / 

Общее время выполнения параллельного алгоритма составляет
T p  q[( n 2 / p)  2n / q  1  (n 2 / p)]    (2q  2)(  w(n 2 / p) /  )
Н.Новгород, 2005 г.
Основы параллельных вычислений: Матричное умножение
© Гергель В.П.
37 из 47
Параллельный алгоритм 3: метод Кэннона…

Результаты вычислительных экспериментов
– Сравнение теоретических оценок и экспериментальных
данных
40
4 процессора
500×500
T p(модель)
0,5908
35
T p*
30
0,6676
25
1000×1000
4,4445
4,7065
1500×1500
14,6868
15,4247
2000×2000
34,4428
36,5024
время
Размер матриц
Эксперимент
20
Модель
15
10
5
0
500
1000
1500
2000
размер матриц
Н.Новгород, 2005 г.
Основы параллельных вычислений: Матричное умножение
© Гергель В.П.
38 из 47
Параллельный алгоритм 3: метод Кэннона

Результаты вычислительных экспериментов
Размер
матриц
Последовательный
алгоритм
Параллельный
алгоритм,
4 процессора
Время
Ускорение
500×500
2,0628
0,6676
3,0899
1000×1000
16,5152
4,7065
3,509
1500×1500
56,566
15,4247
3,6672
2000×2000
133,9128
36,5024
3,6686
Н.Новгород, 2005 г.
ускорение
– Ускорение вычислений
3,8
3,7
3,6
3,5
3,4
3,3
3,2
3,1
3
2,9
2,8
500
Основы параллельных вычислений: Матричное умножение
© Гергель В.П.
1000
1500
2000
размер матриц
39 из 47
Заключение…

Рассмотрены три возможных параллельных
реализации одной из наиболее часто
используемых матричных операций – матричного
умножения:
– Алгоритм 1 – ленточное разбиение данных,
– Алгоритм 2 – метод Фокса (блочная схема),
– Алгоритм 3 – метод Кэннона (блочная схема)
Представлена программная реализация метода
Фокса
 Теоретические оценки позволяют достаточно
точно определить показатели эффективности
параллельных вычислений

Н.Новгород, 2005 г.
Основы параллельных вычислений: Матричное умножение
© Гергель В.П.
40 из 47
Заключение
Показатели ускорения рассмотренных параллельных
алгоритмов при умножении матриц по результатам
вычислительных экспериментов для 4 процессоров
ускорение

4,5
4
3,5
3
2,5
2
1,5
1
0,5
0
Ленточная схема
Метод Фокса
Метод Кэннона
500
1000
1500
2000
размер матрицы
Н.Новгород, 2005 г.
Основы параллельных вычислений: Матричное умножение
© Гергель В.П.
41 из 47
Вопросы для обсуждения





Какие последовательные алгоритмы выполнения
операции умножения матриц вы знаете? Какова их
вычислительная трудоемкость?
Какой основной подход используется при разработке
параллельных алгоритмов матричного умножения?
Какой из алгоритмов обладает наилучшими
показателями ускорения и эффективности?
Какой из рассмотренных алгоритмов характеризуется
наименьшими и наибольшими требованиями к объему
необходимой памяти?
Какие операции передачи данных необходимы в
параллельных алгоритмах матричного умножения?
Н.Новгород, 2005 г.
Основы параллельных вычислений: Матричное умножение
© Гергель В.П.
42 из 47
Темы заданий для самостоятельной работы
Выполните реализацию двух ленточных
алгоритмов умножения матриц. Сравните время
выполнения этих алгоритмов.
 Выполните реализацию алгоритма Кэннона.
 Постройте теоретические оценки времени работы
этих алгоритмов с учетом параметров
используемой вычислительной системы
 Проведите вычислительные эксперименты.
Сравните результаты реальных экспериментов с
полученными теоретическими оценками

Н.Новгород, 2005 г.
Основы параллельных вычислений: Матричное умножение
© Гергель В.П.
43 из 47
Литература
Гергель В.П. (2007). Теория и практика
параллельных вычислений. – М.: ИнтернетУниверситет, БИНОМ. Лаборатория знаний.
 Kumar V., Grama, A., Gupta, A., Karypis, G. (1994).
Introduction to Parallel Computing. - The
Benjamin/Cummings Publishing Company, Inc. (2nd
edn., 2003)
 Quinn, M. J. (2004). Parallel Programming in C with
MPI and OpenMP. – New York, NY: McGraw-Hill.
 Fox, G.C., Otto, S.W. and Hey, A.J.G. (1987) Matrix
Algorithms on a Hypercube I: Matrix Multiplication.
Parallel Computing. 4 H. 17-31.

Н.Новгород, 2005 г.
Основы параллельных вычислений: Матричное умножение
© Гергель В.П.
44 из 47
Следующая тема

Параллельные методы решения систем
линейных уравнений
Н.Новгород, 2005 г.
Основы параллельных вычислений: Матричное умножение
© Гергель В.П.
45 из 47
Авторский коллектив
Гергель В.П., профессор, д.т.н., руководитель
Гришагин В.А., доцент, к.ф.м.н.
Сысоев А.В., ассистент (раздел 1)
Лабутин Д.Ю., ассистент (система ПараЛаб)
Абросимова О.Н., ассистент (раздел 10)
Гергель А.В., аспирант (раздел 12)
Лабутина А.А., магистр (разделы 7,8,9, система ПараЛаб)
Сенин А.В. (раздел 11)
Н.Новгород, 2005 г.
Основы параллельных вычислений: Матричное умножение
© Гергель В.П.
46 из 47
О проекте
Целью
проекта
является
создание
образовательного
комплекса
"Многопроцессорные
вычислительные
системы
и
параллельное
программирование", обеспечивающий рассмотрение вопросов параллельных
вычислений, предусматриваемых рекомендациями Computing Curricula 2001
Международных организаций IEEE-CS и ACM. Данный образовательный комплекс
может быть использован для обучения на начальном этапе подготовки
специалистов
в
области
информатики,
вычислительной
техники
и
информационных технологий.
Образовательный комплекс включает учебный курс "Введение в методы
параллельного программирования" и лабораторный практикум "Методы и
технологии разработки параллельных программ", что позволяет органично
сочетать фундаментальное образование в области программирования и
практическое обучение методам разработки масштабного программного
обеспечения для решения сложных вычислительно-трудоемких задач на
высокопроизводительных вычислительных системах.
Проект выполнялся в Нижегородском государственном университете
им. Н.И. Лобачевского на кафедре математического обеспечения ЭВМ факультета
вычислительной математики и кибернетики (http://www.software.unn.ac.ru).
Выполнение проекта осуществлялось при поддержке компании Microsoft.
Н.Новгород, 2005 г.
Основы параллельных вычислений: Матричное умножение
© Гергель В.П.
47 из 47
Download