Нижегородский государственный университет им. Н.И.Лобачевского Факультет Вычислительной математики и кибернетики Образовательный комплекс Введение в методы параллельного программирования Лекция 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 ,...,ain1 , bTj b0 j , b1 j ,...,bn1 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