Назад в библиотеку

Оптимизация архитектуры многопроцессорных вычислительных систем на базе адаптивного генетического алгоритма

Автор: М.И. Ахметов

Аннотация


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

1. Введение

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

Результаты распределения загрузки определяют такие важнейшие показатели эффективности вычислительного процесса, как длительность ТИ исполнения алгоритма, выраженную в тактах макрокоманд, и среднюю загрузку процессоров ω. Использование этих показателей позво-ляет формализовать задачу выбора оптимального варианта распределения загрузки между процессорами многопроцессорной ВС(МВС). Суть данной задачи дискретной оптимизации заключается в поиске варианта распределения загрузки, удовлетворяющего условиям ТИ → min и ω → min. Как известно такие задачи математического программирования относятся к классу NP-сложных. Отсюда следует, что при использовании детерминированных методов поиска, как методов первой группы – методов отсечения, так и методов второй группы – методов частичного перебора, происходит экспоненциальный рост объема вычислений при увеличении числа анализируемых вариантов[1]. В связи с этим особую актуальность приобретают методы глобального случайного поиска, копирующие механизмы естественной эволюции в природе – т.н. генетические алгоритмы[2]. Специфика подобных алгоритмов заключается в том, что они являются очень гибкими и успешно справляются с широким кругом проблем, особенно в тех задачах, где не существует общеизвестных алгоритмов решения или высока степень априорной неопределенности. Поиск оптимального варианта распараллеливания предлагается осуществлять с привлечением специально разработанного адаптивного генетического алгоритма (ГА).

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

2. Формирование архитектуры многопроцессорной вычислительной системы с оптимальной загрузкой процессоров

2.1 Разработка алгоритма диспетчеризации вычислительных процессов

Суть предлагаемого алгоритма сводится к следующим положениям[3]. Обозначим через O={1,2...,r} множество номеров операций, составляющих вычислительный алгоритм. Разобьем это множество на совокупность подмножеств Oi={pi+1,...,pi+di} (i=1,2,...f)  номеров операций, допускающих параллельное выполнение для i-го отсчета времени. Здесь f – конвейерность вычислительного алгоритма. Иначе говоря, Oi – i-я группа параллельных операций.

