Об одном подходе к реализации метода ветвей и границ на распределенной системе

7. Заключение. Итерационные алгоритмы построения расписаний, основанные на разбиении пространства решений на области, позволяют сохранить преимущества итерационных алгоритмов (применимость для широкого класса архитектур ВС, возможность использования имитационных моделей ВС) и уменьшить их вычислительную сложность при сохранении и во многих случаях даже улучшении качества получаемых решений. Разработанный подход также позволяет строить параллельные алгоритмы с низким трафиком обмена между параллельными процессами.

СПИСОК ЛИТЕРАТУРЫ

1. Смелянекий P. J1. Модель функционирования распределенных вычислительных систем // Вестн. Моск. ун-та. Сер. 15. Вычисл. матем. и киберн. 1990. № 3. С. 3-21.

2. Stankovic J. A. et al. Implications of classical scheduling results for real-time systems // IEEE Computer Society Press. 1995. 28. N 26. P. 16-25.

3. Martel В. Preemptive scheduling with release times, deadlines and due times // J. of ACM. 1982. 29. N 3. P. 812-829.

4. Танаев B.C., Гордон В. С., Шафране кий Я. M. Теория расписаний. Одностадийные системы. М.: Наука, 1984.

5. Костенко В. А. Задача построения расписания при совместном проектировании аппаратных и программных средств // Программирование. 2002. № 3. С. 64-80.

6. Костенко В. А., Калашников A.B. Исследование различных модификаций алгоритмов имитации отжига для решения задачи построения многопроцессорных расписаний // Тр. VII Междунар. науч. конф. "Дискретные модели в теории управляющих систем". М.: МАКС Пресс, 2006. С. 179-184.

7. Уоссермен Ф. Нейрокомпьютерная техника: Теория и практика. М.: Мир, 1992.

Поступила в редакцию 04.09.07

УДК 004.023,004.272

А.В. Гуляев, В.С. Махнычев

ОБ ОДНОМ ПОДХОДЕ К РЕАЛИЗАЦИИ МЕТОДА ВЕТВЕЙ И ГРАНИЦ НА РАСПРЕДЕЛЕННОЙ СИСТЕМЕ

Метод ветвей и границ является одним из наиболее эффективных переборных алгоритмов. Однако распараллеливание этого метода сопряжено с трудностями даже для архитектур с общей памятью, не говоря уже о распределенных системах. В статье описывается алгоритм решения задач, решаемых методом ветвей и границ, на распределенной вычислительной системе. Также приводятся результаты испытаний предлагаемого алгоритма на примере задачи игры в шахматы.

1. Введение. Метод ветвей и границ [1, 2] является одним из основных и наиболее эффективных алгоритмов обхода дерева перебора.

Метод ветвей и границ основан на отсечении части дерева перебора с помощью анализа результатов, полученных для уже обработанных вершин дерева. При распараллеливании метода возникают две основные проблемы. Первая — зависимость по данным между различными обрабатываемыми ветвями. Эта зависимость возникает из-за центральной идеи метода ветвей и границ: при обработке ветвей необходимо хранить значение оценки наилучшего решения. Вторая проблема появляется из-за отсечений, которые влекут за собой неодинаковый объем вычислений, выполняемых на различных ветвях. Эта неодинаковость при параллельном исполнении влечет за собой постоянное перераспределение нагрузки между узлами.

При использовании архитектуры с общей памятью удается реализовать достаточно эффективный параллельный обход дерева перебора с отсечением [3], несмотря на некоторую избыточность перебора по сравнению с последовательным методом ветвей и границ. Метод ветвей и границ применяется

также для решения задач на суперкомпьютерных системах без общей памяти, которые значительно легче масштабируются, чем системы с общей памятью. В таких реализациях удается достичь шестидесятикратного увеличения производительности при 512 процессорах [4]. Однако недостатками суперкомпьютерных систем являются сложность наращивания количества узлов (особенно в случае архитектуры с общей памятью) и высокая стоимость.

В значительно меньшей мере эти недостатки свойственны распределенным системам — системам, в которых узлы связаны между собой обычной локальной сетью или через Интернет. Поэтому задача реализации метода ветвей и границ на распределенной системе весьма интересна с практической точки зрения. Однако так как существующие на архитектурах с общей памятью и на суперкомпьютерных архитектурах реализации параллельного метода ветвей и границ [3, 4] основаны на передаче больших объемов информации между процессорами и весьма чувствительны к задержкам при передаче данных, то в распределенной системе на основе обычной сети приходится искать другие, принципиально новые методы эффективного обхода дерева перебора. Кроме того, отличительной особенностью распределенных систем является ненадежность составляющих их узлов и каналов связи, что влечет за собой частые изменения конфигурации системы. Это также накладывает ограничения на алгоритм распределенных вычислений.

