Научная статья на тему 'Отображение параллельных программ на многоядерные компьютеры рекуррентными нейронными сетями'

Отображение параллельных программ на многоядерные компьютеры рекуррентными нейронными сетями Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
224
69
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ГРАФЫ ПАРАЛЛЕЛЬНЫХ ПРОГРАММ / МНОГОЯДЕРНЫЕ СИСТЕМЫ / ВЫРАВНИВАНИЕ НАГРУЗКИ ПРОЦЕССОРОВ / НЕЙРОН / СЕТИ ХОПФИЛДА / GRAPHS OF PARALLEL PROGRAMS / MULTICORE SYSTEMS / NEURAL NETWORKS / HOPFIELD NETWORKS

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Тарков Михаил Сергеевич

Рассмотрена задача отображения графа параллельной программы со взвешенными вершинами (процессами) и рёбрами (межпроцессными обменами) на произвольный взвешенный граф распределённой вычислительной системы. Предложен алгоритм решения этой задачи, основанный на использовании сетей Хопфилда. Алгоритм протестирован на отображении ряда графов параллельных программ на многоядерный компьютер. Эксперименты показали, что алгоритм позволяет получить хорошо сбалансированные субоптимальные отображения.

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Тарков Михаил Сергеевич

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Mapping parallel programs onto multicore computers by recurrent neural networks

The problem of mapping a parallel program with weighted vertices (processes) and edges (interprocess exchanges) onto a weighted graph of the distributed computer system is considered. An algorithm for solving this problem based on the use of Hopfield networks is proposed. The algorithm has been tested on mapping a number of graphs of parallel programs onto multicore computer. Experiments have shown that the proposed algorithm provides well-balanced sub-optimal mappings.

Текст научной работы на тему «Отображение параллельных программ на многоядерные компьютеры рекуррентными нейронными сетями»

2013 Математические основы информатики и программирования №2(20)

МАТЕМАТИЧЕСКИЕ ОСНОВЫ ИНФОРМАТИКИ И ПРОГРАММИРОВАНИЯ

УДК 004.032.26(06)

ОТОБРАЖЕНИЕ ПАРАЛЛЕЛЬНЫХ ПРОГРАММ НА МНОГОЯДЕРНЫЕ КОМПЬЮТЕРЫ РЕКУРРЕНТНЫМИ НЕЙРОННЫМИ СЕТЯМИ

М. С. Тарков

Институт физики полупроводников им. А. В. Ржанова СО РАН, г. Новосибирск, Россия

E-mail: tarkov@isp.nsc.ru

Рассмотрена задача отображения графа параллельной программы со взвешенными вершинами (процессами) и рёбрами (межпроцессными обменами) на произвольный взвешенный граф распределённой вычислительной системы. Предложен алгоритм решения этой задачи, основанный на использовании сетей Хопфилда. Алгоритм протестирован на отображении ряда графов параллельных программ на многоядерный компьютер. Эксперименты показали, что алгоритм позволяет получить хорошо сбалансированные субоптимальные отображения.

Ключевые слова: графы параллельных программ, многоядерные системы, выравнивание нагрузки процессоров, нейрон, сети Хопфилда.

Введение

В связи с постоянным увеличением мощности компьютеров появилась возможность создавать на их основе высокопроизводительные мультикомпьютерные вычислительные системы (ВС) [1-3]. Такая система в общем случае представляет собой объединённое линиями связи множество вычислительных узлов, которые обладают высокой степенью обособленности, т. е. каждый узел имеет свой процессор, зачастую многоядерный, свою память, возможно, свой собственный жёсткий диск и свой способ взаимодействия с другими узлами (сетевая карта, модем и т.п.). Узлы могут иметь разную производительность и разные коммуникационные возможности. В общем случае структура вычислительной сети произвольна и зависит от нескольких факторов, таких, как, например, аппаратные возможности, цель, для которой создаётся вычислительная сеть, финансовые ограничения.

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

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

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

