Параллельное и распределенное программирование, грид-технологии, программирование на графических процессорах
УДК 004.021
Рыбаков А.А.
Межведомственный суперкомпьютерный центр Российской академии наук — филиал Федерального государственного учреждения «Федеральный! научныи центр Научно-исследовательскии институт системных исследовании Россиискои академии наук», г. Москва, Россия
ПАРТИЦИРОВАНИЕ ГРАФА СМЕЖНОСТИ БЛОЧНО-СТРУКТУРИРОВАННОЙ СЕТКИ
Аннотация
В статье рассматривается структура графа смежности блочно-структурированной расчетной сетки. Такие сетки часто используются при численном решении задач газовой динамики. Для эффективного проведения расчетов на суперкомпьютере требуется уметь равномерно распределять вычислительную нагрузку между вычислительными узлами. Данная задача решается с помощью партицирования графа смежности блочно-структурированной сетки.
Ключевые слова
Блочно-структурированная сетка; граф смежности блочно-структурированной сетки; партицирование графа.
Rybakov A.A.
Joint Supercomputer Center of the Russian Academy of Sciences - branch of Scientific Research Institute of System Analysis of the Russian Academy of Sciences, Moscow, Russia
BLOCK-STRUCTURED GRID ADJACENCY GRAPH PARTITIONING
Abstract
In the article block-structured calculation grid adjacency graph structure is considered. Such grids are often used in the numerical solution of gas dymanics problems. For effective calculations on supercomputer it is needed to be able to distribute computational load between compute nodes. The block-structured grid adjacency graph partitioning is focused on this task solving.
Keywords
Block-structured grid; block-structured grid adjacency graph; graph partitioning.
Введение
Численное решение задач газовой динамики, как правило, связано с большим объемом вычислении [1]. Для математического моделирования высокоскоростных турбулентных течении требуется использование больших расчетных сеток, состоящих их десятков и сотен миллионов ячеек. Для обработки таких объемов данных часто бывает необходимо прибегать к использованию суперкомпьютеров. При этом остро встает проблема как повышения скорости работы исполняемого кода на вычислителе, так и проблема равномернои загрузки вычислительных
узлов суперкомпьютера.
Одним из наиболее распространенных типов расчетных сеток, используемых в математическом моделировании задач газовои динамики, является блочно-структурированная сетка [2]. Сетка данного типа состоит из отдельных блоков, каждьш из которых представляет собои трехмерный массив ячеек, доступ к которым осуществляется по индексам. Блочно-структурированные сетки более выгодны с точки зрения скорости вычислении и объема используемой памяти, однако они гораздо сложнее в плане построения по сравнению с
неструктурированными сетками.
При распределении вычислении, проводимых на блочно-структурированнои сетке, между узлами суперкомпьютерного кластера каждыи блок сетки распределяется на конкретный вычислительный узел. Обмены данными между соседними блоками, находящимися в разных вычислительных узлах, осуществляются через MPI
[3].
Равномерному распределению вычислительной нагрузки между узлами мешают два фактора. Во-первых, это разные размеры блоков сетки, в частности наличие ярко выраженных крупных блоков. Данная проблема решается с помощью алгоритмов дробления сетки. Вторым фактором является большое количество межпроцессных обменов данными, которые могут серьезно затормозить вычисления. Алгоритм, описанный в даннои статье, направлен на такое распределение вычислительной нагрузки, которое снижает общии объем межпроцессных обменов данными.
Граф смежности расчетной сетки
Приведем сначала общее описание блочно-структурированной сетки [4]. Основным объектом блочно-структурированнои сетки является блок. Блок состоит из упорядоченного трехмерного массива ячеек, содержащих газодинамические параметры, ассоциированные с центрами масс ячеек. С каждым блоком ассоциирована криволинейная система координат, которая задается тремя линиями координат (I, J, K), каждая из которых связывает пары противоположных гранеи блока.
Объектом, описывающим соприкосновение двух соседних блоков, является интерфейс. Интерфейс является однонаправленным, он сообщает, что у данного блока конкретная прямоугольная часть границы соприкасается с другим блоком. Чтобы определить, с какои частью другого блока граничит рассматриваемый блок, нужно рассмотреть смежный ему интерфейс. Таким образом, полная информация о касании двух блоков описывается парои смежных интерфейсов (рис. Г).
Рис. 1. Задание касания двух блоков парой смежных интерфейсов
Во время проведения расчетов различные блоки сетки обрабатываются независимо друг от друга. Однако некоторые ячейки обрабатываемого блока должны обращаться за данными к ячеикам соседних блоков, с которыми этот блок граничит через интерфейсы. Если два соседних блока обрабатываются на разных узлах
суперкомпьютера, то для обмена данными между ними можно использовать MPI-обмены. Если ячеика в процессе проведения вычислении обращается за данными к ячеикам соседних блоков, то будем называть ее интерфейсной ячеикои. Если к тому же она обращается за данными на другои вычислительный узел, то будем называть ее кросс-ячеикои, а соответствующий интерфейс - кросс-интерфеисом.
Пусть нам задана блочно-структурированная сетка, и известно количество вычислительных узлов гомогенной вычислительной системы, то есть системы, состоящей их идентичных вычислительных узлов, для которой нужно организовать расчеты на даннои сетке. Сконструируем для даннои сетки граф смежности ее блоков (GBAG - grid blocks adjacency graph), в котором вершинами будут блоки сетки, а ребрами -касания соседних блоков, то есть пары интерфейсов. Данньш граф является взвешенным. В качестве веса вершины GBAG будем брать количество ячеек соответствующего блока. В качестве веса ребра GBAG положим площадь касания между соответствующими блоками, то есть количество ячеек одного блока, граничащих по грани с ячейками второго блока. Также с каждои вершинои GBAG будем ассоциировать трехмерную точку, являющуюся барицентром всех узлов соответствующего блока.
Задача эффективного распределения вычислительной нагрузки по обработке блочно-структурированнои сетки между узлами суперкомпьютера с минимизацией межпроцессных обменов данными сводится к задаче партицирования соответствующего GBAG с условием минимизации суммы весов ребер, связывающих разные партиции. Такие ребра будем называть кросс-ребрами.
Формальная постановка задачи выглядит следующим образом. Пусть дан граф смежности блочно-структурированнои сетки G=G (V ,E), где V - множество его вершин, E - множество его ребер. На множествах вершин и ребер данного графа заданы весовые функции: wV: V -N, wE: E — N . Пусть задано множество партиции P , где |р| - общее их количество. Распределение блоков расчетной сетки по партициям задается функцией Y: V — P . Общии вес партиции p £ P определяется через сумму весов, входящих в нее вершин:
w
.(p )= I
veV Y lv)=p
Равномерность распределения вычислительной! нагрузки на узлы суперкомпьютера означает минимизацию веса наиболее тяжелои партиции, или минимизацию отклонения веса наиболее тяжелои партиции от среднего значения
w p
n \
= I w
pe P
|P|
= max w
p eP max \ P
(P )
\
,avg
--1
100%
/
Второе условие эффективности
партицирования касается объема межпроцессных обменов. Пусть у нас задана функция у разделения множества блоков на партиции. Определим множество кросс-ребер графа СБАС для однои конкретно взятои партиции р еР
Ест*(р)={е = \^,и}еЕ | у^) = (и)* р} .
Аналогично определим множество всех внутренних ребер партиции р еР
Етпег(р) = \е=^,и}еЕ|у^) = р,у(и)= р} .
Под весом множества ребер будем понимать сумму весов всех ребер, входящих в это множество ^е(М)=Х ^Е(е) .
ее М
Тогда под минимизацией количества межпроцессных обменов будем понимать следующую величину, отражающую отношение максимального объема межпроцессных обменом для партиции к среднему значению всех обменов (обозначим данную величину через х )
E( p) = E (p)+ E
X =
■ max w
p eP
№
( p )
I wE (E(p)
\-i
pe P
100% ■
\ |Р| /
Далее рассмотрим два подхода к рапределению блоков по вычислительным узлам. В первом случае не будем учитывать кросс-ребра вообще (распределение блоков без учета межпроцессного обмена). Во втором случае будем изначально строить партиции таким образом, чтобы как можно большее число тяжелых ребер попадали внутрь партиции, превращаясь таким образом из кросс-ребер во внутренние ребра партиции.
Распределение блоков сетки без учета межпроцессного обмена
Опишем реализацию простого жадного алгоритма распределения блоков сетки по вычислительным узлам [5]. Для него нужно знать только веса блоков, размеры данных, участвующих в межпроцессных обменах, игнорируются.
Первым пунктом деиствии занесем все вершины графа в массив необработанных вершин.
Будем обрабатывать данный массив с порядке убывания весов вершин. То есть данный массив нужно отсортировать по весам.
Вторым пунктом алгоритма является обработка очередной вершины из массива необработанных вершин. Если данныи массив пуст, то алгоритм заканчивает работу. Если массив не пуст, то возьмем наиболее тяжелую вершину. После этого наидем партицию, имеющую наименьший текущии вес, и отнесем рассматриваемую вершину в данную партицию. Завершающим действием шага является удаление данной вершины из массива необработанных вершин и возврат в начало пункта.
Данныи алгоритм никак не учитывает ни расположение блоков сетки, ни веса ребер GBAG, так что ожидать минимизации объема обменов данными между разными вычислительными узлами не приходится. Будем обозначать данныи алгоритм UG (от uniform greedy). Распределение блоков по партициям, получаемое в результате работы данного алгоритма, близко к оптимальному в смысле весов партиции. Это справедливо для достаточно большого количества блоков в сетке и отсутствия ярко выраженных крупных блоков.
Алгоритм партицирования графа смежности
В данном разделе рассматривается алгоритм, которыи основан на последовательном распределении вершин GBAG по партициям с учетом их пространственного расположения. При этом в начале работы алгоритма каждой партиции приписывается изначально определяемая базовая точка (base point), вокруг которой в дальнейшем и строится партиция. Базовые точки выбираются таким образом, чтобы они находились в области сетки, и минимальное расстояние между парами этих точек было максимально. Другими словами, базовые точки должны как можно более равномерно заполнять область сетки. Для получения базовых точек можно сначала получить множество случайных точек в области сетки, а затем с помощью последовательных приближении скорректировать их положение для достижения равномерности заполнения области расчетной сетки. Данныи алгоритм будем обозначать RVP (random volume points).
Опишем алгоритм RVP распределения вершин по партициям. Сначала введем понятие окрестности партиции. Назовем окрестностью партиции множество всех не входящих в нее (и ни в какую другую партицию) вершин графа, соединенных ребром хотя бы с однои вершиной из этои партиции. На каждом шаге работы алгоритма будем выбирать самую легкую партицию и добавлять к неи новую еще никуда не распределенную вершину. При этом приоритет в выборе новых вершин для расширения
wy (V
w
p
w
P
w
P
w
P
(пропагации) партиции будем отдавать вершинам из ее окрестности. При этом возможны три варианта. В первом варианте вообще нет вершин, которые можно добавить в партицию, в этом случае алгоритм заканчивает работу. Во втором случае окрестность партиции пуста, тогда нужно добавить вершину, ближайшую к базовой точке партиции. И наконец в третьем случае существует непустая окрестность партиции и вершину для пропагации нужно выбрать из нее.
алгоритмов использовалась блочно-
структурированная сетка, содержащая 108 ячеек, подготовленная для проведения расчетов на суперкомпьютере, СБАС которой содержит 1000 вершин и более 6000 ребер. Данная сетка подготавливалась с помощью дробления блоков для обработке на суперкомпьютере МВС-10П, находящемся в МСЦ РАН [6].
Первым показателем, по которому будем
max Е
партиция окрестность
расширение па вес/ ребер расширение го весу вершим другие ребра
! партиции в алгоритме RVP оценивать эффективность
партицирования GBAG, является
алгоритма отклонение
Рис. 2. Пропагация Обозначим текущую рассматриваемую партицию через р , а ее окрестность через 6 (р) .
Для каждои вершины V е 6 (р) определим максимальной вычислительной нагрузки узла от показатель предпочтения ц (V) для добавления в партицию
(1-а){ I
среднего значения, то есть величина wi
dev
В
q (v)
e= |v ,u|e E Y(u ) = P
\ Y\u ) = P /
Для добавления в партицию выбирается вершина с наибольшим значением показателя предпочтения. В даннои формуле а представляет собои параметр от 0 до 1. Если а =1, то критерии вырождается в выбор самои тяжелои вершины из окрестности. Если а = 0 , то выбирается такая вершина, при добавлении которой максимизируется сумма весов ребер, которые станут внутренними ребрами текущей партиции (рис. 2). Таким образом, при значениях а близких к единице достигается лучшая равномерность распределения весов вершин по партициям. При значениях а близких к нулю уменьшается объем данных, участвующих в межпроцессном обмене (большее количество кросс-ребер уничтожается, так как они становятся внутренними ребрами своих партиции).
Так как в большинстве случаев на каждом шаге пропагации к партиции добавляется вершина из окрестности даннои партиции, то можно говорить о пропагации партиции по ребру, что будем отображать в названии алгоритма (RVPEP, random volume points edges propagation).
Результаты
Для сравнения эффективности описанных
качестве второго показателя эффективности будем использовать отношение максимального количества межпроцессных обменов партиции к среднему показателю объема всех обменов (данная величина вводилась ранее и обозначалась через Х-
л -Л» у*
• • ам* • .»*-* -. it .1 • -
V--- i_
Я-у» » •
—__
У/
UG : partitions = 8, deviation = 0.0404319482990056,
;_edges_f = 83.4439511Б7
Рис. 3. Результат разделения тестовой сетки на 8 партиций алгоритмом UG На рисунках 3 и 4 показана визуальная разница в применении алгоритмов иС и RVPEP для 8 партиции. В случае использования алгоритма
RVPEP на рисунке 4 четко различаются локализованные партиции (вершины, окрашенные в один цвет), а также показатель х (на рисунках эта величина обозначается cross_edges_f) вдвое меньше соответствующего показателя для алгоритма иС, что говорит о существенном сокращении кросс-ребер.
RVPEP/EM : partitions = 5, devnatitw = О.263315233000655,
: -_d = 'ji. I = 41.5422
Рис. 4. Результат разделения тестовой сетки на 8 партиций алгоритмом RVPEP
а = о
а — 1
параметр а, определяющий баланс между равномерностью загрузки вычислительных узлов и уменьшением количества межпроцессных обменов. На рисунках 5 и 6 приведены данные зависимости при распределении вычислительной нагрузки на 64 партиции.
На рис. 5 приведена зависимость величины х от параметра а, а на рис. 6 — зависимость показателя от того же значения а . Из
данных рисунков видно, что использование значения параметра а примерно от 0.3 и выше уже существенно сокращает количество кросс-ребер в графе, тогда как равномерность распределения весов блоков по партициям изменяется незначительно.
к/ \А 1-,->
\
*—
1
1 W
а = 0
dev
Рис. 5. Зависимость показателя х (значения в процентах отложены по вертикальной оси) от параметра а для алгоритма RVPEP
Таким образом, для сокращения межпроцессных обменов целесообразно использовать алгоритм RVPEP. Осталось показать, какое влияние на эффективность оказывает
Рис. 6. Зависимость показателя wP (значения в
процентах отложены по вертикальной оси) от параметра а для алгоритма RVPEP
Заключение
Проведенные исследования показали, что использование алгоритма RVPEP партицирования графа смежности блочно-структурированнои сетки позволяет добиться равномерного распределения вычислительной нагрузки на узлы суперкомпьютера. При этом варьирование параметра алгоритма, позволяющего выбирать подходящую стратегию пропагации партиции, позволяет существенно сократить количество кросс-ребер в графе, тем самым уменьшая объем межпроцессных обменов данными.
Также заметим, что алгоритмы иС и RVPEP, описанные в статье, могут быть без труда расширены на случаи неоднородных партиции, что делает возможным их использование для гетерогенных вычислительных систем.
Литература
1. 2.
3.
4.
Blazek J. Computational fluid dynamics: Principles and applications. - Elsevier, 2001.
Farrashkhalvat M., Miles J.P. Basic structured grid generation, with an introduction to unstructured grid generation. - ButterworthHeinemann, 2003.
Queen M. Parallel programming in C with MPI and OpenMP. - Mc-Grow Hill, 2004.
Рыбаков А.А. Внутреннее представление и механизм межпроцессного обмена для блочно-структурированнои сетки при выполнении расчетов на суперкомпьютере. // Программы системы: Теория и приложения, №1 (32), 2017, с. 121-134, ISSN 2079-3316.
Рыбаков А.А. Распределение вычислительнои нагрузки между узлами суперкомпьютерного кластера при расчетах задач газовои динамики с дроблением расчетнои сетки. // Международный научныи журнал «Современные информационные технологии и ИТ-образование», Том 12, номер 2, 2016, с. 101-107.
6. Описание интерфеиса пользователя, предназначенного для работы с интеловскои гибриднои архитектурои суперЭВМ (СК), где вместе с процессорами Intel Xeon используются сопроцессоры Intel Xeon Phi. URL http://www.jscc.ru/informat/MVS-10PInter.pdf.
References
1. Blazek J. Computational fluid dynamics: Principles and applications. - Elsevier, 2001.
2. Farrashkhalvat M., Miles J.P. Basic structured grid generation, with an introduction to unstructured grid generation. - ButterworthHeinemann, 2003.
3. Queen M. Parallel programming in C with MPI and OpenMP. - Mc-Grow Hill, 2004.
4. Rybakov A.A. Vnutrennee predstavlenie i mekhanizm mezhprotsessnogo obmena dlya blochno-strukturirovannoi setki pri vypolnenii raschetov na superkomp'yutere. // Programmy sistemy: Teoriya i prilozheniya, №1 (32), 2017, s. 121-134, ISSN 20793316.
5. Rybakov A.A. Raspredelenie vychislitel'noi nagruzki mezhdu uzlami superkomp'yuternogo klastera pri raschetakh zadach gazovoi dinamiki s drobleniem raschetnoi setki. // Mezhdunarodnyi nauchnyi zhurnal «Sovremennye informatsionnye tekhnologii i IT-obrazovanie», Tom 12, nomer 2, 2016, s. 101-107.
6. Opisanie interfeysa pol'zovatelya, prednaznachennogo dlya raboty s intelovskoy gibridnoy arkhitekturoy superEVM (SK), gde vmeste s protsessorami Intel Xeon ispol'zuyutsya soprotsessory Intel Xeon Phi. URL http://www.jscc.ru/informat/MVS-10PInter.pdf.
Поступила: 21.03.2017
Об авторе:
Рыбаков Алексей Анатольевич, кандидат физико-математических наук, ведущий научныи сотрудник , Межведомственный суперкомпьютерныи центр Россиискои академии наук - филиал Федерального государственного учреждения «Федеральный научныи центр Научно-исследовательский институт системных исследовании Россиискои академии наук, [email protected]. [email protected]
Note on the author:
Rybakov Alexey, Candidate of Physical and Mathematical Sciences, Senior research fellow Joint Supercomputer Center of the Russian Academy of Sciences — branch of Scientific Research Institute of System Analysis of the Russian Academy of Sciences, [email protected], [email protected]