6daf8e1687aebea41a642d9355bd19b5.ppt
- Количество слайдов: 79
Распределенные вычисления Параллельные методы на графах Лекция 7 Подготовил: Хованский Е. П. Мар. ГТУ 2008 г. 1
1. Графы Мар. ГТУ 2008 г. 2
Применение графов n Математические модели в виде графов широко используются при моделировании разнообразных явлений, процессов и систем. Мар. ГТУ 2008 г. 3
Пример графа n n Пусть G есть граф G=(V, R), для которого набор вершин Vi, 0
Дуги графа n В общем случае дугам графа могут приписываться некоторые числовые характеристики (веса) wj, 0
Пример 1. Взвешенный граф Мар. ГТУ 2008 г. 6
Способы задания графов n При малом количестве дуг в графе (т. е. m<
Способы задания графов n n Представление достаточно плотных графов, для которых почти все вершины соединены между собой дугами (т. е. m~n 2), может быть эффективно обеспечено при помощи матрицы смежности: A=(aij), 1 i, j n, ненулевые значения элементов которой соответствуют дугам графа: Мар. ГТУ 2008 г. 8
Способы задания графов Мар. ГТУ 2008 г. 9
Матрица смежности для примера 1 Мар. ГТУ 2008 г. 10
2. Задача поиска всех кратчайших путей Мар. ГТУ 2008 г. 11
Задача поиска всех кратчайших путей. Граф n взвешенный граф G=(V, R), содержащий n вершин (|V|=n), в котором каждому ребру графа приписан неотрицательный вес. Граф будем полагать ориентированным, т. е. если из вершины i есть ребро в вершину j, то из этого не следует наличие ребра из j в i. В случае если вершины все же соединены взаимообратными ребрами, веса, приписанные им, могут не совпадать. Мар. ГТУ 2008 г. 12
Задача поиска всех кратчайших путей. Граф n Рассмотрим задачу, в которой для имеющегося графа G требуется найти минимальные длины 2 путей между каждой парой вершин графа. В качестве практического примера можно привести задачу составления маршрута движения транспорта между различными городами при заданном расстоянии между населенными пунктами и другие подобные задачи. Мар. ГТУ 2008 г. 13
Метод решения n В качестве метода, решающего задачу поиска кратчайших путей между всеми парами пунктов 2 назначения, далее используется алгоритм Флойда (the Floyd algorithm). Мар. ГТУ 2008 г. 14
Метод решения Общая схема алгоритма Флойда for (k = 0; k < n; k++) for (i = 0; i < n; i++) for (j = 0; j < n; j++) A[i, j] = min(A[i, j], A[i, k] + A[k, j]); n Мар. ГТУ 2008 г. 15
Разделение вычислений на независимые части n основная вычислительная нагрузка при решении задачи поиска кратчайших путей состоит в выполнении операции выбора минимальных значений. Данная операция является достаточно простой, и ее распараллеливание не приведет к заметному ускорению вычислений. Мар. ГТУ 2008 г. 16
Способ разделения n эффективный способ организации параллельных вычислений может состоять в одновременном выполнении нескольких операций обновления значений матрицы A. Мар. ГТУ 2008 г. 17
Корректность способа разделения n n Aij min (Aij, Aik + Akj). Для i=k получим Akj min (Akj, Akk + Akj), но тогда значение Akj не изменится, т. к. Akk=0. Для j=k выражение преобразуется к виду Aik min (Aik, Aik + Akk), также показывает неизменность значений Aik Мар. ГТУ 2008 г. 18
Разделение вычислений на независимые части n n необходимые условия для организации параллельных вычислений обеспечены; в качестве базовой подзадачи может быть использована операция обновления элементов матрицы A (для указания подзадач можно применять индексы обновляемых в подзадачах элементов). Мар. ГТУ 2008 г. 19
Выделение информационных зависимостей n n n каждая подзадача (i, j) содержит необходимые для расчетов элементы Aij, Aik, Akj матрицы A; Для исключения дублирования данных разместим в подзадаче (i, j) единственный элемент Aij; получение всех остальных необходимых значений при помощи передачи данных. Мар. ГТУ 2008 г. 20
Выделение информационных зависимостей n n каждый элемент Akj строки k матрицы A должен быть передан всем подзадачам (k, j), 1
Информационная зависимость базовых подзадач Мар. ГТУ 2008 г. 22
Масштабирование и распределение подзадач по процессорам n n число доступных процессоров p существенно 2 меньше, чем число базовых задач n 2 (p<
Масштабирование и распределение подзадач по процессорам n n на каждой итерации алгоритма Флойда потребуется передавать между подзадачами только элементы одной из строк матрицы A. топология сети должна обеспечивать эффективное представление структуры сети передачи данных в виде гиперкуба или полного графа. Мар. ГТУ 2008 г. 24
Анализ эффективности параллельных вычислений n n оценим порядок вычислительной сложности алгоритма. уточним полученные оценки и учтем трудоемкость выполнения коммуникационных операций. Мар. ГТУ 2008 г. 25
Анализ эффективности параллельных вычислений n n Общая трудоемкость последовательного 3 алгоритма имеет порядок сложности n. Для параллельного алгоритма всего в подзадачах n /p таких элементов, число итераций алгоритма равно n показатели ускорения и эффективности параллельного алгоритма Флойда: Мар. ГТУ 2008 г. 26
Коммуникационная операция n n выполняемая на каждой итерации алгоритма Флойда, состоит в передаче одной из строк матрицы А всем процессорам вычислительной может быть выполнена за log 2 p шагов. Общая длительность по модели Хокни: где, – латентность сети передачи данных, β – пропускная способность сети, а w есть размер элемента матрицы в байтах. Мар. ГТУ 2008 г. 27
общее время выполнения параллельного алгоритма Флойда n где - есть время выполнения операции выбора минимального значения. Мар. ГТУ 2008 г. 28
Программная реализация n n Функция Min вычисляет меньшее из двух целых чисел, учитывая применяемый способ задания несуществующих дуг в матрице смежности. Функция Process. Initialization определяет исходные данные решаемой задачи, выделяет память для хранения данных, осуществляет ввод матрицы смежности. Мар. ГТУ 2008 г. 29
Программная реализация n n Функция Data. Distribution распределяет исходные данные между процессами. Каждый процесс получает горизонтальную полосу матрицы смежности. Функция Result. Collection осуществляет сбор со всех процессов горизонтальных полос результирующей матрицы кратчайших расстояний между любыми парами вершин графа. Мар. ГТУ 2008 г. 30
Программная реализация n n Функция Process. Termination выполняет необходимый вывод результатов решения задачи и освобождает всю ранее выделенную память для хранения данных. Функция Parallel. Floyd. Данная функция осуществляет итеративное изменение матрицы смежности в соответствии с алгоритмом Флойда. Мар. ГТУ 2008 г. 31
Пример функции Parallel. Floyd на С++ с использвоанием MPI // Параллельный алгоритм Флойда void Parallel. Floyd(int *p. Proc. Rows, int Size, int Row. Num) { int *p. Row = new int[Size]; int t 1, t 2; for(int k = 0; k < Size; k++) { // Распределение k-й строки среди процессов Row. Distribution(p. Proc. Rows, Size, Row. Num, k, p. Row); Мар. ГТУ 2008 г. 32
Пример функции Parallel. Floyd на С++ с использвоанием MPI // Обновление элементов матрицы смежности for(int i = 0; i < Row. Num; i++) for(int j = 0; j < Size; j++) if( (p. Proc. Rows[i * Size + k] != -1) && (p. Row [j]!= -1)){ t 1 = p. Proc. Rows[i * Size + j]; t 2 = p. Proc. Rows[i * Size + k] + p. Row[j]; p. Proc. Rows[i * Size + j] = Min(t 1, t 2); } } delete [] p. Row; } Мар. ГТУ 2008 г. 33
Эксперимент проводился n на базе процессоров Intel Xeon 4 EM 64 T, 3000 МГц и сети Gigabit Ethernet под управлением операционной системы Microsoft Windows Server 2003 Standard x 64 Edition и системы управления кластером Microsoft Compute Cluster Server Мар. ГТУ 2008 г. 34
Эксперимент n n Для оценки длительности τ было получено значение 7, 14 нсек. значение латентности - 130 мкс пропускная способность β - 53, 29 Мбайт/с w=4 (так как вычисления были с типом int) Мар. ГТУ 2008 г. 35
Результаты вычислительных экспериментов Параллельный алгоритм Кол-во вершин Последовательный алгоритм 2 процессора Время Ускорение 4 процессора Время Ускорение 8 процессоров Время Ускорение 1000 8, 037 4, 152 1, 936 2, 067 3, 888 0, 941 8, 544 2000 59, 812 30, 323 1, 972 15, 375 3, 890 8, 058 7, 423 3000 197, 111 99, 264 1, 986 50, 232 3, 924 25, 643 7, 687 4000 461, 785 232, 507 1, 986 117, 220 3, 939 69, 946 6, 602 5000 884, 622 443, 747 1, 994 224, 441 3, 941 128, 078 6, 907 Мар. ГТУ 2008 г. 36
Графики зависимости ускорения числа используемых процессоров Мар. ГТУ 2008 г. 37
Графики экспериментально установленного времени работы и теоретической оценки при использовании двух процессоров Мар. ГТУ 2008 г. 38
Сравнение экспериментального и теоретического времени Последовательный алгоритм Количество вершин Параллельный алгоритм 2 процессора 4 процессора 8 процессоров 1000 8, 038 3, 776 4, 152 2, 196 2, 067 1, 509 0, 941 2000 59, 812 29, 123 30, 323 15, 405 15, 375 8, 826 8, 058 3000 197, 111 97, 465 99, 264 50, 336 50, 232 27, 307 25, 643 4000 461, 785 230, 220 232, 507 117, 701 117, 220 62, 306 69, 946 5000 884, 622 448, 811 443, 747 228, 211 224, 441 119, 179 128, 078 Мар. ГТУ 2008 г. 39
3. Задача оптимального разделения графов Мар. ГТУ 2008 г. 40
Задача оптимального разделения графов n n Проблема оптимального разделения графов относится к числу часто возникающих задач при проведении различных научных исследований, использующих параллельные вычисления. Пример: обработка данных, в которых области расчетов аппроксимируются двумерными или трехмерными вычислительными сетками. Мар. ГТУ 2008 г. 41
Особенности n в ходе вычислений между соседними элементами сети может происходить передача результатов обработки и т. п. Мар. ГТУ 2008 г. 42
Решение задачи оптимального разделения графов n n разделение сети между процессорами таким образом, чтобы каждому из процессоров выделялось примерно равное число элементов сети; межпроцессорные коммуникации, необходимые для выполнения информационного обмена между соседними элементами, должны быть минимальными. Мар. ГТУ 2008 г. 43
Пример 1: нерегулярная сеть Мар. ГТУ 2008 г. 44
Решение задачи оптимального разделения графов n n такие задачи разделения сети между процессорами могут быть сведены к проблеме оптимального разделения графа. представление модели вычислений в виде графа позволяет легче решить вопросы хранения обрабатываемых данных и предоставляет возможность применения типовых алгоритмов обработки графов. Мар. ГТУ 2008 г. 45
Решение задачи оптимального разделения графов n Для представления сети в виде графа каждому элементу сети можно поставить в соответствие вершину графа, а дуги графа использовать для отражения свойства близости элементов сети. Мар. ГТУ 2008 г. 46
Пример графа, моделирующего структуру сети примера 1. Мар. ГТУ 2008 г. 47
Постановка задачи n Пусть дан взвешенный неориентированный граф G=(V, E), каждой вершине ν V и каждому ребру e E которого приписан вес. Задача оптимального разделения графа состоит в разбиении его вершин на непересекающиеся подмножества с максимально близкими суммарными весами вершин и минимальным суммарным весом ребер, проходящих между полученными подмножествами вершин. Мар. ГТУ 2008 г. 48
Возможные противоречия n равновесность подмножеств вершин может не соответствовать минимальности весов граничных ребер и наоборот. Мар. ГТУ 2008 г. 49
Задача n Для простоты представления материала будем полагать веса вершин и ребер графа равными единице. Мар. ГТУ 2008 г. 50
Метод рекурсивного деления пополам n Для решения задачи разбиения графа можно рекурсивно применить метод бинарного деления (the binary bisection method), при котором на первой итерации граф разделяется на две равные части, далее на втором шаге каждая из полученных частей также разбивается на две части и т. д. Мар. ГТУ 2008 г. 51
Метод рекурсивного деления пополам. Пример 2 Мар. ГТУ 2008 г. 52
Метод рекурсивного деления пополам. Пример 2 n n n граф следует разделить на 2 части в отношении 2: 3 (непрерывная линия); правую часть разбиения – в отношении 1: 3 (штриховая линия); разделить 2 крайние подобласти слева и справа в отношении 1: 1 (штрих-пунктир). Мар. ГТУ 2008 г. 53
3. 1. Геометрические методы Мар. ГТУ 2008 г. 54
Геометрические методы. Особенности n n выполняют разбиение сетей, основываясь исключительно на координатной информации об узлах сети; не принимают во внимание информацию о связности элементов сети. Мар. ГТУ 2008 г. 55
Покоординатное разбиение n Покоординатное разбиение (the coordinate nested dissection) – это метод, основанный на рекурсивном делении пополам сети по наиболее длинной стороне. Мар. ГТУ 2008 г. 56
Покоординатное разбиение. Пример 3 Мар. ГТУ 2008 г. 57
Покоординатное разбиение. Пример 3 n Покоординатное разбиение (the coordinate nested dissection) – это метод, основанный на рекурсивном делении пополам сети по наиболее длинной стороне. Мар. ГТУ 2008 г. 58
Покоординатное разбиение. Схема работы n n n вычисляются центры масс элементов сети. Полученные точки проектируются на ось, соответствующую наибольшей стороне разделяемой сети. Таким образом мы получаем упорядоченный список всех элементов сети; делением списка пополам мы получаем требуемую бисекцию; полученные фрагменты разбиения рекурсивно делятся на нужное число частей. Мар. ГТУ 2008 г. 59
Покоординатное разбиение. Плюсы и минусы Плюсы: n работает очень быстро и требует небольшого количества оперативной памяти. Минусы: n уступает по качеству более сложным и вычислительно трудоемким методам; n в случае сложной структуры сети алгоритм может получать разбиение с несвязанными подсетями. Мар. ГТУ 2008 г. 60
Рекурсивный инерционный метод деления пополам n Предыдущая схема могла производить разбиение сети только по линии, перпендикулярной одной из координатных осей. Во многих случаях такое ограничение оказывается критичным для построения качественного разбиения. Достаточно повернуть сеть на под острым углом к координатным осям. Мар. ГТУ 2008 г. 61
Рекурсивный инерционный метод деления пополам n Возможный способ определения угла поворота, состоит в использовании главной инерционной оси, считая элементы сети точечными массами. Линия бисекции, ортогональная полученной оси, как правило, дает границу наименьшей длины. Мар. ГТУ 2008 г. 62
Недостатки первых двух методов n Одним из недостатков предыдущих графических методов является то, что при каждой бисекции эти методы учитывают только одну размерность. Мар. ГТУ 2008 г. 63
Деление сети с использованием кривых Пеано n n упорядочивает элементы в соответствии с позициями центров их масс вдоль кривых Пеано. Кривые Пеано – это кривые, полностью заполняющие области больших размерностей (например, квадрат или куб). Мар. ГТУ 2008 г. 64
Деление сети с использованием кривых Пеано n После получения списка элементов сети, упорядоченного в зависимости от расположения на кривой, достаточно разделить список на необходимое число частей в соответствии с установленным порядком. Мар. ГТУ 2008 г. 65
Пример разделения сети на 3 части с использованием кривых Пеано Мар. ГТУ 2008 г. 66
3. 2. Комбинаторные методы Мар. ГТУ 2008 г. 67
Комбинаторные методы n n В отличие от геометрических методов, комбинаторные алгоритмы, обычно оперируют не с сетью, а с графом, построенным для этой сети. не принимают во внимание информацию о близости расположения элементов сети друг относительно друга, руководствуясь только смежностью вершин графа. Мар. ГТУ 2008 г. 68
Комбинаторные методы Плюсы: n обычно обеспечивают более сбалансированное разбиение и меньшее информационное взаимодействие полученных подсетей. Минусы: n имеют тенденцию работать существенно дольше, чем их геометрические аналоги. Мар. ГТУ 2008 г. 69
Деление с учетом связности. n разделении графа информационная зависимость между разделенными подграфами будет меньше, если соседние вершины будут находиться в одном подграфе. Мар. ГТУ 2008 г. 70
Общая схема выполнения алгоритма деления графов с учетом связности n n n Iteration = 0. Присвоение номера Iteration произвольной вершине графа. Присвоение ненумерованным соседям вершин с номером Iteration номера Iteration + 1. Iteration = Iteration + 1. Если еще есть неперенумерованные соседи, то переход на шаг 3. Разделение графа на 2 части в порядке нумерации. Мар. ГТУ 2008 г. 71
Пример работы алгоритма деления графов с учетом связности Мар. ГТУ 2008 г. 72
Алгоритм Кернигана – Лина n n предполагается, что некоторое начальное разбиение графа уже существует, затем имеющееся приближение улучшается в течение некоторого количества итераций. состоит в обмене вершинами между подмножествами имеющегося разбиения графа. Мар. ГТУ 2008 г. 73
Общая схема алгоритма Кернигана – Лина n n Формирование множества пар вершин для перестановки. Из вершин, которые еще не были переставлены на данной итерации, формируются все возможные пары. Построение новых вариантов разбиения графа. Каждая пара, подготовленная на шаге 1, поочередно используется для обмена вершин между частями имеющегося разбиения графа для получения множества новых вариантов деления. Мар. ГТУ 2008 г. 74
Общая схема алгоритма Кернигана – Лина n Выбор лучшего варианта разбиения графа. Для сформированного на шаге 2 множества новых делений графа выбирается лучший вариант. Этот вариант далее фиксируется как новое текущее разбиение графа, а соответствующая выбранному варианту пара вершин отмечается как использованная на текущей итерации алгоритма. Мар. ГТУ 2008 г. 75
Общая схема алгоритма Кернигана – Лина n n Проверка использования всех вершин. При наличии в графе вершин, еще не использованных при перестановках, выполнение итерации алгоритма снова продолжается с шага 1. Если же перебор вершин графа завершен, далее следует шаг 5. Выбор наилучшего варианта разбиения графа. Среди всех разбиений графа, полученных на шаге 3 проведенных итераций, выбирается (и фиксируется) наилучший вариант разбиения графа. Мар. ГТУ 2008 г. 76
Пример перестановки двух вершин в методе Кернигана – Лина Мар. ГТУ 2008 г. 77
Сравнительная таблица алгоритмов разделения графов Алгоритмы Необходим ость координатн ой информаци и Точность Время выполнени я Возможнос ти для распаралле ливания Покоординатное разбиение Да 10% t высокие Рекурсивный инерционный метод деления пополам Да 20% t высокие Деление с учетом связности Нет 20% 10*t средние Алгоритм Кернигана Лина 1 Нет 20% 10*t низкие 10 Нет 30% 100*t средние 50 Нет 40% 1000*t очень высокие Мар. ГТУ 2008 г. 78
Спасибо за внимание! Мар. ГТУ 2008 г. 79


