ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ И СИСТЕМЫ
УДК 681.3.069, 681.324
С. В. Иванов, И. И. Колыхматов, А. В. Бухановский
ПАРАЛЛЕЛЬНЫЕ АЛГОРИТМЫ МОДЕЛИРОВАНИЯ КОМПЛЕКСНЫХ СЕТЕЙ
Представлено семейство параллельных алгоритмов, которые позволяют воспроизводить комплексную сеть как стохастический граф с заданными вероятностными свойствами. Каждый из алгоритмов основывается на естественных свойствах распараллеливания структуры графов и соответствует особенностям конкретной вычислительной архитектуры, включающих системы с общей и разделенной памятью, а также кластерные системы. Приводятся результаты экспериментальных исследований производительности параллельных алгоритмов на многоядерных вычислительных системах и кластерной системе ТРо^е-Мт.
Ключевые слова: комплексные сети, генерация графа, параллельные алгоритмы, гибридная архитектура, модели производительности.
Введение. Моделирование сетей с использованием аппарата теории графов является важным направлением дискретной математики [1]. В последнее десятилетие возрос интерес исследователей к комплексным сетям, включающим большое количество узлов, структура которых нерегулярна, сложна и динамически эволюционирует во времени [2]. Примером комплексных сетей служат социальные сети (знакомств, соавторства ученых [3]), информационные (цитирования в научных статьях [4], web-ссылок [5]), технологические (Интернет, транспортные и электрические сети) и биологические (сети нейронов в мозге, взаимодействующих протеинов, генетические сети).
*
Для исследования таких комплексных сетей т^Шев необходимо генерировать стохастические графы с количеством вершин порядка 106—1010. Это, в свою очередь, инициирует развитие параллельных алгоритмов генерации графов и соответствующих способов их хранения в распределенной вычислительной среде.
В настоящее время сформулировано четыре подхода к моделированию комплексных сетей, основанных на моделях графов специального вида и ряде стандартных алгоритмов:
1) случайных пуассоновских графов и обобщенных случайных графов [6, 7];
2) марковских случайных графов и моделях блуждания по „графу графов" [8—10];
3) модели „малого мира" Уотса и Строгатса [11] и ее обобщений;
4) эволюционной модели роста сети Барабаси и Альберт [12] и модели Прайса [4].
Первые три подхода подразумевают генерацию случайного графа с заранее известным
числом вершин и заданными вероятностными свойствами.
В современной терминологии eScience „in-silico"— компьютерное моделирование объектов, используемое, когда другие способы исследования (наблюдением — in vivo, in situ, активным экспериментом — in vitro) не представляются целесообразными или возможными.
В настоящей работе представлены параллельные алгоритмы генерации комплексных сетей с заданным законом распределения степеней вершин, адаптированные для параллельных вычислительных архитектур с общей (symmetric multiprocessing, SMP) и разделенной (massive parallel processing, MPP) памятью.
Вероятностная модель комплексной сети. Комплексная сеть представляет собой граф G, который определяется как совокупность (V, E) конечного множества вершин V, dim(V) = N, и множества ребер E, состоящего из неупорядоченных пар (u, v), где u, v е V и u Ф v. Каждая вершина характеризуется своей степенью, т.е. числом инцидентных ей ребер. Упорядоченный список степеней вершин называется степенной последовательностью.
Интегральной характеристикой комплексной сети является закон распределения степеней вершин рк, который определяет вероятность того, что случайно выбранная вершина имеет степень к. Степенную последовательность для неориентированного графа удобно представить в форме d = (ск ,ск ,...,), где число с{ — степень, а показатель к обозначает количество повторений числа с1 в последовательности. Такая запись позволяет связать дискретное распределение степеней вершин рк со степенной последовательностью d в форме
def
Рк = P [x = ct ] = kjN.
В модели случайных графов [6] ребро, инцидентное любым двум вершинам, присутствует или отсутствует с равной вероятностью, вследствие чего распределение рк будет биномиальным или (в пределе по N ) пуассоновским. Однако большинство реальных сетей имеет структуру, отличную от структуры случайных графов, что отражается на характере распределения степеней вершин [2]. В частности, во многих реальных сетях эмпирическое распределение степеней вершин интерпретируется в терминах степенного распределения
Рк = к-y / Z(y) , где Z-функция Римана играет роль нормирующей константы. Это распределение характеризуется единственным параметром y , определяющим скорость убывания хвоста распределения. В ряде случаев могут использоваться более сложные аппроксимации на основе степенного распределения, например, на основе усеченного распределения или смеси нескольких распределений с разными параметрами.
Способ генерации комплексной сети по заданному закону распределения степеней вершин. Наиболее популярным способом генерации сетей с заданным законом распределения степеней вершин является так называемая конфигурационная модель [13—15] или близкая ей по смыслу /-процедура [16]. Если распределение Рк задано, то вычислительная процедура сводится к следующим операциям:
— формируется степенная последовательность d путем выбора N чисел к1 согласно
заданному распределению Рк, где i = 1, N;
— каждой вершине i графа присваивается ki „заготовок" (концов) для будущих ребер;
— из степенной последовательности случайным образом извлекаются пары вершин, которые соединяются ребром в том случае, если это не приведет к появлению ребер-циклов (петель) или мультиребер. Если ребро сгенерировано, то соответствующие индексы из степенной последовательности удаляются;
— предыдущий шаг повторяется до тех пор, пока степенная последовательность не будет пустой.
На основе распределения Рк любой граф может быть построен Пг к'! различными способами, поскольку „заготовки" для будущих ребер неразличимы. Таким образом, этот процесс с равной вероятностью генерирует любую возможную конфигурацию сети с заданным
распределением степеней вершин. Преимуществом данного алгоритма является его универсальность, так как с его помощью можно построить сеть с любым распределением степеней вершин.
Базовый параллельный алгоритм. Непосредственное распараллеливание конфигурационной модели не представляется целесообразным, поскольку для проверки наличия муль-тиребер требуется хранить для каждой вершины номера всех смежных с ней вершин. Когда несколько вычислителей (процессоров или ядер) одновременно участвуют в создании новых ребер, для корректной работы алгоритма требуется обеспечить синхронизацию доступа вычислителей к разделяемым ресурсам, что, с точки зрения параллельных вычислений, является нежелательной операцией. Многочисленные синхронные обращения к спискам смежных вершин могут серьезно снизить эффективность параллельной реализации алгоритма. Разумной альтернативой является блочная организация алгоритмов, основанная на операциях с максимально большими блоками комплексной сети.
Поскольку комплексная сеть, характеризуемая произвольным распределением рк, является статистически однородной, то количество ребер между двумя блоками сети одинакового размера должно быть одинаковым; следовательно, для любой пары блоков ребра можно генерировать независимо. Если количество таких блоков превышает количество вычислителей, то, подбирая независимые пары блоков для каждого вычислителя, генерацию сети можно осуществлять параллельно. Для системы, состоящей из К вычислителей, разделение множества вершин N на 2К равных частей обеспечит наибольшие размеры независимых блоков. При этом между вершинами каждой пары различных блоков будет находиться М/ 2К2 ребер, а между вершинами одного блока — М/4К2 ребер, где
М = N ^ кр = N{к)
г
— общее число ребер в сети, (к) — средняя степень вершины.
На рис. 1 приведена общая схема параллельного алгоритма генерации комплексной сети.
На первом этапе алгоритма сети формируются независимые фрагменты степенной последовательности (] = 1, 2К ) и инициализируются блоки сети.
На втором этапе генерируются связи между вершинами из разных блоков. Множество из 2К блоков разбивается на К пар так, чтобы связи между вершинами любых двух фиксированных блоков генерировались лишь однажды. При этом за каждым вычислителем закрепляются два независимых блока. В течение одной фазы каждый процессор выполняет построение ребер графа по алгоритму конфигурационной модели, на каждом шаге случайным образом выбирая вершину из одного блока своей пары, а другую — из другого блока. Этот процесс повторяется 2К -1 раз, т.е. до тех пор, пока не будут установлены ребра между всеми возможными сочетаниями блоков.
На третьем этапе происходит генерация ребер между вершинами каждого из 2К блоков. Связи между вершинами из одного блока генерируются независимо от других блоков, поэтому этот этап можно рассматривать как реализацию последовательного алгоритма конфигурационной модели разными вычислителями одновременно, применительно к независимым блокам (по два блока на вычислитель).
Принципиальной особенностью рассмотренного выше алгоритма является наличие „расписания" (т.е. заданной последовательности обработки независимых блоков), которое обеспечивает обработку всех возможных парных сочетаний блоков. Существуют различные способы построения расписаний [17]; возможность их применения зависит, в первую очередь, от архитектуры вычислительной системы. В частности, для МРР-систем принципиальное значение имеет составление расписания с учетом балансировки нагрузки таким образом,
чтобы этап обменов данными занимал минимально возможное время. В данном случае допустимо использовать циклические расписания, аналогичные применяемым в матричных алгоритмах Фокса и Кэннона [18].
^Построение расписания^ *
(Декомпозиция множества верши^
, X ,
^ Инициализация степеней вершин ^
¡"ИЕ^ю"! ¡"-¿250"!
I_________I I_________I
^ 1 г -
^Генерация ребер между парами блоков
I__Р______I I_________I
_3_._£1_
^Тен^
! ¿й^"! Га^Д!
I__г______I I_________I
_3_._с_
Рис. 1
Отображение алгоритма на вычислительную архитектуру. Система с общей памятью. Отображение алгоритма, представленного на рис. 1, на архитектуру вычислительной системы с общей памятью не требует принудительного разделения данных между вычислителями. Алгоритм реализуется через набор потоков, каждый из которых на произвольной итерации работает с собственными блоками данных. По завершении каждой итерации выполняется синхронизация, после чего со всеми потоками ассоциируются новые блоки в соответствии с расписанием. На рис. 2, а представлена схема алгоритма в виде ЦМЬ-диаграммы последовательностей для БМР-систем. Программная реализация такого алгоритма выполнена на основе технологии ОрепМР [19].
С учетом того что время работы параллельного алгоритма (см. рис. 2, а) линейно зависит от N, параллельное ускорение в первом приближении может быть представлено в форме модификации закона Амдала:
Sk = , /Л/ L , (1)
1 + g « k)) 1 + g ((k))/ K
где безразмерная функция g (k^) = a + в k) отражает зависимость времени выполнения от средней степени вершины (k). Коэффициент a характеризует ресурсоемкость операции установления нового ребра, а в — определяет затраты на просмотр списка вершин в поиске мультиребер. На рис. 3, а результаты вычислительных экспериментов для SMP-систем, выполненных на компьютере с четырехъядерным процессором Intel Core2 Quad 2.4 ГГц, сопоставлены с выражением (1) при a = 0,91 и в = 0,054 для различных значений (k) (1 — (k) =12; 2 — 3,6; 3 — 1,8). Из рисунка видно, что модель (1), несмотря на простоту, удовлетворительно согласуется с эксперимен-
тальными данными (значки). При этом значения параллельного ускорения весьма невелики: на четырех узлах не превышают двух. Это связано с достаточно весомой (по сравнению с операцией над ребрами) процедурой декомпозиции множества вершин и создания заготовок.
Я) --б)
Главный поток
Главный процесс
Поток 1
2K-1
Поток K
синхронизация синхронизация
синхронизация синхронизация
Процесс 1
II
Процесс K
_______Jj]
Блок 1
Блок K
2K-1
ш
ш
синхронизация синхронизация
Парный обмен блоками
___Р ^
бмен Па
арный обмен блоками
синхронизация синхронизация
Парный обмен блоками
X
Парный обмен блоками
' ' ' Сбор блоков^ВединЫй граф i
X
с
Последовательные операции (построение расписания) Параллельная генерация ребер между разными блоками
Параллельная генерация ребер в рамках одного блока ^■ Накладные расходы \ZZZZZZZZ] Коммуникационные операции
Рис. 2
2 3 4
Количество вычислителей, шт
4 6 8 10
Количество вычислителей, шт
Рис. 3
Система с разделенной памятью. Для систем с разделенной памятью реализация параллельного алгоритма требует физического распределения фрагментов сети между вычислителями с последующей организацией обменов между узлами в соответствии с заданным расписанием. Программная реализация выполнена с использованием технологии MPI (см. рис. 2, б).
2
1
5
Главной проблемой при реализации предложенного параллельного алгоритма с помощью MPI является необходимость передачи списков смежности между узлами вычислительной техники. Функции MPI предназначены для передачи данных, расположенных в памяти последовательно. Эффективная реализация списков смежности подразумевает независимый динамический массив для каждой вершины отдельно. По этой причине для передачи списков смежности разумно использовать упаковку и распаковку динамических данных при помощи специальных функций MPI_Pack и MPI_Unpack.
Технология MPI позволяет эффективно работать как с разделенной, так и с общей памятью; в последнем случае скорость обменов данными кардинально возрастает, что необходимо учитывать, если программа функционирует на системе гибридной архитектуры, например, кластере на основе SMP-узлов. В качестве примера на рис. 3, б приведены оценки параллельного ускорения при различных значениях (k) (см. рис. 3, а) по результатам расчетов на кластере TForge-Mini (4 двухпроцессорных двухъядерных узла на основе AMD Opteron 275). C учетом накладных расходов на обмен данных между узлами модель (1) трансформируется в более привычную для MPP-систем форму:
K
S =____(2)
K 1 + ( K -1) + x(K K (( K - K ■■-*)( K - K max -1) T 1+T^+x(K- m"(--
Здесь Kmax — максимальное количество вычислителей (ядер) на узле, %(•) — ступенчатая
функция Хевисайда, т — безразмерный параметр, характеризующий отношение базовой операции по передаче данных к базовой вычислительной операции. Значение T не зависит от других параметров задачи и является (для заданного алгоритма) объективной характеристикой вычислительной архитектуры. Для кластера TForge-Mini т = 0,55 .
На рис. 3, б модель (2) (4 — для SMP-системы, Kmax = 16; 5 — для MPP-системы, Kmax = 1)
сопоставлена с результатами экспериментов (значки) — результаты согласуются удовлетворительно. Из сопоставления рис. 3, а и б видно, что при одних и тех же данных алгоритм для общей памяти масштабируется хуже, чем для разделенной памяти. Это объясняется не только различием архитектуры (и скорости доступа к общей памяти) на узле кластера и в рабочей станции с четырехъядерным процессором, но и различием программных реализаций. Для SMP-реализации (вследствие отсутствия необходимости физической передачи данных между узлами) хранение списков смежности организовано более эффективно, чем для MPP-реализации. Как следствие, абсолютное время последовательной работы MPP-реализации в среднем в 1,5 раза больше, чем для SMP-реализации, это вызвано пониженной зернистостью (дробностью), что способствует увеличению масштабируемости.
Рассмотренные алгоритмы и полученные на их основе результаты были использованы авторами при моделировании динамики эпидемии ВИЧ [20].
Заключение. Таким образом, предложенный параллельный алгоритм генерации комплексной сети с заданным законом распределения допустимо использовать на вычислительных системах как с SMP-, так и с MPP-архитектурой. Возможности современных рабочих станций (пусть даже на основе многоядерных процессоров) ограничены построением сетей размера порядка 10 вершин. Потому моделирование более обширных сетей возможно лишь на основе кластерных архитектур. Несмотря на то что эффективность данного алгоритма невелика (по результатам экспериментов — не более 50 %), его принципиальным отличием является практическая независимость масштабируемости от размера комплексной сети N . Это дает определенные гарантии возможности получения результата за разумное (пусть и достаточно большое) время при увеличении количества вычислительных узлов.
список литературы
1. Boccaletti S., Latora V., Moreno Y. et al. Complex networks: Structure and dynamics // Phys. Rep. 2006. Vol. 424, N 4—5. P. 175—308.
2. Newman M. E. J. The Structure and Function of Complex Networks // SIAM Rev. 2003. Vol. 45, N 2. P. 167—256.
3. Redner S. How popular is your paper? An empirical study of the citation distribution // Europ. Phys. J. B. 1998. Vol. 4. P. 131—134.
4. Price D. J. de S. A general theory of bibliometric and other cumulative advantage processes // Journal of the American Society for Information Science. 1976. Vol. 27. P. 292—306.
5. Broder A., Kumar R., MaghoulF. et al. Graph structure in the web // Computer Networks. 2000. Vol. 33. P. 309—320.
6. ErdosP., Renyi A. On the evolution of random graphs // Publications of the Mathematical Institute of the Hungarian Academy of Sciences. 1960. Vol. 5. P. 17—61.
7. RapoportA. Contribution to the theory of random and biased nets // Bulletin of Mathematical Biophysics. 1957. Vol. 19. P. 257—277.
8. Holland P. W., Leinhardt S. An exponential family of probability distributions for directed graphs // J. of the American Statistical Association. 1981. Vol. 76. P. 33—65.
9. Frank O., Strauss D. Markov graphs // J. of the American Statistical Association. 1986. Vol. 81. P. 832—842.
10. The Markov chain simulation method for generating connected power law random graphs / C. Gkantsidis, M. Mihail, E. Zegura // Proc. of the 5th Workshop on Algorithm Engineering and Experiments. Baltimore, Maryland, USA, 2003. P. 16—25.
11. WattsD. J., Strogatz S. H. Collective dynamics of „small-world" networks // Nature. 1998. Vol. 393. P. 440—442.
12. Barabasi A.-L., AlbertR. Emergence of scaling in random networks // Science. 1999. Vol. 286. P. 509—512.
13. BekessyA., BekessyP., KomlosJ. Asymptotic enumeration of regular matrices // Studia Scientiarum Mathematicarum Hungarica. 1972. Vol. 7. P. 343—353.
14. Bender E. A., CanfieldE. R. The asymptotic number of labeled graphs with given degree sequences // Journal of Combinatorial Theory A. 1978. Vol. 24. P. 296—307.
15. MolloyM., ReedB. A critical point for random graphs with a given degree sequence // Random Structures Algorithms. 1995. Vol. 6. P. 161—179.
16. Емеличев В. А.,Мельников О. И., Сарванов В. И. и др. Лекции по теории графов. М.: Наука, 1990.
17. Lee P., Kedem Z. M. Automatic data and computation decomposition on distributed memory parallel computers // ACM Transactions on Programming Languages and Systems. 2002. Vol. 24, N 1. P. 1—50.
18. Choi J., Dongarra J. J., Walker D. W. Parallel matrix transpose algorithms on distributed memory concurrent computers // Parallel Computing. 1995. Vol. 21, N 9. P. 1387—1405.
19. Chandra R., Menon R., Dagum L. et al. Parallel Programming in OpenMP. Morgan Kaufmann Publishers, 2000.
20. SlootP. M. A., Ivanov S. V., BoukhanovskyA. V. et al. Stochastic simulation of HIV population dynamics through complex network modeling // Int. J. of Computer Mathematics. 2008. Vol. 85, N 8. P. 1175—1187.
Сведения об авторах
Сергей Владимирович Иванов — Санкт-Петербургский государственный университет информа-
ционных технологий, механики и оптики, E-mail: [email protected]
Илья Игоревич Колыхматов — Санкт-Петербургский государственный университет информа-
ционных технологий, механики и оптики, E-mail: [email protected]
Александр Валерьевич Бухановский — Санкт-Петербургский государственный университет информационных технологий, механики и оптики, E-mail: [email protected]
Рекомендована кафедрой Поступила в редакцию
оптико-электронных приборов 14.01.08 г.