Голубева Я.В.
Московский государственный университет им. М.В.Ломоносова, г.Москва, бакалавр факультета Вычислительной математики и кибернетики, golubeva.yana.v@gmail.com
РАЗРАБОТКА И ИССЛЕДОВАНИЕ АЛГОРИТМОВ БАЛАНСИРОВКИ НАГРУЗКИ В ПАРАЛЛЕЛЬНОЙ РЕАЛИЗАЦИИ МЕТОДА ВЕТВЕЙ И ГРАНИЦ
КЛЮЧЕВЫЕ СЛОВА
Метод ветвей и границ, параллельная реализация, алгоритмы балансировки нагрузки, анализ производительности алгоритмов.
АННОТАЦИЯ
Статья посвящена проблеме балансировки нагрузки процессоров на примере параллельной реализации метода ветвей и границ. Рассмотрены стратегии балансировки нагрузки, разработан адаптивный алгоритм балансировки нагрузки с фиксированными и изменяемыми параметрами, проведено экспериментальное исследование двух алгоритмов балансировки, проанализированы параллельные ускорение, эффективность и масштабируемость исследованных алгоритмов. Выявлены причины потерь производительности.
Одним из основных методов решения задач глобальной оптимизации является метод ветвей и границ. Идея этого метода заключается в том [1], что множество допустимых решений разбивается на подмножества, и те подмножества (подзадачи), в которых оптимальных решений не существует, отбрасываются. Метод ветвей и границ имеет древовидную структуру, где вершины - это полученные в результате разбиений подзадачи (см. рис. 1). Вершина, отмеченная буквой Т -это отбрасываемая вершина, а вершины, отмеченные буквой К - это задачи-кандидаты, которые могут привести к оптимальному решению.
Такая структура метода создает благоприятные условия для его параллельной реализации, так как поиск оптимальных решений в отдельных ветвях этого дерева может производиться независимо на разных вычислительных узлах. В то же время при параллельной реализации возникают определенные сложности. В частности, возникает проблема балансировки нагрузки. Она заключается в том, что невозможно статически равномерно распределить нагрузку между процессорами, так как дерево является неоднородным и его структура не известна заранее. Это может привести к тому, что в определенный момент времени одни процессоры уже закончат выполнять разветвления и будут простаивать, а другие всё еще будет продолжать решать выделенные им подзадачи.
Рис. 1. Древовидная структура Метода ветвей и границ Таким образом, возникает задача балансировки нагрузки - перераспределения
вычислительной нагрузки между параллельно работающими процессорами. Актуальность данной задачи подтверждается тем, что в современных вычислительных устройствах число процессоров растет, а чем больше процессоров - тем сложнее балансировать их нагрузку.
Краткий обзор методов балансировки нагрузки
В работах [2,3] рассмотрен достаточно простой алгоритм балансировки нагрузки. Балансировка нагрузки в этом алгоритме централизована, так как среди всех рабочих процессов (РП) выделен управляющий процесс (УП). На рис. 2 изображена упрощенная схема работы алгоритма.
РП1
УП
РП2
исключенная „ ,, пересылка
подзадача (р] рекорд I ) /* разветвление /
Ч^1 г V-/ подзадача г г вершины
Рис. 2. Схема стандартного алгоритма параллельной балансировки нагрузки
На начальном этапе УП выполняет заранее определенное количество разветвлений, генерируя некоторое количество подзадач, заведомо большее, чем количество рабочих процессов. Далее сгенерированные подзадачи распределяются между рабочими процессами, которые решают их до конца. Если рабочий процесс решил задачу, а на управляющем процессе еще имеются другие подзадачи - то освободившийся рабочий процесс получает новую подзадачу для решения. Полученные в процессе решений рекорды - наилучшие найденные решения - РП отправляет УП, который, сопоставляя полученные результаты, выбирает оптимальный.
В работе [4] рассматриваются 2 параллельных метода обхода дерева, которые можно использовать в алгоритме централизованной балансировки нагрузки:
• Метод назначаемых поддеревьев - заключается в разбиении дерева на большое число «маленьких» поддеревьев и назначении их для обхода в порядке освобождения процессов. На первом этапе управляющий процесс осуществляет обход дерева в ширину до тех пор, пока число вершин в очереди не достигнет заранее заданного числа, заведомо намного большего, чем число процессоров в системе. На втором этапе управляющий процесс рассылает рабочим процессам вершины из очереди, и они осуществляют их обход в глубину;
• Метод выделяемых поддеревьев - отличается от предыдущего тем, что разбиение на подзадачи происходит не сразу, а по мере выполнения обхода дерева. На первом этапе управляющий процесс осуществляет обход дерева в ширину до тех пор, пока число вершин в очереди не достигнет заранее заданного числа, равного или немного большего, чем число процессоров в системе. На втором этапе управляющий процесс рассылает рабочим процессам вершины из очереди, и они осуществляют их обход в глубину. По окончании обхода процесс освобождается. Для его загрузки выбирается поддерево, обход которого в этот момент ведется одним из процессов, и в нем выделяется поддерево, которое передается для обхода освободившемуся процессу.
В работе [5] рассматривается статическая и динамическая стратегии балансировки нагрузки. В обеих стратегиях сначала генерируется некоторое число подзадач. Статическая
стратегия подразумевает хранение всех сгенерированных и нерешенных подзадач в общем рабочем пуле. Каждый процессор последовательно решает свою подзадачу до конца, используя свой локальный рабочий пул. Динамическая стратегия подразумевает обмен подзадачами между локальными рабочими пулами во время выполнения программы. Авторы выделяют 3 класса динамических стратегий:
• Стратегия балансировки по запросу (Strategy on request) - процессор с пустым (или с почти пустым) рабочим пулом отправляет запрос другому процессору на получение новых подзадач. Запрос может быть одобрен - в этом случае подзадачи пересылаются из одного рабочего пула в другой - или отклонен;
• Балансировка без запроса (Strategy without request) - процессоры рассылают часть своих подзадач другим процессорам без запроса с их стороны;
• Комбинированная стратегия (Combined strategy) - комбинация двух предыдущих стратегий.
В работе [6] описана общая модель динамической балансировки нагрузки, которая состоит из четырех этапов:
• Оценка загрузки процессора (Processor Load Evaluation) - на этом этапе производится оценка нагрузки на каждом процессоре в системе и выявление разбалансированности;
• Определение выгоды балансировки нагрузки (Load Balancing Profitability Determination) - на этом этапе определяются накладные расходы, которые повлечет балансировка нагрузки, и принимается решение, будет ли выгодна балансировка нагрузки в данный момент времени;
• Стратегия перемещения подзадач (Task Migration Strategy) - здесь определяются источники и получатели подзадач для решения;
• Стратегия выбора подзадач (Task Selection Strategy) - на заключительном этапе происходит отбор и отправка подзадач от процессора с высокой нагрузкой процессору с низкой нагрузкой.
В данной модели авторы выделяют следующие 5 стратегий балансировки нагрузки:
1. Градиентная модель (The Gradient Model). Стратегия заключается в том, что процессоры с низкой нагрузкой оповещают другие процессоры о своем статусе, и перегруженные процессоры отвечают отправкой некоторого числа подзадач соседним, менее нагруженным процессорам в системе. Подзадачи перемещаются до тех пор, пока нагрузка соседних процессоров меньше нагрузки процессора-отправителя;
2. Метод распределения, инициированного отправителем (Sender Initiated Diffusion). Стратегия заключается в том, что процессор, при получении информации о том, что среди соседних процессоров присутствуют такие, нагрузка которых опустилась ниже некоторого порога, инициирует отправку излишков малонагруженным процессорам;
3. Метод распределения, инициированного получателем (Receiver Initiated Diffusion). Стратегия отличается от предыдущей тем, что отправку излишков инициируют малонагруженные процессоры;
4. Метод иерархической балансировки (Hierarchical Balancing Method). В этой стратегии процессоры выстраиваются в дерево, которое подвергается балансировке нагрузки. Балансировка вызывается на разных уровнях получением сообщения о разбалансированности между процессорами, находящимися одним уровнем ниже. Если степень разбалансированности превышает некоторый порог, то на этом уровне происходит передача излишка подзадач от более нагруженного процессора к менее нагруженному;
5. Метод измерений (The Dimension Exchange Method). Стратегия заключается в том, что N процессоров представляется в виде logN измерений. Сначала балансируются между собой пары процессоров, находящиеся в первом измерении (это такие процессоры, у которых адреса отличаются только последним значащим битом). Далее балансируются между собой пары процессоров, находящиеся во втором измерении и так далее, пока каждый процессор не сбалансирует свою нагрузку со всеми своими соседями.
Исследование алгоритмов балансировки нагрузки
Для исследования был выбран алгоритм, предложенный в работах [2,3], приведенный в начале обзора. Эксперименты проводились с помощью BNB-Simulator [7] и BNB-Visualizer [8]. Эти приложения позволяют проводить исследования на эмуляторе параллельной системы.
На рис. 3 представлен график загруженности процессоров, полученный с помощью ВЫВ-Simulator и ВЫВ-^иа^ег. На горизонтальной оси отложены единицы времени, на вертикальной -число процессоров. В каждую единицу времени показано, сколько процессоров занято (отмечены синим) и сколько простаивает (отмечены зеленым), ниже рассчитаны параллельное ускорение и эффективность.
SnBVisualizer
File Нё|р
Compute trace Plot visualization Processors table visualization Data exchange visualization statistics PntOASOKungv
■ Peak performance ■ Real performance
50 q 40 -3D ■ 20 -3 to -3 о J
0 3000
Speedup is 34.3062 Efficiency is 0.686124
Рис. 3. График загруженности процессоров при выполнении стандартного алгоритма параллельной
балансировки нагрузки
На данном графике заметен существенный недостаток исследуемого алгоритма: одни рабочие процессы уже завершили расчеты и простаивают, ожидая тех, кому достались более сложные подзадачи для решения. Также на графике отчетливо виден еще один минус данного алгоритма - достаточно много времени занимают последовательные действия на первоначальном этапе.
РП1
УП
РП2
„ _ исключенная ^ „ пересылка
О подача © рекорд О подзадача / Р»ветвление / вершИны
Рис. 4. Схема адаптивного алгоритма параллельной балансировки нагрузки
Чтобы преодолеть эти недостатки, реализован улучшенный вариант рассмотренного алгоритма - адаптивный алгоритм балансировки нагрузки в двух вариантах: с фиксированными и с изменяемыми параметрами.
Основное отличие адаптивного алгоритма заключается в том, что рабочий процесс не всегда решает полученную подзадачу до конца, а выполняет заданное количество ветвлений (определяемое параметром Т) и отправляет полученные рекорды и подзадачи управляющему процессу.
На рис. 4 изображена упрощенная схема его работы.
Таким образом, у управляющего процесса отпала необходимость делать большое
количество ветвлений на этапе первоначальных итераций. Во избежание переполнения памяти УП число вершин на нем регулируется пороговыми значениями - М и т и управляющим параметром S, определяющим количество подзадач, отправляемых рабочими процессами управляющему процессу. Если на управляющем процессе число подзадач становится больше или равно М - то параметр S устанавливается равным нулю, и рабочие процессы отправляют УП только рекорды, если они образовались в процессе вычислений. Когда на управляющем процессе остается меньше т вершин - устанавливается значение параметра S равное изначально заданной константе So, и отправка подзадач управляющему процессу возобновляется.
Однако, проблема несбалансированности на завершающем этапе расчета всё еще остается, как видно из графика загрузки процессоров, изображенного на рис. 5. Тем не менее, эффективность алгоритма возрастает в связи сокращением времени выполнения последовательных действий (1000 единиц времени против 2000 в предыдущем алгоритме).
Вп BVisualtzcr
file Help
Computetrice Plot visualization Processors table visualization U3ta exchange visualization statistics proceiiors uwge
■ Peak performance ■ Real performance
40 30
0 1 ООО 2 ООО 3 ООО 4 ООО 5 ООО Б ООО 7 ООО
Speedup is 35.3002 Efficiency is 0.70600a
Рис. 5. График загруженности процессоров при выполнении адаптивного алгоритма параллельной балансировки нагрузки с фиксированными параметрами
Р
Для решения обозначенной проблемы адаптивный алгоритм был модернизирован -параметры T и S стали изменяемыми. Параметр S стал зависеть от числа уже имеющихся вершин на УП и обеспечил постепенное заполнение его памяти. Параметр T также стал зависеть от числа вершин на УП. Если количество последних становится меньше числа рабочих процессов - то параметр T сокращается в 10 раз и обеспечивает более частый обмен вершинами между управляющим и рабочими процессами.
GnBVisualizer — + л
File Help
Compute trace Plot visualization Processors table visualization Data exchange visualization Statistics
Peak performance ■ Real performance
2 000
Л 000
6 000
8 000
10 000
D
Speedup is 26,9981 Efficiency is 0.Б39961
Рис. 6. График загруженности процессоров при выполнении адаптивного алгоритма параллельной балансировки нагрузки с изменяемыми параметрами. Пример падения производительности, вызванного увеличением накладных расходов на коммуникации
Интересно отметить, что на начальных этапах исследования была предпринята попытка сохранять малые значения числа ветвлений РП на протяжении всего времени работы программы. Это привело к увеличению накладных расходов на осуществление коммуникаций между УП и РП, что можно увидеть на графике загрузки процессоров, изображенном на рис. 6.
«Провалы» демонстрируют перегрузку УП - он не успевает обеспечить подзадачами все РП.
В ходе проведения дальнейших экспериментов было установлено, что пока на управляющем процессе количество задач достаточно для обеспечения нагрузки всех рабочих процессов - нет смысла часто их прерывать. Необходимость уменьшения параметра Т возникает при дефиците подзадач на управляющем процессе.
График, изображенный на рис. 7, подтверждает справедливость данного замечания: загруженность процессов на заключительном этапе увеличилась, увеличилась и эффективность данного алгоритма по сравнению с предыдущими.
BnBVisualizer — -t-
File Help
Compute trace ||at visualization Processes table visualization Data exchange visualization Statistics
Processors usage: 50 -J
40 -
ЗОН 20-:
10 -Z
0-
2 000
л 000
6 000
8 000
Speedup is 37.6601 Efficiency is 0.753202
Рис. 7. График загруженности процессоров при выполнении адаптивного алгоритма параллельной балансировки нагрузки с изменяемыми параметрами. Пример правильно подобранных параметров
D
■Стандартный алгоритм
балансировки
■ Ал го р итм а да пти анс й балансировки с фиксированными параметрами
Алгоритм адаптивной балансировки с изменяемыми
пара метрами
Количество процессоров
Рис. 8. График масштабируемости
Сравним рассмотренные алгоритмы на разных количествах процессоров и разных размерностях задачи. Было произведено исследование алгоритмов на 16, 50, 100 и 500 процессорах. Результат показан на графике масштабируемости (см. рис. 8).
Алгоритм считается масштабируемым, если существует такое соотношение между числом процессоров и размерностью решаемой задачи, при котором эффективность остается постоянной. При относительно небольшом числе процессоров все алгоритмы масштабируемы. Однако, на 500 процессорах эффективность всех алгоритмов заметно снижается. Меньше всего падение эффективности на 500 процессорах отмечено у алгоритма адаптивной балансировки нагрузки с изменяющимися параметрами.
Заключение
В данной статье рассмотрены некоторые алгоритмы балансировки нагрузки в параллельной реализации метода ветвей и границ, проведено экспериментальное исследование одного из предложенных алгоритмов и его улучшение, которое позволило повысить производительность.
На дальнейших этапах работы будет продолжено изучение алгоритмов балансировки нагрузки. Планируется реализация других алгоритмов балансировки нагрузки (в частности, перечисленных выше), их исследование (как на эмуляторе параллельной системы, так и на реальной системе), сравнение эффективности и анализ масштабируемости.
Литература
1. Сигал И.Х., Иванова А.П. Введение в прикладное дискретное программирование. М.: Физматлит, 2002.
2. М.А.Посыпкин, Архитектура и программная организация библиотеки для решения задач дискретной оптимизации методом ветвей и границ на многопроцессорных вычислительных комплексах/ / Труды ИСА РАН, Т. 25, с. 18-25.
3. Посыпкин М.А., Сигал И.Х. Исследование алгоритмов параллельных вычислений в задачах дискретной оптимизации ранцевого типа // Ж. вычисл. матем. и матем. физ. 2005. Т. 45. № 10. С. 1801-1809.
4. Н. Е. Тимошевская, Параллельные методы обхода дерева, Матем. моделирование, 2004, том 16, номер 1, 105-114.
5. Gendron B., Crainic T.G., Parallel Branch-and-Bound Algorithms: Survey and Synthesis// Operations Research, Vol. 42, No. 6 (Nov. - Dec., 1994), 1042-1066.
6. Willebeek-LeMair, M.H., Reeves, A.P., Strategies for dynamic load balancing on highly parallel computers// Parallel and Distributed Systems, IEEE Transactions on, Vol. 4, No. 9, September 1993, 979-993.
7. Andrey Fomin, Yuri Orlov, Mikhail Posypkin, Izrael Sigal, Using Simulation to Study Performance of Parallel Tree Search Schedulers / / Proceedings of optimization and applications (0ptima-2015) Petrovac, Montenegro, September 2015, p. 67.
8. Ю. В. Орлов, Среда комплексного анализа производительности алгоритмов балансировки в параллельном методе ветвей и границ// International Journal of Open Information Technologies ISSN: 2307-8162 vol. 3, no. 9, 2015, http://injoit.org/index.php/j1/article/view/228.