В рамках данной работы была разработана и реализована селективная схема параллельного перебора [5], позволяющая эффективно решать задачи, для которых существует алгоритм метода ветвей и границ, на распределенной системе.

2. Построение распределенного алгоритма. Для эффективной работы параллельного алгоритма затраты на пересылки данных должны быть практически ничтожны по сравнению с затратами на вычисления. В случае распределенной системы это требование означает жесткое ограничение как объемов пересылок, так и их частоты. При обходе дерева перебора удается достичь наименьшего количества обменов данными, если разделить дерево перебора на независимые части, каждая из которых обрабатывается отдельным узлом (в узлах в этом случае можно использовать обычный, непараллельный алгоритм ветвей и границ). В этом случае нужна только передача результатов обработки каждого из поддеревьев головному узлу, который на основании полученных данных выделяет лучшую ветвь дерева. Однако полный просмотр дерева перебора весьма неэффективен, и встает вопрос о выборе поддеревьев, которые будут обрабатываться.

Один из способов такого выбора естественным образом вытекает из метода ветвей и границ: вначале обрабатываются все поддеревья, а затем отбрасываются бесперспективные, при этом освободившиеся узлы подключаются к обработке оставшихся поддеревьев. Такой подход подразумевает постоянные отсечения ветвей и перераспределения нагрузки, что приводит к ощутимому объему пересылок; он с успехом применяется на архитектурах с общей памятью, но на распределенной системе его эффективность невысока.

В данной работе был разработан другой подход, названный селективной схемой и позволяющий избегать частых перераспределений нагрузки, но вместе с тем использующий вычислительные ресурсы гораздо более эффективно, чем полный просмотр дерева перебора. Основной идеей этого подхода является рассмотрение только перспективных поддеревьев дерева перебора.

Реализуется это следующим образом.

На первом шаге для корневой вершины дерева (назовем ее вершиной селекции) на одном из узлов системы запускается на непродолжительное время обычный (непараллельный) перебор (например, последовательная реализация метода ветвей и границ для данной задачи), и по результатам этого перебора определяется несколько наиболее перспективных поддеревьев, т. е. поддеревьев, содержащих решения с наилучшими предварительными оценками. Количество таких поддеревьев и их удаленность от корня (т. е. расстояние от корневой вершины дерева перебора до корневых вершин поддеревьев) подбирается для каждой конкретной задачи эмпирически.

На втором шаге для каждого из выбранных поддеревьев (назовем корневые вершины этих поддеревьев вершинами глубокого анализа) запускается непараллельный перебор на отдельном узле системы. В процессе обработки каждый из таких узлов периодически сообщает головному узлу системы уточненную оценку решения для обрабатываемого поддерева, а головной узел системы на основании этих данных выбирает лучшее решение из всех рассматриваемых. Если предположить, что решение всей задачи действительно принадлежит выбранным поддеревьям, то ускорение по сравнению с непараллельной версией налицо: вершины глубокого анализа находятся в дереве перебора ниже корня,

т.е., по сути, каждый из узлов решает более узкую задачу, чем исходная, и быстрее достигает требуемой точности. Вместе с тем за счет того, что рассматриваются не все поддеревья, удаленные от корня на заданное расстояние, а лишь несколько, такая схема по сравнению с полным просмотром дерева перебора требует гораздо меньшего количества вычислительных узлов.

Однако выбор перспективных направлений на первом шаге может оказаться неверным, и поддерево, содержащее решение задачи, может не оказаться среди рассматриваемых. Чтобы нахождение решения всей задачи было возможным и в такой ситуации, на втором шаге для вершины селекции на отдельном вычислительном узле запускается непараллельный перебор (назовем его проверяющим), цель которого — проверять, что наиболее перспективное направление (т. е. направление, содержащее полученное этим проверяющим перебором решение) в данный момент обрабатывается одним из узлов глубокого анализа.

В случае если проверяющий перебор выдает наилучшее на текущий момент времени решение, которое не лежит ни в одном из обрабатываемых поддеревьев, то происходит смена лучших вариантов: наименее перспективное из обрабатываемых поддеревьев снимается с обработки, а освободившийся узел начинает обработку нового поддерева, содержащего только что найденное решение.

Таким образом, селективная схема ускоряет достижение точности для поддеревьев перебора, выбранных на первом шаге, но определение новых лучших вариантов ведется со скоростью одного узла системы. Чем больше поддеревьев рассматривается на втором шаге, тем меньше вероятность того, что на первом шаге была допущена ошибка, и меньше вероятность возникновения смены лучших вариантов. С другой стороны, системе потребуется больше вычислительных узлов.