1. Задача отображения

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

Пусть:

Ср(Ур,Ер) —граф параллельной программы;

Ур — множество ветвей программы, |Ур = п;

Ер — множество логических (виртуальных) каналов, реализующих взаимодействия между ветвями;

03(У3, Е3) —граф вычислительной системы;

У — множество процессоров (ядер), |У5| = т ^ п;

Е3 — множество связей между элементарными машинами (ЭМ);

/шх —вес (вычислительная сложность) ветви х Е Ур;

— производительность процессора г Е У3; тхг = /шх/'вг — время выполнения ветви х Е Ур на процессоре г Е У3; сху — вес ребра (х,у) Е Ер, равный числу единиц информации, которыми обмениваются ветви х и у;

(^ —время передачи единицы информации между процессорами (ядрами) г и ]. Пусть ¡т : Ор ^ 03 — вложение графа программы Ор в граф вычислительной системы 03. Качество вложения будем оценивать целевой функцией

Ид (¡т) = Идс(/т)+ ИдМт),

где Идс(/т) —оценка небаланса вычислительной нагрузки; Ид1:(/т) —оценка полного времени межпроцессорных взаимодействий.

Для вложения ¡т полное время вычислений г-й ЭМ равно

¿г Тхг-

1т (х)=г

Отсюда

т

Идс(1т) = Т^,(и - ¿шш)2,

г=1

где ¿шщ = ^2 шх/^2$г — минимально возможное (идеальное) время выполнения парал-

хг

лельной программы (время выполнения программы на одном процессоре с производительностью, равной суммарной производительности всех ЭМ системы, при нулевых затратах на взаимодействия между ветвями программы).

Затраты на взаимодействия оцениваются функцией

Ид1(/т') сху,

x=y,

®=/т(х),^ = /т(у)

где суммирование производится по всем парам (х, у) взаимодействующих ветвей параллельной программы.

2. Сеть Хопфилда для задачи отображения

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

Энергия соответствующей нейронной сети Хопфилда описывается функцией Ляпунова

И = А Ис + В Ид ■ (1)

Здесь А и В — параметры функции Ляпунова. Минимум Ис обеспечивает выполнение вышеуказанных ограничений на элементы матрицы V; Ид —целевая функция;

Ис = Исг + Ис2, Исг = Г Е '}2’ихг - п\ , Ис2 = Е (Е - ; (2)

хг

минимум Ис1 обеспечивает наличие в матрице V ровно п единиц; минимум Ис2 обеспечивает наличие в каждой строке матрицы V ровно одной единицы;

Ид — Идс + Ид^^ Идс — '^хгТхг ¿шт ) , ИдЬ — '^хг г^у] сху■ (3)

г \ х / х г у ^

Здесь vxi — состояние нейрона строки х и столбца г матрицы V.

Динамика сети Хопфилда, минимизирующей функцию (1), описывается системой уравнений

Зпхл дЕ (4)

дг дvxi

где пхг — активация нейрона с индексами х = 1,...,п, г = 1,...,т; vxi = (1 + + ехр(-впхг))-1 — состояние (выходной сигнал) нейрона, в — параметр функции активации. Из (1)-(4) получаем

