Южный федеральный университет Факультет математики механики и компьютерных наук Исследования по оптимальному использованию распределенной и кэш памяти Гервич Л.Р., Юрушкин М.В. Научный руководитель: зав. каф. АДМ, д.т.н. Штейнберг Б.Я. ОПТИМИЗАЦИЯ ПАРАЛЛЕЛЬНОГО АЛГОРИТМА ЗАДАЧИ ДИРИХЛЕ Задача Дирихле Аналитическая форма u(x, y, 0)=a(x,y) u (x, y, 1)=b(x,y) u (x, 0, z)=c (x,z) u (x, 1, z)=d (x,z) u (0, y, z)=e(y,z) u (1, y, z)=f (y,z) Разностная схема Ui,j,k= (Ui,j-1,k+ Ui,j+1,k+ Ui-1,j,k+ Ui+1,j,k+ Ui,j,k-1+ Ui,j,k+1)/6 Стандартный последовательный алгоритм For (i=0,…,maxIt) { For (j=1,..,n-1) For (k=1,..,n-1) For (s=1,..,n-1) B[j,k,s]=1/6*(U[j,k-1,s]+ U[j,k+1,s]+ U[j-1,k,s]+ U[j+1,k,s]+U[j,k,s-1]+ U[j,k,s+1]) For (j=1,..,n-1) For (k=1,..,n-1) For (s=1,..,n-1) U[j,k,s]=B[j,k,s] } Стандартный параллельный алгоритм двумерной (для наглядности) задачи Дирихле Разбиение двумерной матрицы на блоки, каждый из которых находится в своем процессоре. Схема межпроцессорных пересылок на каждой итерации Вычисления на каждой итерации • Вычисления производятся только для внутренних элементов полученного блока. Выделены цветом данные, полученные из других процессоров Темп роста быстродействия процессоров и памяти Слайд взят из презентации проф. Корнеева В.В. (ФГУП “Квант”) На сегодняшний день доступ к памяти в 20 раз дольше умножения Методы оптимизации параллельного алгоритма • Уменьшение количества межпроцессорных пересылок. • Увеличение локальности данных для оптимального использования кэш-памяти. Результаты численных экспериментов (ускорение в 2.4 раза) Кластер INFINI Югинфо Размерность сетки Количество итераций 500*500*500 2000 Количество Процессоров 8 Время простого алгоритма Время простого алгоритма с блочностью Время алгоритма с перекрытием Время алгоритма с перекрытие ми блочностью 26m 27s 24m 36s 13m 38s 11m 24s ОПТИМИЗАЦИЯ В РАСПРЕДЕЛЕННОЙ ПАМЯТИ Параллельный алгоритм с перекрытиями (know how) • Размер перекрытия равен m • Схема обмена на итерациях, кратных m: Параллельный алгоритм с перекрытиями • Между каждыми двумя итерациями с пересылками выполняются m-1 итераций без пересылки. Сравнение параллельных алгоритмов • Количество алгебраических операций у алгоритма с перекрытиями больше, чем у простого алгоритма. • Объем пересылаемых данных у обоих алгоритмов одинаков. • Количество пересылок алгоритма с перекрытиями меньше, чем у простого параллельного алгоритма. • Одинаковые объемы данных лучше пересылать данные за меньшее количество пересылок, чем за большее РАЗМЕЩЕНИЕ ДАННЫХ ПОД ИСПОЛНЯЕМЫЙ КОД Размещения данных Стандартные размещения матриц компиляторами: • Размещение по строкам (СИ, Паскаль) • Размещение по столбцам (ФОРТРАН) Другие: • Блочное • Скошенное Скошенная форма хранения матрицы. В каждом модуле памяти хранится косая диагональ: позволяет одновременно считывать как строки так и столбцы матриц Оптимизирующие компиляторы нового поколения • Автоматическое размещение данных, зависящее от кода программы и целевой архитектуры. • Подстройка под кэш-память • Минимизация межпроцессорных пересылок (в случае распределенной памяти) Реализация в ДВОР ДВОР – Диалоговый высокоуровневый оптимизирующий распараллеливатель. • • • Блочное распределение данных в общей памяти. Блочно-аффинное размещение массивов в распределенной памяти. Первый в мире online-распараллеливатель: http://ops.opsgroup.ru/opsweb-datadistr.php Реализация блочного распределения данных в общей памяти. #pragma ops distribute data(A, N, N, 1, d, d) #pragma ops distribute data(B, N, N, 1, d, d) #pragma ops distribute data(C, N, N, 1, d, d) for (bi = 0; bi < blockCount; bi++) for (bj = 0; bj < blockCount; bj++) for (bk = 0; bk < blockCount; bk++) for (i = 0; i < d; i++) for (j = 0; j < d; j++) for (k =0; k <d; k++) C[bi*d+i][bj*d+j] += A[bi*d+i][bk*d+k]*B[bk*d+k][bj*d+j]; Результаты тестирования Тест 1. Возведение матрицы в квадрат Intel® Pentium® Processor E5300 (2M Cache, 2.60 GHz, 800 MHz FSB) N = 1000 Размер Стандартный блока алгоритм(мс) Блочный код (мс) Блочный код + распределение массивов (мс) Ускорение 50 2355 1337 10.56 14122 Тест 2. Умножение матриц Intel® Pentium® Processor E5300 (2M Cache, 2.60 GHz, 800 MHz FSB) N = 1000 Размер Стандартный блока алгоритм(мс) Блочный код (мс) Блочный код + распределение массивов (мс) Ускорение 50 1341 1341 1.5 2012 Тест 3. Двумерная задача Дирихле Intel® Pentium® Processor E5300 (2M Cache, 2.60 GHz, 800 MHz FSB) N = 4000 Размер Стандартный блока алгоритм(мс) Блочный код (мс) Блочный код + распределение массивов (мс) Ускорение 40 164 133 2.84 379 Наши публикации • • • • • Гервич Л. Р., Штейнберг Б.Я. Параллельное итерационное умножение матрицы на вектор // Труды научной школы И.Б. Симоненко, отв. ред.: Я. М. Ерусалимский, Б.Я. Штейнберг. Ростов н/Д: Изд-во ЮФУ, 2010. С. 275 Гервич Л.Р., Штейнберг Б.Я.Размещение массивов с перекрытиями в параллельных итерационных процессах. «Современные проблемы и методы теории операторов и гармонического анализа и их приложения» Тезисы докладов международного семинара, приуроченного к 70-летию проф. С.Г. Самко. Ростов-на-Дону, Южный федеральный университет, 24-28 апреля 2011 г., с. 61 Штейнберг Б.Я., Абрамов А.А., Алымова Е.В., Баглий А.П., Гуда С.А., Дубров Д.В., Кравченко Е.Н., Морылев Р.И., Нис З.Я., Петренко В.В., Полуян С.В., Скиба И.С., Шаповалов В.Н., Штейнберг О.Б., Штейнберг Р.Б., Юрушкин М. Диалоговый высокоуровневый автоматический распараллеливатель (ДВОР). Научный сервис в сети Интернет.: Труды Всероссийской суперкомпьютерной конференции (20-26 сентября 2010 г., г. Новороссийск). М.: Изд-во МГУ, 2010., с. 71-75 Штейнберг Б.Я., Штейнберг Р.Б., Морылев Р.И., Петренко В.В., Полуян С.В., Штейнберг О.Б., Баглий А.П., Нис З.Я., Скиба И.С., Юрушкин М.В., Шаповалов В.Н.,Алымова Е.В., Кравченко Е.Н. Диалоговый высокоуровневый оптимизирующий распараллеливатель программ. Свидетельство о регистрации программ № 2011617205 Соловьев А.Н. , Гервич Л.Р. , Штейнберг Б.Я. , Наседкин А.В. , Скалиух А.С. , Сумбатян М.А. Параллельные решатели для пакета ACELAN. Свидетельство о регистрации программ № 2011617952 Группа ОРС (=ДВОР) Оптимизирующая распараллеливающая система http://ops.rsu.ru