Важным достоинством селективной схемы является то, что она позволяет использовать уже существующие последовательные алгоритмы ветвей и границ. Модификация последовательного алгоритма может потребоваться лишь для вершин селекции на первом шаге. В вершинах же глубокого анализа никаких изменений в последовательном алгоритме не требуется. Поскольку для многих задач уже имеются реализованные последовательные алгоритмы их решения, то эта особенность имеет важное практическое значение.

Благодаря тому что в каждой вершине глубокого анализа можно, в свою очередь, снова применять селективную схему, схема может быть использована на любом количестве узлов. При этом каждый узел системы, отвечающий за вершину глубокого анализа, передает данные только узлу, отвечающему за соответствующую вершину селекции. И каждый узел, соответствующий вершине селекции, принимает данные только от нескольких узлов, отвечающих за вершины глубокого анализа. Таким образом, селективная схема не содержит "узких мест" по обменам данными: наиболее интенсивные потоки данных проходят через узлы, соответствующие вершинам селекции, а эти узлы связаны лишь с небольшим количеством узлов, равным количеству рассматриваемых перспективных направлений перебора.

3. Реализация и результаты испытаний. Для испытаний описанных методов была выбрана игра в шахматы. Этот выбор был произведен по нескольким причинам. Во-первых, дерево шахматной игры достаточно неравномерно разветвлено, причем ветви значительно различаются по высоте: некоторые варианты развития партии могут длиться десятки ходов, а некоторые отсекаются как невыгодные после первого же хода. На дереве с такой сложной структурой недостатки распараллеливания будут заметнее, чем на деревьях с более регулярным строением. Во-вторых, довольно легко получить объективную оценку эффективности построения распределенной системы по силе игры программы. При этом так как большинство сильнейших современных шахматных программ используют для перебора именно алгоритм ветвей и границ, то полученная распределенная система, увеличивая мощность этого алгоритма, должна играть в шахматы сильнее, чем современные программы, что само по себе представляет интерес.

Описанная селективная схема распределенного перебора была реализована и испытана на 10 узлах. При испытании использовалась следующая схема: рассматривались три лучших хода из корневой вершины и по два лучших хода из вершин первого уровня. Испытания проводились на персональных компьютерах различной мощности, объединенных в локальную сеть. Также для испытаний привлекались два узла, подключенные к системе через Интернет.

В качестве модуля последовательного перебора, запускаемого на узлах системы, использовалась шахматная программа ЫуЬка — одна из сильнейших на сегодняшний день.

Полученная система была испытана на наборе из 211 тестов. Каждый тест представляет собой шахматную задачу (этюд), которую программе предлагается решить за ограниченное время. Для сравнения этот же набор тестов был предложен той же шахматной программе ЫуЬка, работавшей на одном компьютере с двухъядерным процессором. Результаты испытаний приведены в таблице.

Результаты испытаний на наборе тестов

Вычислитель- Время, Число

Система ная мощность, отведенное решенных

позиций/с на тест, с задач

Селективная схема и 1700000 20 112

Rybka

Rybka

Как видно из таблицы, по результатам тестирования распределенная система значительно превзошла программу Rybka, работавшую на одном компьютере. Более того, для достижения результата, аналогичного результату распределенной системы, однокомпьютерной версии потребовалось 137 секунд на тест, т. е. почти в 7 раз больше, чем распределенной системе, использовавшей 10 компьютеров. Другими словами, при использовании 10 узлов было получено почти семикратное ускорение. Для сравнения: при распараллеливании метода ветвей и границ на архитектуре с общей памятью на 10 процессорах скорость увеличилась приблизительно в 8 раз [3].

Был также проведен матч из 10 партий с контролем 30 минут на партию между описанной распределенной системой и той же шахматной программой Rybka, запущенной на двухпроцессорном компьютере, значительно превосходящем по мощности каждый из узлов распределенной системы. Счет в матче составил 9:1 в пользу распределенной системы.

Полученные результаты свидетельствуют об эффективности предложенного метода.

СПИСОК ЛИТЕРАТУРЫ

1. Мину М. Математическое программирование. Теория и алгоритмы. М.: Наука, 1990.

2. Гил л М., Мюррей У., Райт М. Практическая оптимизация. М.: Мир, 1985.

3. Hyatt R. The DTS high-performance parallel search tree algorithm [HTML] (http: //www.cis.uab.edu/hyatt/search.html).

4. Kuszmaul B. Multithreading with active messages in tree-search algorithm [PDF] (http://supertech.csail.mit.edu/papers/thesis-kuszmaul.pdf).

5. Махнычев B.C. Распараллеливание сложных интеллектуальных задач, основанных на обходе дерева перебора // Программные системы и инструменты. № 5. М.: Изд. отд. ф-та ВМиК МГУ, 2005. С. 81-93.

Поступила в редакцию 07.11.07