Пусть в состав МВС входит s(1sr) процессоров. Тогда каждая группа параллельных операций алгоритма может быть реализована данной совокупностью процессоров за  (ki+1) машинных тактов выполнения макрокоманд, если di не делится нацело на s, или за ki тактов в противном случае. Здесь  ki=]di/s[ – число полных тактов(]di/s[ означает целую часть дроби di/s), на которых загруженными оказываются все s процессоров. Если di не делится нацело на s, то последний (ki+1)-й такт этой последовательности временных тактов является неполным, т.е. на нем загруженными оказываются только (di-ski) −  процессоров.

Выделим теперь в составе каждого из подмножеств Oi такие совокупности номеров операций, которые реализуются некоторым j-м(j=1,2...s) процессором:  Oij = {li,1j,li,2j,... }. Введенные таким образом совокупности номеров будут состоять из (ki+1) элемента, если j-й процессор оказывается загруженным на последнем (неполном) временном такте, и из ki элементов - в противном случае. Подобное разбиение подмножеств должно удовлетворять двум условиям:


1.

– это условие означает, что все операции i-й группы параллельных операций  должны быть выполнены.

2.

каждая  операция  выполняется  только  на  одном  из  процессоров (l,k=1,2,...s).

Каждому варианту распределения r операций вычислительного алгоритма между s процессорами поставим в соответствие вектор длиной r·s бит. Этот вектор-хромосому можно условно разбить на r групп, i-я из которых содержит информацию о номере процессора, выполняющего операцию с номером i. С этой целью в i-й группе зададим только один единичный бит, занимающий  позицию (i−1)·s+j.  Это  означает,  что  операция  с  номером  i  выполняется  на  j-м (j=1,2,...,s) процессоре.

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

При формировании начальной хромосомы на каждом вычислительном такте происходит кодирование отдельных участков хромосомы, в ходе которого возможны три характерных случая:

1.  Уровень параллелизма на i-ом вычислительном такте di<s. В этом случае не все процессоры окажутся загруженными. Пусть, например, di=2, s=3, тогда ki=[di/s]=0. Следовательно, i-ая группа параллельных операций будет реализована за один неполный машинный такт. Первая операция из этой группы равновероятно распределяется между тремя процессорами, вторая операция – между оставшимися двумя, а один процессор в течение этого такта будет простаивать.

2.  Уровень параллелизма на i-ом вычислительном такте di делится нацело на s. Тогда все операции будут выполнены за определенное число полных машинных тактов. Например, di=6, s=3, тогда ki=2. Эта группа операций будет реализована за 2 полных машинных такта, на каждом из которых три операции i-ой группы будут распределены между тремя процессорами.

3.  Уровень параллелизма на i-ом вычислительном такте di>s и не делится нацело на s. Эта группа будет реализована за(ki+1) машинных тактов, ki из которых будут полными, а последний – неполным. Например, di=7, s=3, тогда ki=2. На каждом полном машинном такте три операции будут распределены между тремя процессорами(как в случае 2). На неполном такте будет выполняться только одна операция каким-либо из трех процессоров.

Для формирования начальной популяции описанный процесс повторяется M раз.

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


  (1)

Tijl - длительность исполнения j-м процессором на l-м машинном такте макрокоманды, относящейся к i-му такту вычислительного алгоритма и включающей, помимо операции обработки данных, транзакции записи, чтения, пересылки.

Как правило, время, затрачиваемое на пересылку данных, превышает длительность вычислительной операции[4]. Поэтому величина maxj Tijl существенно зависит от топологии коммуникационной среды и принятого протокола обмена.

Как отмечалось ранее, для оптимизации архитектуры МВС необходимо выполнение двух условий: ТИ→min и ω→min. Первое условие отражает требование к качеству вычислительного процесса, а второе – к надежности функционирования вычислительной системы. Действительно,  процессоры, входящие в состав МВС, должны быть готовы в момент возникновения отказа к повышению своей вычислительной загрузки из-за неработоспособности отказавших процессоров. Поэтому средняя загрузка процессоров должна быть по возможности меньшей. Очевидно, что это условие никак не связано с требованием минимизации длительности параллельных вычислений, и, тем не менее, выполнение обоих условий необходимо.

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

Следующий этап ГА – это отбор особей в соответствии с их функцией пригодности. В классической схеме отбор обычно реализуется с помощью так называемого метода «колеса рулетки». Предлагаемая в данной работе процедура отбора позволяет реализовать механизм адаптации параметров алгоритма оптимизации на основе компромисса между скоростью сходимости и качеством получаемого локально-оптимального решения[5]. Суть предлагаемого механизма адаптации сводится к тому, что вероятность отбора особей гибко меняется в зависимости от предыстории поиска. С этой целью используется нормальный закон распределения вероятности отбора. Математическое ожидание принимается равным значению функции пригодности наилучшей для данного поколения хромосомы популяции. Если в очередном поколении произошла смена наилучшей хромосомы, то дисперсия принимает максимальное значение, расширяя тем самым диапазон поиска. Если же на протяжении нескольких поколений более предпочтительная хромосома не находится, то дисперсия уменьшается, в простейшем случае, пропорционально числу поколений

(2)

где Dmax – максимальное значение дисперсии; β – коэффициент, определяющий скорость сходимости алгоритма; g – число «неудачных» поколений.

На рис. 1 показано значение Xi случайной величины X, распределенной по нормальному закону, а также отмечены значения функции пригодности наилучшей хромосомы Fmax и отобранной i-той особи Fi.

Математическое ожидание функции распределения равно значению функции Fmax. Случайная величина Xi является непрерывной, в отличие от дискретных значений Fk (k=1,2,…,M), и необходимо выбрать такое значение Fk функции пригодности, расстояние от которого до Fmax было бы наиболее близко к расстоянию от Xi до Fmax:

(3)

В данном случае этим значением будет Fi.

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

Нормальный закон распределения вероятности отбора

Рис. 1. Нормальный закон распределения вероятности отбора

Рассмотренный принцип отбора используется в трех случаях:

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

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

Наконец, после осуществления кроссинговера к хромосомам применяется оператор мутации. Было выбрано значение вероятности мутации Pмут=0.1. Использование классической схемы мутации в нашем случае неприемлемо, поскольку может приводить к недопустимым вариантам загрузки процессоров. В связи с этим предлагается осуществлять мутацию не одного бита, а всего гена, состоящего из s бит и кодирующего номер некоторой операции pi. Его код заменяется другой допустимой комбинацией с последующей проверкой следующего условия. Если машинный такт, на котором выполняется операция pi, не содержит других операций, то мутация заканчивается. В противном случае значение гена, кодирующего некоторую другую операцию из этого же такта, заменяется исходным значением гена, соответствующего pi.

Разновидностью мутации является инверсия, при которой инвертируются все биты некоторого участка хромосомы. Использование оператора инверсии в случае выбора оптимального варианта распараллеливания является недопустимым, поскольку при этом неизбежно происходит нарушение отмеченных выше условий. Наконец, после кроссинговера и мутации производится отбор хромосом в следующее поколение. Хромосомы отбираются из расширенной популяции, которая пополняется новыми представителями:  потомками,  образованными  вследствие  кроссинговера, и мутировавшими хромосомами. Для этого сначала производится перерасчет значений функции пригодности всех членов расширенной популяции, а затем совершается адаптивный отбор. В результате получаем популяцию из M различных хромосом, являющуюся следующим поколением ГА.

Предложенный механизм адаптации обеспечивает еще одно важное преимущество – задает логически обоснованный критерий остановки поиска. Обычно в качестве такого критерия используется либо произвольно заданное число поколений, либо желаемое значение функции пригодности, при достижении которых поиск прекращается. В нашем случае поиск прекращается, если дисперсия уменьшается до такой величины, когда вероятность изменения лучшего из найденных вариантов загрузки становится пренебрежимо малой. Было выбрано пороговое значение, равное 10% от максимального значения СКО. Наилучшее максимальное значение СКО при отборе для кроссинговера σ(1)max=1, и при достижении значения  σ(1)=0,1 алгоритм завершает свою работу. В самом деле, при достижении СКО значения 0.1 случайная величина X с вероятностью 0.997 будет находиться в интервале[Fmax–0.3; Fmax+0.3]. Поскольку функция пригодности F может принимать только целочисленные значения, то это означает, что при любом значении X будет отобрана наилучшая хромосома с максимальной функцией пригодности.

Блок-схема разработанного ГА показана на рис. 2.

Результаты моделирования процесса выполнения параллельного алгоритма на многопроцессорных структурах с различной топологией[6] позволяют сделать вывод о том, что показатели эффективности вычислительного алгоритма существенно зависят от топологии коммуникационной среды и принятого протокола обмена. Как отмечалось ранее, время, затрачиваемое на пересылку данных, обычно превышает длительность вычислительной операции, и оно составляет большую долю длительности выполнения алгоритма. Очевидно, что для определенного вычислительного алгоритма существует некоторая «оптимальная» топология, которая соответствует оптимальным значениям показателей эффективности. Исходя из этих соображений был разработан алгоритм выбора оптимальной топологии. Подробное описание реализации основных этапов этого алгоритма представлено в следующем разделе.

 2.2 Программная реализация методики диспетчеризации вычислительных процессов

Генетический алгоритм, описанный в предыдущем разделе, был реализован в виде программы на языке C++, которая может выполняться под управлением ОС Linux и MS-DOS, которая имеет свидетельство об официальной регистрации программ для ЭВМ №2006611927 «Оптимальное распределение загрузки между узлами многопроцессорной вычислительной системы с использованием адаптивного генетического алгоритма». Она может применяться в качестве одного из компонентов программного обеспечения управляющего узла любой вычислительной системы с параллельной архитектурой. Программа состоит из следующих модулей:

Блок-схема адаптивного генетического алгоритма

Рис.2. Блок-схема адаптивного генетического алгоритма

Теперь опишем процедуру поиска оптимальной топологии в соответствии с алгоритмом, блок-схема которого представлена на рис. 3.

Блок-схема алгоритма выбора оптимальной топологии

Рис.3. Блок-схема алгоритма выбора оптимальной топологии

Алгоритм начинает свою работу с ввода следующих данных:

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

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

2.3. Экспериментальная часть

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

Таблица 1. Оценка оптимального значения β

Значение β Суммарное число поколений (n=100)
0.05  8841
0.06 5790
0.07 5476
0.08 5207
0.09 3916
0.1 3363
0.11 2983
0.12 2961
0.13 1786
0.14 2020
0.15 2315

Наилучшим значением коэффициента β оказалось β=0.13.

Была также исследована зависимость суммарного числа поколений, полученного за 100 циклов работы ГА, от числа проведенных операций скрещивания. Исследования показали, что лучше всего проводить кроссинговер один раз (табл. 2).

Таблица 2. Зависимость суммарного числа поколений по 100 циклам сходимости ГА от числа кроссинговеров.

Число циклов кроссинговера Суммарное число поколений (n=100)
1 2023
2 2121
3 2260
4 2444
5 2540

Результаты исследования зависимости суммарного числа поколений, полученного за 100 запусков ГА, от числа циклов мутации свидетельствуют о том, что наилучшие результаты достигаются при проведении мутации один раз(табл. 3).

Таблица 3. Зависимость суммарного числа поколений по100 циклам сходимости ГА от числа циклов мутации

Число циклов мутации Суммарное число поколений (n=100)
1 2355
2 2805
3 3128
4 4531
5 4535


Тестирование разработанного программного комплекса включает следующие исследования:

1. Оценка оптимального значения максимальной дисперсии Dmax, которое, как отмечалось ранее, является ключевым элементом в механизме адаптации генетического алгоритма. С этой целью производились серии из 100 запусков программы, причем для каждой операции отбора – при кроссинговере, мутации и формировании нового поколения, максимальные значения дисперсии Dimax назначались независимо. Было установлено, что оптимальной является комбинация D(1)max=1 при отборе для кроссинговера, D(2)max=49 при отборе для мутации и D(3)max=64 при отборе в следующее поколение.

2. Сравнение эффективности разработанного адаптивного ГА со стандартным ГА. При этом проводилась серия из 100 запусков, которые обеспечивают получение статистически устойчивых характеристик, для двух вариантов алгоритма со следующими параметрами:

Начальное значение счетчика приближения к оптимуму h, используемого в стандартном ГА,  задавалось  равным  нулю.  Для  лучшей  сопоставимости  результатов  критерий  останова стандартного алгоритма выбран таким же, как и в адаптивном ГА: если в очередном поколении произошла смена наилучшей хромосомы, то h обнуляется, иначе h увеличивается на единицу.

Из каждой серии найденных решений было выбрано по одному варианту, которые входили во множество оптимальных по Парето решений:

Уже в этом, отдельно взятом случае, оказалось, что адаптивный ГА при прочих равных условиях находит оптимум быстрее, чем стандартный алгоритм.

Сравнение суммарных характеристик для серии испытаний показало, что суммарное число поколений, за которое находилось оптимальное решение при каждом запуске алгоритма, было равно 1982 для адаптивного ГА и 4571 для стандартного ГА. Таким образом, адаптивный ГА находит оптимальное решение в 2,31 раза быстрее по сравнению со стандартным. Это говорит о более высокой эффективности поиска, которая обеспечивается с помощью предлагаемого принципа адаптивного отбора.

3. Заключение

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

Отличительными особенностями разработанного адаптивного генетического алгоритма яв-ляются:

Эффективность  программной  реализации  методики  диспетчеризации  вычислительных процессов на базе адаптивного генетического алгоритма проверялась в сравнении с результатами работы стандартного генетического алгоритма. При этом оказалось, что в среднем адаптивный ГА находит оптимальное решение в 2-2,5 раза быстрее стандартного.

Литература

1.  Khloudova M. Classification of scheduling algorithms for real-time systems // Proc. of International Workshop on Nondestructive Testing and Computer Simulations in Science and Engineering. – 1999. – Vol. 3687. – P. 228-231.

2.  Васильев В.И., Ильясов Б.Г. Интеллектуальные системы управления с использованием генетических алгоритмов: Учеб. пособие. – Уфа: УГАТУ, 1999. – 105 с.

3.  Ахметов М.И., Ефанов В.Н. Принципы разработки высокопроизводительных бортовых вычислительных систем реального времени // Вестник УГАТУ: Научный журнал УГАТУ. – 2006. – Т. 7, №1. – С. 93-102.

4.  Лацис А.О. Как построить и использовать суперкомпьютер. – М.: Бестселлер, 2003. – 240 с.

5.  Akhmetov M.I., Efanov V.N. Structural Synthesis of Communication Medium for Parallel Computer System // Proc. of CSIT’2005, Ufa, Russia. – 2005. – Vol. 2. – P. 41-46.

6.  Воеводин В.В., Воеводин Вл.В. Параллельные вычисления. – СПб.: БХВ-Петербург, 2002. – 608 с.