Участник:Юлия Жосан/Разбиение вершин графа на равные по мощности блоки методом рекурсивной координатной бисекции
Автор: Юлия Жосан
Свойства и структура алгоритмов
Общее описание алгоритма
Декомпозиция графа - это задача его разбиения на непересекающиеся подмножества доменов, для их последующей параллельной обработки группой процессоров. Основная сложность использования параллельных методов состоит в поиске оптимальной декомпозиции, которая дает сбалансированное распределение доменов по процессорам. Выделяют два основных свойства оптимальной декомпозиции, которые должны выполняться одновременно:
- минимизация максимального веса исходящих из домена ребер
- равномерное распределение по доменам суммарного веса узлов/ребер
Покоординатная декомпозиция основана на рекурсивном делении пополам сети по координатной оси, вдоль которой область наиболее протяженная, соотношение размеров полученных частей зависит от требуемого количества доменов в каждой из них. Этот метод применяется для обработки сеток больших размеров (объем описания сетки превышает объем оперативной памяти одного процессорного узла).
Основные этапы работы алгоритма:
- Выбор направления, вдоль которого будут упорядочиваться вершины домена
- Упорядочивание вершин вдоль выбранного в п.1 направления
- Вычисление номера m первой вершины второго домена
- Формирование двух новых доменов, первый из которых включает вершины от первой до m-1 входящего домена, а второй включает вершины с m до последней вершины входящего домена
- Запуск алгоритма для полученных в п.4 доменов
Выделяют следующие достоинства данного алгоритма:
- высокая скорость работы
- низкий уровень дисбаланса распределения вершин между доменами
- экономичность по памяти
Математическое описание алгоритма
Пусть на вход алгоритму подаются следующие данные:
- неориентированный граф [math]\displaystyle{ G=(V, E) }[/math], где [math]\displaystyle{ V }[/math] - множество вершин, [math]\displaystyle{ E }[/math] - множество ребер
- Требуемое число доменов [math]\displaystyle{ p }[/math]
На выходе алгоритма требуется получить множество доменов [math]\displaystyle{ \{S_{p}\} }[/math].Это множество [math]\displaystyle{ p }[/math] непересекающихся подмножеств [math]\displaystyle{ \{V_{i}\} }[/math]:
[math]\displaystyle{ V=\bigcup\limits_{i=1}^{p} V_{i} }[/math], [math]\displaystyle{ V_{i}\cap V_{j}=\emptyset }[/math] для [math]\displaystyle{ i\not=j }[/math]
при котором минимизируются следующие функционалы:
- суммарный вес вершин в домене: [math]\displaystyle{ \vert S_{p}\vert=\sum\limits_{i=1}^{p} \vert v_{i} \vert\rightarrow min }[/math]
- суммарный вес разрезанных ребер:[math]\displaystyle{ \sum\limits_{ij} \vert e_{ij} \vert\rightarrow min , v_{i}\in S_{l}, v_{j}\in S_{r}, S_{l}\cap S_{r}=\emptyset }[/math]
Опишем подробнее схему работу рекурсивного алгоритма:
- Выбор оси, вдоль которой будет осуществляться сортировка. Для этого вычисляется величина [math]\displaystyle{ l_{k}=max\left( v_{i}^{k}\right)-min\left(v_{i}^{k}\right) , v_{i}^{k}\in V , k }[/math] - координатная ось, и выбирается ее максимальное значение.
- Сортировка множества вершин [math]\displaystyle{ V }[/math] по выбранной в п.1 координате по возрастанию номеров коодинат вершин
- Вычисляется номер вершины, по которой пойдет разбиение множества: [math]\displaystyle{ m=(iend-istart+1)*\frac{\frac{p+1}{2}}{p} }[/math], где [math]\displaystyle{ iend, istart }[/math] - номер первой вершины в множестве и номер последней вершины в множестве соответственно
- Множество вершин делится на две части: [math]\displaystyle{ V_{l}=|v_{l}|, l=istart..m ,V_{r}=|v_{r}|, r=m+1..iend }[/math]
- Алгоритм запускается для [math]\displaystyle{ V_{l} }[/math] и [math]\displaystyle{ V_{r} }[/math]
- Алгоритм останавливается на итерации, для которой [math]\displaystyle{ |V_{l}|=1 , |V_{r}|=1 }[/math]
Вычислительное ядро алгоритма
Вычислительное ядро алгоритма составляют:
- сортировка массива координат вершин [math]\displaystyle{ V }[/math] (могут применяться различные виды сортировок)
- вычисление величины [math]\displaystyle{ l_{k} }[/math]
- вычисление величины [math]\displaystyle{ m }[/math]
Макроструктура алгоритма
Основной составляющей метода является повторяющиеся сортировки множества координат вершин [math]\displaystyle{ V }[/math] на каждом рекурсивном шаге. Всего таких шагов [math]\displaystyle{ p-1 }[/math].
Схема реализации последовательного алгоритма
Последовательная сложность алгоритма
Информационный граф
Ресурс параллелизма алгоритма
Входные и выходные данные алгоритма
Свойства алгоритма
Программная реализация алгоритма
Особенности реализации последовательного алгоритма
Локальность данных и вычислений
Возможные способы и особенности параллельной реализации алгоритма
Масштабируемость алгоритма и его реализации
Динамические характеристики и эффективность реализации алгоритма
Выводы для классов архитектур
Существующие реализации алгоритма
Литература
[1] Якобовский М.В. Введение в параллельные методы решения задач: Учебное пособие / Предисл.: В. А. Садовничий. – М.: Издательство Московского университета, 2012. – 328 с., илл. – (Серия «Суперкомпьютерное образование»), ISBN 978-5-211-06382-2 URL: http://lira.imamod.ru/ITTPMOPS/ [2] Головченко Е.Н. Декомпозиция расчетных сеток для решения задач механики сплошных сред на высокопроиводительных вычислительных системах. Дисс ... канд. ф.-м.наук. Институт прикладной математики им. М. В. Келдыша РАН, г. Москва URL: http://keldysh.ru/council/3/D00202403/golovchenko_diss.pdf