д-Щ = - А (ЕХ>у + Е Vxj + Е Цуг - п - 1 | -

В | ( Е '^угТуг ¿шт ) Тхг + Е Е vyj сху

у j

Соответствующее (5) разностное уравнение имеет вид (г — номер текущей итерации, Аг — величина временного шага)

пх 1 =п1:г - \А ( ЕЕ vyj + ^ vxj + Е 'иуг - п - И +

\ \ у j у

+ В ( (Е ^уг^уг ¿шт ) Тхг + ЕЕ vyj сху

у / у j

С целью ускорения сходимости сеть Хопфилда (6) преобразуется в сеть Вана [7] умножением целевой функции оптимизационной задачи на ехр(-г/т) , где т — параметр:

пхг = пхг - АМ А I 52 52 ^ + 52 ^ + 52 'иуг - п - И +

у j j у

+В ( ( 52'^угтуг гшт)тхг + ^2 Vyjсху^.7 I ехр( г/т

\\у у j )

Новое значение vtxІí 1 вычисляется сразу же после вычисления соответствующего значения пх+1 (метод Гаусса — Зейделя).

3. Эксперименты

В экспериментах исследовано отображение на компьютер с т = 2,4, 8 ядрами следующих вариантов параллельных программ с одинаковыми весами /шх, х = 1,. ■ ■ ,п, вершин (ветвей) и весами сху = 0 или сху = 1, х,у = 1,... ,п, х = у, рёбер графа программы:

1) множество независимых ветвей (отсутствуют обмены между ветвями, сху = 0);

2) типовые графы параллельных программ (линейка, кольцо и решётка) (рис. 1),

сху = 1 ;

3) нерегулярные сетки, сху = 1.

Рис. 1. Типовые графы параллельных программ (линейка, кольцо, решётка)

Изменяя параметры dij при фиксированной производительности ядер '&г, мы изменяем связность подмножеств вершин, отображённых на одно и то же ядро, т. е. оптимальность затрат на межъядерные обмены информацией.

Параметры вычислительной системы: производительность ядер = 1, г = 1,... ,т;

( 0, г = .,

^ = { 1 . , . (8)

Согласно (8), затраты на обмены данными между ветвями программы внутри ядра считаются пренебрежимо малыми по отношению к межъядерным обменам. Иначе говоря, данные в ядре рассматриваются как массивы, обрабатываемые одной ветвью.

При и>х = 1 и = 1 имеем тхг = 1, х = 1,... ,п, г = 1,... ,т. Параметры нейронной

сети: А = 1000; В = 100; Аг = 1; в = 1; т = 100.

Процедура отображения параллельной программы на вычислительную систему имеет следующий вид:

do

{initialize(); do

{iterate(); iter = iter+1;

6 = nobalance();

} while (6 > 0 && iter < maxiter);

} while (6 > maxnb || noncorrect());

Здесь:

— initialize задает начальные значения элементов матриц и0 (и соответственно v0), используя генератор псевдослучайных чисел;

— iterate выполняет шаг итерационного процесса (7), вычисляя новые значения элементов матриц ut+1 и vt+1;

— nobalance вычисляет небаланс нагрузки по формуле

Итерационный процесс (7) продолжается до тех пор, пока не будет достигнут баланс нагрузки (8 = 0) или не будет выполнено максимально допустимое количество итераций тах^ег. Если по указанным условиям итерационный процесс завершён, про-

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

В табл. 1-4 приведены следующие результаты серий из 100 испытаний алгоритма при отображении графов программ на компьютер с четырьмя ядрами (т = 4), полученные на процессоре Pentium (R) Dual-Core CPU E 52000, 2,5 ГГц:

Ia — среднее число итераций по 100 испытаниям;

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Im — максимальное число итераций;

ta — среднее время выполнения алгоритма отображения (в секундах);

tm — максимальное время выполнения алгоритма (в секундах);

Na — среднее количество рестартов алгоритма при невыполнении условия (8 > maxnb || noncorrect());

Nm — максимальное количество рестартов алгоритма при невыполнении условия (8 > maxnb || noncorrect());

Ca — средний суммарный объём данных, передаваемых между ядрами компьютера для вычисленного отображения;

Cm — максимальный суммарный объём данных, передаваемых между ядрами компьютера для вычисленного отображения.

Отметим, что при указанных выше весах cxy величины Ca и Cm задают количество рёбер графа программы Gp(Vp, Ep), соединяющих вершины этого графа, отображённые на разные ядра компьютера.

noncorrect проверяет выполнение условий (2) корректности решения vt+l.

веряется корректность полученного решения vt+1. Если решение некорректно или неба-

Таблица 1 Независимые задания

п 1а !т ¿а ¿т ^а ^т

4 61 374 0,0084 0,109 0,51 6

8 50 265 0,026 0,235 0,59 5

16 50 275 0,05 0,579 0,41 7

32 57 356 0,066 0,781 0,28 3

64 70 222 0,441 2,92 0,82 5

Таблица 2 Граф программы — линейка

п 1а ^т ¿а ¿т ^т Са С Ст

4 75 312 0,0027 0,032 0,19 2 3 3

8 68 423 0,003 0,062 0,05 2 4,23 7

16 70 515 0,014 0,156 0,17 3 5,13 10

32 83 285 0,046 0,454 0,21 2 7,24 13

64 112 529 0,334 2,985 0,47 4 11,17 17

Таблица 3 Граф программы — кольцо

п 1а !т ¿а ¿т ^а ^т Са Ст

4 110 348 0,0061 0,047 0,37 3 4 4

8 71 243 0,0044 0,047 0,12 2 4,86 7

16 59 213 0,0078 0,141 0,07 2 5,53 10

32 74 273 0,055 0,796 0,26 2 7,82 15

64 97 216 0,336 5,93 0,43 5 11,68 19

Таблица 4 Граф программы — решётка

п 1а !т ¿а ¿т ^а ^т Са Ст

4 104 353 0,0064 0,047 0,54 3 4 4

16 60 166 0,0097 0,032 0,24 2 11,41 17

64 89 306 0,283 1,77 0,62 4 29,82 40

256 571 1000 15,8 99,7 1,28 15 92,32 123

Для всех случаев, указанных в табл. 1-4, получены полностью сбалансированные отображения (8 = 0), за исключением отображения решётки с числом вершин 256 = 16 х 16, где 0 < 8 < 0,01. Рассматривались решетки с п = к х к вершинами, к = 4, 8,16 (при к = 2 решётка вырождается в кольцо).

На рис. 2 приведены графики отношений Та = Са/Сшах и Тт = Ст/Сшах, где Сшах — число рёбер графа программы, для линейки (Сшах = п — 1), кольца (Сшах = п) и квадратной решётки (Сшах = у/п(у/п — 1)) соответственно. Графики показывают, что несмотря на рост объёма информации, передаваемой между ядрами системы, с увеличением числа вершин графа программы относительная доля рёбер графа, приходящихся на межъядерные взаимодействия, существенно уменьшается.

На рис. 3-5 приведены примеры отображений решётки (рис. 3) и нерегулярных сеток (рис. 4 и 5). Одинаковыми знаками помечены вершины графа программы, отображённые на одно и то же ядро. Рисунки свидетельствуют о субоптимальности полученных отображений.

Среднее

Максимум

Среднее

Максимум

Среднее

Максимум

а б в

Рис. 2. Отношения та (среднее) и тт (максимум): а — линейка; б — кольцо; в — рёшетка

Рис. 3. Пример отображения решётки 8 х 8 вершин на систему из двух ядер

Рис. 4. Пример отображения прямоугольной нерегулярной сетки на систему из четырёх ядер (п = 57)

П

П

п

Рис. 5. Пример отображения триангуляционной нерегулярной сетки на систему из четырёх ядер (п = 43)

Эксперименты показали, что предложенный алгоритм отображения, основанный на использовании сети Вана [7, 8], позволяет получить для компьютера с числом ядер т = 2, 4, 8:

1) полный баланс вычислительной нагрузки (нагрузка распределяется равномерно) для типовых графов параллельных программ (пустой граф, линейка, решётка, кольцо) с числом вершин п Е {2, 4, 8,16, 32,64};

2) субоптимальные отображения для нерегулярных сеток с несколькими десятками вершин (небаланс нагрузки не превышает 5 %);

3) существенное снижение доли рёбер графа программы, приходящихся на межъ-ядерные обмены, при увеличении числа вершин графа программы.

Табл. 5 показывает (п = 32), что при числе ядер т = 2, 4 времена работы алгоритма отображения 1а и Ьт и количества рестартов алгоритма малы, но при увеличении числа ядер до т = 8 эти величины резко возрастают.

Таблица 5 Граф программы — линейка (п = 32)

т 1а !т ¿а ¿т ^а ^т Са Ст

2 14 81 0,0026 0,031 0,58 6 5,69 13

4 83 285 0,046 0,454 0,21 2 7,24 13

8 177 375 2,85 27,39 0,58 23 10,79 18

Проведены эксперименты по отображению графов программ для числа ядер т = 8 рекурсивной бисекцией, когда граф программы разбивается на два подграфа, которые, в свою очередь, рекурсивно разбиваются на подграфы вплоть до заданного числа ядер. Каждый шаг рекурсивной бисекции реализуется сетью Вана. Установлено, что рекурсивная бисекция существенно сокращает время отображения (рис. 6,а) при равномерном распределении вычислительной нагрузки, но затраты Са и Ст на межъядерные обмены информацией в полученном отображении при этом возрастают (рис. 6,б).

Рис. 6. Сравнение отображений линейки на компьютер с числом ядер сетью Вана и рекурсивной бисекцией: а — по среднему времени отображения; б — по средним затратам на межъядерные обмены в полученном отображении

Случай большого числа вершин (сотни и тысячи) можно свести к рассмотренным выше, используя методику Кариписа — Кумара [8] огрубления графа программы.

Заключение

Рассмотрена задача отображения графа параллельной программы со взвешенными вершинами (процессами) и рёбрами (межпроцессорными обменами) на произвольный взвешенный граф распределённой вычислительной системы. Предложен алгоритм решения этой задачи, основанный на использовании сетей Хопфилда. Алгоритм

протестирован на частном случае рассмотренной задачи — отображении ряда графов параллельных программ (однородное множество независимых заданий — пустой граф, линейка, кольцо, решётка, неоднородная решетка) на многоядерный компьютер. Эксперименты показали, что для графов параллельных программ с несколькими десятками вершин предложенный алгоритм позволяет получить хорошо сбалансированные субоптимальные отображения: величина относительного небаланса нагрузки на ядро не превышает 5 %; подграф графа программы, отображённый на отдельное ядро, имеет близкое к минимуму количество внешних рёбер, соответствующих межъядер-ным обменам.

ЛИТЕРАТУРА

1. Корнеев В. В. Параллельные вычислительные системы. М.: Нолидж, 1999. 320с.

2. Bokhari S. H. On the mapping problem // IEEE Trans. Comp. 1981. V. C-30. No. 3. P. 207-214.

3. Тарков М. С. Вложение структур параллельных программ в структуры живучих распределенных вычислительных систем // Автометрия. 2003. Т. 39. №3. С. 84-96.

4. Осовский С. Нейронные сети для обработки информации. М.: Финансы и статистика, 2002. 344 с.

5. Меламед И. И. Нейронные сети и комбинаторная оптимизация // Автоматика и телемеханика. 1994. №4. С. 3-40.

6. Smith K. A. Neural networks for combinatorial optimization: a review of more than a decade of research// INFORMS J. Computing. 1999. V. 11. No. 1. P. 15-34.

7. Hung D. L. and Wang J. Digital hardware realization of a recurrent neural network for solving the assignment problem // Neurocomputing. 2003. V. 51. P. 447-461.

8. Karypis G. and Kumar V. Multilevel k-way partitioning scheme for irregular graphs // J. Parallel and Distributed Computing. 1998. V. 48. P. 96-129.

i Надоели баннеры? Вы всегда можете отключить рекламу.