УДК 681.3
А.В. Калашников, В.А. Костенко
ИТЕРАЦИОННЫЕ АЛГОРИТМЫ ПОСТРОЕНИЯ РАСПИСАНИЙ, ОСНОВАННЫЕ НА РАЗБИЕНИИ ПРОСТРАНСТВА РЕШЕНИЙ НА ОБЛАСТИ
(лаборатория вычислительных комплексов факультета ВМиК, e-mail: [email protected])
В работе рассмотрены итерационные алгоритмы построения многопроцессорных расписаний. Итерационные алгоритмы позволяют решать задачи построения расписаний для широкого класса архитектур вычислительных систем, однако имеют большую вычислительную сложность. Для снижения сложности итерационных алгоритмов предложен подход к их построению, основанный на разбиении пространства корректных расписаний на непересекающиеся области: предложен алгоритм построения областей, введены операции преобразования расписаний, замкнутые внутри областей, разработана схема отсечения областей. Разработанный подход также позволяет строить параллельные алгоритмы с низким трафиком обмена между параллельными процессами.
1. Введение. Общая задача построения статических многопроцессорных расписаний заключается в распределении множества фиксированных работ (процессов) между заданными ресурсами (процессорами) и упорядочении этих работ таким образом, чтобы оптимизировать желаемую меру эффективности расписания и выполнить заданные ограничения, которые обеспечивают корректность полученного расписания. В данной работе мы предполагаем, что процессы, подлежащие планированию, и зависимости между ними заданы предварительно.
В качестве модели прикладной программы будем использовать частный случай инварианта поведения программы, предложенного в работе [1], который является одной историей поведения программы для конкретного набора входных данных. Программа задается набором взаимодействующих процессов. Точками взаимодействия каждый процесс разбивается на упорядоченный набор рабочих интервалов. Модель программы может быть представлена размеченным ацикличным ориентированным графом Н = {Р, -<}, где Р — множество вершин, соответствующих рабочим интервалам, -< — множество дуг графа, отражающее взаимодействие рабочих интервалов.
Расписание (в дальнейшем будем обозначать через HP) определено, если для каждого рабочего интервала заданы привязка и порядок. Привязка — это всюду определенная на множестве рабочих интервалов функция, которая задает распределение рабочих интервалов по процессорам. Порядок (будем обозначать через -<нр) задает ограничения на последовательность выполнения рабочих интервалов и является отношением частичного порядка, удовлетворяющим условиям ацикличности и транзитивности. Отношение порядка на множестве рабочих интервалов, распределенных на один и тот же процессор, является отношением полного порядка.
На расписание HP накладываются условия корректности: 1) каждый рабочий интервал должен быть назначен на один процессор; 2) частичный порядок, заданный в Н, сохранен в HP: -<С<нр, где Чдр — транзитивное замыкание отношения -<#р; 3) расписание HP должно быть беступиковым (-<нр ациклично); 4) все рабочие интервалы одного процесса должны быть назначены на один и тот же процессор. Множество корректных расписаний будем обозначать HP*.
Временная диаграмма выполнения программы. Временная диаграмма выполнения программы задана, если для каждого рабочего интервала заданы процессор, на котором он выполняется, и значения времени начала и завершения выполнения этого рабочего интервала.
Задачу построения расписаний будем рассматривать в следующем варианте постановки. Заданы: модель программы Н = (Р, -<) и функция вычисления времени выполнения расписания HP на фиксированной вычислительной системе (в дальнейшем ВС) f(HP). Требуется определить расписание выполнения программы HP € HP*, причем время выполнения расписания должно быть минимальным (Т = f{HP) —> min). Функция вычисления времени выполнения расписания может быть задана как в аналитическом виде, так и в виде имитационной модели (могут быть использованы имитационные модели ВС различной степени детализации, получающие соответственно различную точность времени выполнения расписания).
Основными особенностями рассмотренной задачи построения расписания являются следующие: 1) задача является NP-трудной; 2) для большинства архитектур ВС целевая функция для оценки
качества полученного решения является вычислимой функцией, т. е. задается в виде имитационной модели; 3) задача построения расписаний относится к классу задач комбинаторной оптимизации.
2. Итерационные алгоритмы построения расписаний. Можно выделить три укрупненных класса алгоритмов, различающихся по используемым методам построения расписаний: алгоритмы, основанные на нахождении максимального потока в транспортной сети [2, 3]; конструктивные алгоритмы (например, на основе метода ветвей и границ, метода динамического программирования, жадных стратегий [2, 4]); итерационные алгоритмы (например, генетические алгоритмы, алгоритмы имитации отжига).
Алгоритмы, основанные на нахождении максимального потока в транспортной сети, и конструктивные алгоритмы работают с временной диаграммой. Данные алгоритмы на каждом шаге достраивают временную диаграмму, размещая в нее одну из работ. Они строятся для конкретной математической модели ВС. Итерационные алгоритмы позволяют работать с различными формами представления расписаний, а не только с временной диаграммой. Общую схему этих алгоритмов можно представить следующим образом.
1. Задание начального приближения расписания.
2. Построение временной диаграммы или вычисление значения целевой функции.
3. Анализ временной диаграммы или полученного значения целевой функции.
4. Преобразование расписания.
5. Если критерий останова не достигнут, то переход к п. 2.
В этих алгоритмах процедуры построения временной диаграммы и преобразования расписания разделены. Это позволяет использовать точные модели ВС (вплоть до эмуляторов) и не накладывает таких жестких ограничений на классы допустимых архитектур ВС, как для алгоритмов первых двух классов.
Преобразование расписания осуществляется с помощью функционально полной базовой системы операций преобразования расписаний О = {01,02} [5], где 01(рг, Дто, Д^, с) — операция изменения привязки рабочего интервала Рг, которая переносит р^ с процессора Дто на процессор Д^ (порядковый номер рабочего интервала становится равным с); 02 (рь с) — операция изменения порядка выполнения рабочих интервалов на процессоре Дто таким образом, что порядковый номер рабочего интервала Рг становится равным с.
В работе [5] показано, что для базовой системы операций справедливо следующее свойство.
Свойство 1. Если НР и НР' — произвольные корректные варианты расписания (НР,НР' € € НР*), то существует конечная цепочка операций {О^к^^ = 1, О* € {01, Ог), переводящая расписание НР в НР', такая, что все К промежуточных расписаний являются корректными и К ^ 2Ж, где N — количество рабочих интервалов.
Для представления расписания используется ярусная форма максимальной высоты [6], т.е. каждый рабочий интервал кроме привязки и порядка характеризуется также и номером яруса, на котором он находится. Ярусная форма максимальной высоты обладает следующими свойствами: на каждом ярусе находится только один рабочий интервал, и для любого рабочего интервала р все его предшественники находятся на более высоких ярусах, чем р. Операции преобразования расписания 01 и 02 применяются к ярусной форме максимальной высоты, причем операция 01 сохраняет ярус рабочего интервала при изменении его привязки, при этом после операции 01 получившееся расписание всегда корректно.
Для многих ХР-трудных задач наилучшие решения были получены итерационными алгоритмами (например, алгоритмами имитации отжига, генетическими алгоритмами [6, 7]), однако недостатком этих алгоритмов является их высокая вычислительная сложность. Одним из подходов к уменьшению вычислительной сложности итерационных алгоритмов является разбиение пространства решений на непересекающиеся области и последующее отсечение областей, заведомо не содержащих оптимального решения.
Построение итерационного алгоритма, основанного на разбиении пространства корректных расписаний на области, требует решения следующих проблем.
1. Разбиение исходного пространства корректных решений на несколько непересекающихся областей, дающих в объединении все пространство.
2. Выбор начального корректного решения в каждой из областей.
3. Введение операций преобразования решения таким образом, чтобы операции были замкнуты в каждой из областей.
4. Выбор схемы отсечения "неперспективных" областей в ходе работы алгоритма.
Для задач комбинаторной оптимизации решение этих проблем существенно зависит от конкретной задачи, так как структура пространства решений в каждом случае различна.
3. Разбиение пространства корректных расписаний на непересекающиеся области.
Разбиение множества всех возможных решений НР* задачи построения расписаний на области III). НР2,..., /// '/, должно удовлетворять следующим условиям:
1) НР1 и НР2 и ... и НРк = НР*;
2) III) П ЯР, = 0, i ф у,
3) введенные в НР* операции преобразования должны быть замкнутыми в областях II 1\. НР2,... ... , III ), и сохранять свойство 1.
Разбиение исходного пространства решений на области осуществляется введением дополнительной разметки графа модели поведения прикладной программы Н в каждой области. Для этого фиксируются два рабочих интервала, не связанные транзитивным отношением порядка, а область можно разбить на три непересекающиеся подобласти следующим образом:
- в первой подобласти рабочие интервалы выполняются на разных процессорах;
- во второй рабочие интервалы обязаны выполняться на одном процессоре, причем второй рабочий интервал выполняется после первого;
- в третьей подобласти рабочие интервалы обязаны выполняться на одном процессоре, причем первый рабочий интервал выполняется после второго.
Каждой из областей III ). на которые разбивается множество НР*, можно поставить в соответствие граф //, = (Р, -< и -<',</, К). Множество вершин Р соответствует рабочим интервалам. Дугам -< и -<' отвечают связи, определяющие взаимодействия между рабочими интервалами. Все связи -<, присутствующие в //. сохраняются в //,. Отношение -<' задает дуги, определяющие дополнительные ограничения на порядок выполнения рабочих интервалов в каждой области. Отношение -< и -<' транзи-тивно и ациклично. Отношения «/и К соответствуют ограничениям на привязку рабочих интервалов: два рабочих интервала Рг и р^ связаны отношением ,1, (рг,рь) € </, если эти рабочие интервалы выполняются на одном процессоре; два рабочих интервала Рг и р^ связаны отношением К, (рг,рь) € К, если эти рабочие интервалы выполняются на разных процессорах.
Отношения «/и К симметричны и ,1ПК = 0. Отношение J транзитивно. Все метки, присутствующие в графе //. сохраняются в графе //,.
Алгоритм разбиения исходного пространства решений на области. Введем следующие обозначения: РрГе(1 и -<рТеА — множества вершин и дуг графа //. соответствующие рабочим интервалам, которые предшествуют рабочему интервалу р, в том числе и транзитивно; Р^пс и -<%пс — множества вершин и дуг графа, соответствующие рабочим интервалам, которые следуют за рабочим интервалом р, в том числе и транзитивно; Р^ — множество рабочих интервалов, не связанных с рабочим интервалом р отношением порядка -< и -<', в том числе и транзитивно. Для разбиения пространства на подобласти используется следующий алгоритм.
1. Задать количество областей разбиения.
2. В список графов поместить граф, соответствующий всему пространству расписаний: Н = = (Р, ^,0,0).
3. Выбрать первый граф Н = (Р, У, К) из списка и построить три графа, соответствующие трем непересекающимся областям следующим образом.
3.1. Установить множество Р равным множеству Р всех рабочих интервалов.
3.2. Выбрать из Р рабочий интервал р^ для которого критический путь в графе (Ррге(1, К)
минимален, и удалить р^ из множества Р. Если Р пусто, то закончить алгоритм, сообщив о невозможности продолжить разбиение.
3.3. Для выбранного рабочего интервалар^ построить множество /''¡!. Если построенное множество пусто, то перейти к п. 3.2 и выбрать следующий рабочий интервал из Р. Если 1'Ц/ не пусто, то выбрать из него рабочий интервал р^, соответствующий минимальному критическому пути в графе (Рапс; апс) Л, К).
3.4. Построить графы П\. IIj. Пл. соответствующие областям II НР2, НР3:
Hi = (Р, < U (pupj), J U (pupj) U (pj,pi), К), IIj = (Р, < и tPj,Pi), J и (jPi,Pj) и (pj,pi), к), #3 = (Р, U (pi,pj) и (pj,pi)).
4. Удалить граф Н из списка и добавить три построенных графа II\. IIj. Н3 в конец списка. Если количество графов в списке меньше заданного количества областей разбиения, то перейти к п. 3.
Данный алгоритм позволяет так осуществлять разбиение на области, что критические пути в графах областей разбиения будут существенно отличаться между собой за счет предложенного способа выбора рабочих интервалов, для которых вводятся отношения -<', J ш К, что позволяет отбросить большое количество областей без запуска в них алгоритма построения расписаний.
4. Операции преобразования расписания внутри области. Алгоритмы выполнения операций 0\ и О2 должны обеспечивать их замкнутость внутри области. Введем следующие обозначения: Jp = {pi € Р\ (Pi,Pj) € J} — множество рабочих интервалов, которые должны выполняться на одном процессоре с рабочим интервалом р; Кр = |J {р^ G Р\ (pi,p') € К} — множество рабочих интервалов,
p'eJp
для которых запрещено выполнение на одном процессоре с рабочим интервалом р; SP — множество всех процессоров; SP^P — процессор, на который распределен рабочий интервал р в расписании HP. Приведем алгоритм выполнения операции 0\.
1. Случайным образом выбирается рабочий интервал р.
2. Строится множество процессоров SP', на которые возможно перенести рабочий интервал р: SP' = SP\ U SPpHP.
р'еКр
3. Случайным образом выбирается процессор из SP', и на него переносятся все рабочие интервалы из множества Jp.
Алгоритм выполнения операции О 2 следующий.
1. Случайным образом выбирается рабочий интервал р.
2. Определяется допустимый диапазон ярусов [L\ow +1, Lhigh — !]• Этот диапазон выбирается таким образом, что рабочий интервал р может быть перенесен на любой ярус из найденного диапазона.
3. Ярус из допустимого диапазона выбирается случайным образом, и на него переносится рабочий интервал р.
Сложность алгоритмов применения операций 0\ и О2 равна O(N). Так как операции преобразования в области совпадают с операциями преобразования на всем пространстве решений, но применяются к графам с дополнительными дугами, то сохраняется свойство 1.
5. Отсечение областей. Основной характеристикой области является минимальное теоретически возможное время выполнения расписания в этой области. Этот минимальный теоретический предел определяется критическим путем в графе Gi = {Р,< U <'), соответствующем г-ш области разбиения. Независимо от числа процессоров в ВС время выполнения расписания в области не может быть меньше критического пути в соответствующем графе.
6. Результаты исследований. Было проведено исследование эффективности алгоритма имитации отжига. Алгоритм был построен на основе предложенного способа разбиения множества решений на области. Для исследования использовались графы модели прикладной программы с количеством рабочих интервалов от 100 до 250, с количеством процессов от 40 до 90. По степени связности были выделены три класса графов: малое количество связей (K/N ^ 1,2); среднее количество связей (1,2 < K/N ^ 1,6); большое количество связей (K/N > 1,6). Здесь К — число дуг в графе, N — число вершин. Алгоритм, использующий разбиение на области, тратит в 2-3 раза меньше времени на нахождение расписаний для графов с высокой связностью с сохранением качества решений по сравнению с алгоритмами, не использующими разбиение на области. Для графов со средней и низкой связностью этот показатель ниже и составляет в среднем 1,3. На графах с высокой связностью критические пути графов областей различаются сильнее, чем на графах с низкой связностью. Это позволяет исключить из рассмотрения большее количество областей без запуска в них алгоритма.
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
А.В. Гуляев, В.С. Махнычев
ОБ ОДНОМ ПОДХОДЕ К РЕАЛИЗАЦИИ МЕТОДА ВЕТВЕЙ И ГРАНИЦ НА РАСПРЕДЕЛЕННОЙ СИСТЕМЕ
(кафедра автоматизации систем вычислительных комплексов факультета ВМиК, e-mail: [email protected], [email protected])
Метод ветвей и границ является одним из наиболее эффективных переборных алгоритмов. Однако распараллеливание этого метода сопряжено с трудностями даже для архитектур с общей памятью, не говоря уже о распределенных системах. В статье описывается алгоритм решения задач, решаемых методом ветвей и границ, на распределенной вычислительной системе. Также приводятся результаты испытаний предлагаемого алгоритма на примере задачи игры в шахматы.
1. Введение. Метод ветвей и границ [1, 2] является одним из основных и наиболее эффективных алгоритмов обхода дерева перебора.
Метод ветвей и границ основан на отсечении части дерева перебора с помощью анализа результатов, полученных для уже обработанных вершин дерева. При распараллеливании метода возникают две основные проблемы. Первая — зависимость по данным между различными обрабатываемыми ветвями. Эта зависимость возникает из-за центральной идеи метода ветвей и границ: при обработке ветвей необходимо хранить значение оценки наилучшего решения. Вторая проблема появляется из-за отсечений, которые влекут за собой неодинаковый объем вычислений, выполняемых на различных ветвях. Эта неодинаковость при параллельном исполнении влечет за собой постоянное перераспределение нагрузки между узлами.
При использовании архитектуры с общей памятью удается реализовать достаточно эффективный параллельный обход дерева перебора с отсечением [3], несмотря на некоторую избыточность перебора по сравнению с последовательным методом ветвей и границ. Метод ветвей и границ применяется