<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Фролов А.С., Семенов А.С.</article-title>
      </title-group>
      <contrib-group>
        <aff id="aff0">
          <label>0</label>
          <institution>JSC «Scientific and Research Center of Computer Technolohy»</institution>
          ,
          <addr-line>Moscow</addr-line>
          ,
          <country country="RU">Russia</country>
        </aff>
      </contrib-group>
      <fpage>270</fpage>
      <lpage>279</lpage>
      <kwd-group>
        <kwd>Обработка графов</kwd>
        <kwd>языки параллельного программирования</kwd>
        <kwd>программные модели</kwd>
        <kwd>PageRank</kwd>
        <kwd>супер-компьютеры</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>APPROACHES TO IMPLEMENTATION OF PAGERANK IN CHARM++</title>
      <p>
        ВВЕДЕНИЕ
примеры применения [
        <xref ref-type="bibr" rid="ref26 ref26 ref27 ref27 ref28 ref28 ref4 ref4 ref5 ref5 ref6 ref6">4, 5, 6</xref>
        ]. Одним из первых и наиболее известных алгоритмов ранжирования
считается PageRank [
        <xref ref-type="bibr" rid="ref29 ref29 ref7 ref7">7</xref>
        ], разработанныи для поисковои машины Google. Несмотря на то, что за более
чем 15-летнюю историю существования PageRank было выполнено большое количество
исследовании алгоритма и его модификации, реализации с использованием различных
программных моделеи и технологии, и оптимизации под различные архитектуры вычислительных
систем, классическии PageRank продолжает представлять интерес как типовая графовая задача для
разработчиков новых программных моделеи и инструментальных средств.
      </p>
      <p>
        В даннои работе рассматривается асинхронная вычислительная модель с управлением
потоком сообщении и ее реализация в виде языка параллельного программирования Charm++ [
        <xref ref-type="bibr" rid="ref30 ref30 ref31 ref31 ref8 ref8 ref9 ref9">8, 9</xref>
        ]
для суперкомпьютерных комплексов и вычислительных кластерных систем. Программная модель
Charm++ значительно отличается от существующих стандартов разработки параллельных
программ, основанных на SPMD-модели и модели распределеннои или общеи памяти, MPI [
        <xref ref-type="bibr" rid="ref10 ref10 ref32 ref32">10</xref>
        ] или
OpenMP [
        <xref ref-type="bibr" rid="ref11 ref11 ref33 ref33">11</xref>
        ], а также их комбинации. Асинхронность? заложенная в модели вычислении Charm++?
позволяет по-другому выражать алгоритмы и, соответственно, получать принципиально иную
организацию вычислительного процесса. Более подробно о существующих асинхронных моделях
вычислении можно ознакомится в работе [
        <xref ref-type="bibr" rid="ref34">12</xref>
        ].
      </p>
      <p>Алгоритмы анализа графов на Charm++ являются малоисследованнои областью до
настоящего времени, в то время как модель Charm++ хорошо подходит для разработки асинхронных
графовых алгоритмов в силу следующих причин:</p>
      <p>
        - объектно-ориентированная модель Charm++ позволяет достаточно просто выражать
графовые алгоритмы в вершинно-ориентированном стиле (vertex-centric), которыи является одним
из наиболее распространенных подходов к работе с графами при решении задач анализа Больших
Данных [
        <xref ref-type="bibr" rid="ref12 ref12 ref13 ref13 ref35 ref35 ref36 ref36">13, 14</xref>
        ];
      </p>
      <p>- динамическая балансировка нагрузки, поддерживаемая в системе времени выполнения
(runtime-системе) языка Charm++, позволяет осуществлять автоматическую миграцию объектов
между узлами вычислительного кластера, что особенно актуально для графовых задач вследствие
их нерегулярности, а также несбалансированности реальных графов (например, scale-free графы с
распределением степени вершин по степенному закону).</p>
      <p>
        В даннои работе представлены три различных алгоритма реализации PageRank на Charm++,
все три алгоритма являются асинхронными по характеру выполнения модификации рангов
вершин, но с различнои степенью асинхронности. Реализации алгоритмов были протестированы
на синтетически сгенерированных графах типа RMAT [
        <xref ref-type="bibr" rid="ref14 ref14 ref37 ref37">15</xref>
        ]; данныи тип близок к графам,
используемым в оценочном тесте Graph500 [
        <xref ref-type="bibr" rid="ref15 ref15 ref38 ref38">16</xref>
        ]. Результаты оценочного тестирования получены на
вычислительном кластере Ангара-К1 на базе коммуникационнои сети Ангара [
        <xref ref-type="bibr" rid="ref16 ref39 ref40">17,18</xref>
        ].
      </p>
      <p>Далее приводится краткое описание программнои модели Charm++ (раздел 2), описание
формальнои постановки задачи PageRank (раздел 3), описание алгоритмов (раздел 4) и анализ
результатов оценочного тестирования (раздел 5). В заключении приведены выводы и дальнеишие
планы исследовании.
ПРОГРАММНАЯ МОДЕЛЬ CHARM++</p>
      <p>
        Язык параллельного программирования Charm++ является расширением языка C++ и
основан на объектно-ориентированнои модели с управлением асинхронным потоком сообщении
[
        <xref ref-type="bibr" rid="ref30 ref30 ref31 ref31 ref8 ref8 ref9 ref9">8, 9</xref>
        ]. Ниже приводятся основные концепции программнои модели Charm++.
      </p>
      <p>Базовым объектом в Charm++ является chare (или chare-объект), обладающии помимо всех
своиств объектов в С++ (инкапсулированными данными, множеством публичных и приватных
методов и т. п.), интерфеисом из специальных entry-методов, вызовы которых соответствуют
передаче данных (т. е. сообщении) между chare-объектами.</p>
      <p>Приложение в Charm++ состоит из множества chare-объектов, обменивающихся между
собои данными посредством вызовов entry-методов. Кроме того, вызов entry-метода порождает
выполнение непосредственно самого метода на том узле, где находится chare-объект, entry-метод
которого был вызван, то есть таким образом реализуется концепция управления потоком данных
или активных сообщений.</p>
      <p>В процессе выполнения entry-метода могут быть изменены только данные, принадлежащие
chare-объекту. Одновременно у chare-объекта может выполняться не более одного entry-метода, что
позволяет избежать проблемы обеспечения атомарности изменения данных, принадлежащих
chare-объекту, и значительно упрощает программирование. Схематически программная модель
Charm++ представлена на рисунке 1.</p>
      <p>Кроме простых chare-объектов Charm++ имеется возможность создавать массивы
chareобъектов. При этом массивы бывают как одномерными, так и многомерными. Использование
массивов позволяет создавать большое количество chare-объектов, управлять их распределением
по вычислительным узлам, выполнять над ними коллективные операции.</p>
      <p>В Charm++ поддерживается автоматическая динамическая балансировка нагрузки на
вычислительные узлы, что реализуется на уровне runtime-системы за счет перемещения
chareобъектов между вычислительными узлами. Для прикладного программиста данная возможность
совершенна прозрачна, так как программная модель Charm++ не специфицирует расположение
chare-объектов в вычислительнои системе, и все объекты адресуются в едином адресном
пространстве.</p>
      <p>Основные концепции модели Charm++ были разработаны почти 20 лет назад в то время,
когда массово-параллельные системы (вычислительные кластеры) на основе коммерческих
микропроцессоров только набирали популярность. Тем не менее, модель Charm++, вобравшая в себя
как принципы dataflow-моделеи, так и многопоточных (мультитредовых) моделеи вычислении,
оказалась достаточно успешнои и с момента создания почти не претерпевала изменении.</p>
      <p>Рис. 1. Программная модель Charm++
ПОСТАНОВКА ЗАДАЧИ PAGERANK</p>
      <p>Алгоритм PageRank моделирует процесс случаиного перемещения ("серфинга")
пользователя по страницам вэб-сети, при этом перед каждым новым шагом с заданнои
вероятностью выбирается одно из двух деиствии: (1) пользователь с равнои вероятностью
выбирает одну из гиперссылок (ребро вэб-графа), принадлежащих текущеи странице (вершине
вэбграфа), и переходит на страницу по выбраннои ссылке, или (2) пользователь осуществляет
"телепортацию" – перемещение на другую страницу, выбранную случаиным образом из всех
существующих страниц вэб-сети. Интуитивно понятно, что при таком перемещении, чем больше
страница имеет входящих ссылок, тем большее количество раз на нее будет выполнен переход.</p>
      <p>Пусть дан ориентированныи граф = ( , ), в котором – это множество вершин, –
множество дуг. Тогда ранг вершины в PageRank вычисляется следующим образом:
( )
( ) = | | + × ∑ ∈ in( ) | ( )|, (1)
где – вероятность выбора перехода по исходящеи ссылке (0 &lt; &lt; 1), ( )– множество смежных
с вершин, имеющих исходящие дуги, указывающие на , ( )– множество смежных с вершин,
на которые указывают исходящие из дуги. В качестве начального значения рангов выбирается | |.
АСИНХРОННЫЕ АЛГОРИТМЫ PAGERANK</p>
      <p>Наиболее распространеннои схемои вычисления рангов вершин при реализации алгоритма
PageRank является итеративная схема, когда на каждом шаге вычисляется новое значение ранга для
каждои вершины, при этом между шагами, как правило выполняется барьерная синхронизация,
чтобы обеспечить согласованность вычислении. В нашем подходе мы также использовали
итерационную схему вычислении, однако адаптировали ее к асинхроннои модели Charm++.
На рисунке 2 представлен базовый (или наивный) асинхронный алгоритм PageRank на
языке Charm++. Алгоритм является итерационным, на каждой итерации происходит пересчет
значений рангов всех вершин. Вершины представлены в виде элементов массива chare-объектов
класса PageRankVertex, при этом каждый объект соответствует одной вершине графа. Далее
термины вершина и chare-объект можно считать взаимозаменяемыми.</p>
      <p>Рис. 2. Базовый алгоритм PageRank на Charm++
В каждои вершине определены два параметра и , в которых хранятся значение
ранга вершины для предыдущеи итерации и частично подсчитанное значение ранга на текущеи
итерации, соответственно. В начальныи момент времени
инициализируется значением| |.</p>
      <p>Итерации алгоритма состоят из двух фаз. Первая фаза инициируется вызовом entry-метода
doPageRankStep_init у всех вершин. Назначение первои фазы в инициализации текущего шага –
обновлении значении и . Вторая фаза инициируется вызовом doPageRankStep_update
также у всех вершин. На второи фазе выполняется асинхронное вычисление у всех вершин.
При этом каждая вершина рассылает своим смежным вершинам (по исходящим дугам)
значение с помощью вызова entry-метода update у соответствующих chare-объектов. Между
фазами, так же как и между итерациями, необходимо выполнение барьернои синхронизации. Для
этого используется поддерживаемыи в Charm++ механизм обнаружения "тишины" (вызов
CkStartQD).</p>
      <p>Очевидным недостатком базового алгоритма PageRank является наличие двух глобальных
барьерных синхронизации на каждои итерации, что может привести к слабои масштабируемости
алгоритма. Для устранения этои проблемы предлагаются следующие два алгоритма:
частичноасинхронныи алгоритм PageRank с подсчетом сообщении и полностью асинхронныи алгоритм.</p>
      <p>На рисунке 3 приведен псевдокод частично-асинхронного алгоритма PageRank с подсчетом
входящих сообщении, в котором количество глобальных барьеров на одну итерацию сокращено до
одного барьера. Основная идея алгоритма – использовать подсчет входящих сообщении (вызовов
entry-метода update), и после получения последнего сообщения на даннои итерации обновлять
значения локальных переменных вершины. Подразумевается, что все вершины имеют
информацию о количестве входящих соседеи ( ), так что для ориентированных графов требуется
дополнительная предобработка графа. Для подсчета сообщении используется обратныи счетчик
.
Рис. 3. Алгоритм PageRank с подсчетом сообщений на Charm++
Рис. 4. Полностью асинхронный алгоритм PageRank на Charm++</p>
      <p>274
Также необходимо обратить внимание, что работа с переменными хранящими предыдущее
и текущее (обновляемое) значения рангов, выполняется через ссылки ( и ), это
необходимо для того, чтобы сохранить консистентность этих значении в случае рассинхронизации
выполнения методов doPageRank и update.</p>
      <p>На рисунке 4 представлен еще одна модификация алгоритма PageRank с полностью
асинхронным выполнением обновлении рангов вершин, то есть между итерациями PageRank
отсутствует какая-либо синхронизация. Для этого в каждую вершину добавлена ассоциативная
таблица [ ], адресуемая по номеру итерации, а в вызов entry-метода update добавлен номер
итерации ( ), в рамках которои он выполняется.</p>
      <p>Каждая запись [ ]содержит значение ранга вершины на даннои итерации , которое
может быть вычисленным или быть в стадии вычисления, и количество сообщении ,
полученных на даннои итерации от соседних вершин. Когда все сообщения были доставлены для
текущеи итерации (т. е. [ ]. = ), то вершина "переходит" на следующую итерацию
( = + 1), рассылает новые значения своим соседям и ожидает новую порцию сообщении и т.
д. Необходимо отметить, что в вершину могут приходить сообщения с разными , и тогда
информация о них будет попадать в разные записи [ ].
Экспериментальные результаты</p>
      <p>В качестве тестовои платформы использовался вычислительныи кластер Ангара-К1 с
отечественнои коммуникационнои сетью Ангара. Конфигурация Ангара-К1 включает: (1) 24
двухпроцессорных узла с 6-ядерными процессорами Intel Xeon E5-2630, (2) 12 однопроцессорных
узла с 8-ядерными Intel Xeon E5-2660. Все узлы имеют по 64 ГБ оперативнои памяти.
Коммуникационная сеть – Ангара с топологиеи 3D-тор (3x3x4).</p>
      <p>Для тестирования масштабируемости алгоритмов использовались ориентированные
синтетические RMAT графы различного размера (параметр k=16). В качестве генератора
использовался соответствующии код из тестового пакета Graph500. Количество итерации PageRank
равно 3.</p>
      <p>На рисунке 5 приведены графики зависимостеи времени выполнения PageRank от
количества используемых узлов кластера (количество используемых ядер в узле было всегда
равным 8) при постоянном размере графа (сильная масштабируемость). Таким образом, число
вершин графа RMAT-s составляет2 .</p>
      <p>Из графиков видно, что, во-первых, базовыи алгоритм PageRank и алгоритм с подсчетом
сообщении показывают практически одинаковое время выполнения. С однои стороны, это говорит
о достаточно эффективнои реализации механизма обнаружения тишины в Charm++, но, с другои
стороны, максимальное количество узлов достаточно мало и негативныи эффект от выполнения
барьернои синхронизации не заметен. Во-вторых, полностью асинхронныи алгоритм PageRank
имеет более высокую производительность по сравнению с базовым алгоритмом: так, для графа
RMAT-20, на одном узле отношение двух алгоритмов составляет 2,5 раза, а на 16 узлах – 3,1 раза.
Данное ускорение может быть объяснено несбалансированностью вычислении в рамках однои
итерации при выполнении базового алгоритма PageRank (также как и алгоритма с подсчетом
сообщении), в то время как в асинхронном алгоритме данная несбалансированность не имеет
сильного значения, так как итерации выполняются с перекрытием друг относительно друга.</p>
      <p>
        Также была выполнена реализация базового алгоритма с использованием библиотеки
агрегации сообщении TRAM [
        <xref ref-type="bibr" rid="ref17 ref17 ref41 ref41">19</xref>
        ], разработаннои для Charm++ программ. Применение этои
библиотеки позволяет отправлять короткие сообщения, используя механизмы агрегации и
программнои маршрутизации сообщении в заданнои виртуальнои топологии (поддерживаются
многомерные решетки), в узлах которои находятся процессы системы поддержки выполнения
Charm++ (или, что практически одно и то же, MPI-процессы).
      </p>
      <p>Как видно из рисунка 5 использование библиотеки TRAM для реализации базового
алгоритма позволило значительно сократить время выполнения алгоритма по сравнению с
нативнои Charm++ реализации: для графа RMAT-20 на одном узле прирост производительности
составил 4,22 раза, а на 16 узлах – 5,7 раза. Таким образом, реализация базового алгоритма PageRank
с использованием библиотеки TRAM оказалась наиболее эффективнои среди исследуемых
реализации PageRank на Charm++.
(в) (г)
Рис. 5. Время выполнения PageRank на кластере Ангара-К1 для графов RMAT-20 (а), RMAT-22 (б), RMAT-24 (в),</p>
      <p>RMAT-26 (г). Режим сильной масштабируемости
(в)
Рис. 6. Время выполнения PageRank на кластере Ангара-К1 для графов RMAT-16 (а), RMAT-18 (б) и RMAT-20 (в).</p>
      <p>Режим слабой масштабируемости
На рисунке 6 приведены графики зависимости времени выполнения PageRank от
количества используемых узлов кластера (количество используемых ядер в узле – 8) при размере
графа с пропорциональным увеличением от числа узлов (слабая масштабируемость). Таким
образом, количество вершин графа RMAT-s составляет2 ∗ ∗ , где – количество используемых узлов.</p>
      <p>Как видно из графиков на рисунке 6, все эффекты, наблюдаемые в случае сильного
масштабирования, проявляются и при слабом масштабировании. Отличие лишь в несколько
большеи разнице в производительности между асинхронным PageRank, реализованном с
использованием TRAM, и реализациеи на PBGL (особенно для графа RMAT-18).
Заключение</p>
      <p>В статье представлены три асинхронных алгоритма PageRank, реализованных на языке
параллельного программирования Charm++, а также с использованием библиотеки TRAM.
Исследование производительности алгоритмов проводилось на 36-узловом вычислительном
кластере Ангара-К1 на базе коммуникационнои сети Ангара.</p>
      <p>Результаты экспериментов показали, что среди реализации? выполненных на Charm++
наиболее эффективным оказался полностью асинхронныи алгоритм, в котором итерации PageRank
выполняются одновременно. Применение библиотеки TRAM для реализации базового алгоритма
позволило получить почти 5-кратное увеличение производительности. В сравнении с
существующеи реализациеи PageRank в параллельнои библиотеке PBGL реализация PageRank на
TRAM показывает незначительно большую эффективность.</p>
      <p>В даннои работе на примере задачи PageRank продемонстировано, что с помощью
асинхроннои модели вычислении Charm++ (с использованием TRAM) возможно разрабатывать и
реализовывать графовые алгоритмы в вершинно-ориентированном стиле (т. е. стиле vertex-centric),
при этом производительность таких алгоритмом сопоставима с производительностью решении на
базе традиционных моделеи вычислении (в даннои работе – BSP модели и ее реализации в
библиотеке PBGL).</p>
      <p>
        В будущем предполагается сравнение Charm++ с другими системами, поддерживающими
асинхронную модель вычислении, такими как AM++ (ActivePebbles) [
        <xref ref-type="bibr" rid="ref20 ref20 ref44 ref44">22</xref>
        ], Grappa [
        <xref ref-type="bibr" rid="ref21 ref21 ref45 ref45">23</xref>
        ], HPX [
        <xref ref-type="bibr" rid="ref22 ref22 ref46 ref46">24</xref>
        ], а
также исследование масштабируемости алгоритмов на графах большего размера (RMAT-30 и
больше), для чего потребуются кластерные системы с большим числом узлов.
      </p>
      <p>Работа выполнена при поддержке гранта РФФИ №15-07-09368.</p>
      <p>Литература</p>
    </sec>
    <sec id="sec-2">
      <title>References</title>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Brin</surname>
            <given-names>S.</given-names>
          </string-name>
          , Page L.
          <article-title>Reprint of: The anatomy of a large-scale hypertextual web search engine //Computer networks</article-title>
          .
          <source>- 2012</source>
          . -
          <fpage>Т</fpage>
          .
          <year>56</year>
          . -
          <fpage>№</fpage>
          . 18. - С.
          <fpage>3825</fpage>
          -
          <lpage>3833</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Langville</surname>
            <given-names>A. N.</given-names>
          </string-name>
          , Meyer C. D.
          <article-title>Google's PageRank and beyond: The science of search engine rankings</article-title>
          . - Princeton University Press,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Suri</surname>
            <given-names>P. R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Taneja</surname>
            <given-names>H.</given-names>
          </string-name>
          <article-title>An integrated ranking algorithm for efficient information computing in social networks</article-title>
          //arXiv preprint arXiv:
          <volume>1204</volume>
          .
          <fpage>1413</fpage>
          . -
          <lpage>2012</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Sharma</surname>
            <given-names>D.</given-names>
          </string-name>
          et al.
          <article-title>A ranking algorithm for online social network search //</article-title>
          <source>Proceedings of the 6th ACM India Computing Convention. - ACM</source>
          ,
          <year>2013</year>
          . -
          <fpage>С</fpage>
          .
          <year>17</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Winter</surname>
            <given-names>C.</given-names>
          </string-name>
          et al.
          <article-title>Google goes cancer: improving outcome prediction for cancer patients by network-based ranking of marker genes //PLoS Comput Biol</article-title>
          .
          <article-title>-</article-title>
          <year>2012</year>
          . -
          <fpage>Т</fpage>
          . 8. -
          <fpage>№</fpage>
          .
          <fpage>5</fpage>
          ..
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Morrison J. L</surname>
          </string-name>
          . et al.
          <article-title>GeneRank: using search engine technology for the analysis of microarray experiments //BMC bioinformatics</article-title>
          . - 2005. -
          <fpage>Т</fpage>
          . 6. -
          <fpage>№</fpage>
          . 1. -
          <fpage>С</fpage>
          . 1.
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Page L</surname>
          </string-name>
          . et al.
          <article-title>The PageRank citation ranking: bringing order to the web</article-title>
          .
          <article-title>- 1999.</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Kale</surname>
            <given-names>L. V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Krishnan</surname>
            <given-names>S. CHARM</given-names>
          </string-name>
          ++
          <article-title>: a portable concurrent object oriented system based on C++</article-title>
          .
          <source>- ACM</source>
          ,
          <year>1993</year>
          . -
          <fpage>Т</fpage>
          .
          <year>28</year>
          . -
          <fpage>№</fpage>
          . 10. - С.
          <fpage>91</fpage>
          -
          <lpage>108</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Acun</surname>
            <given-names>B.</given-names>
          </string-name>
          et al.
          <article-title>Parallel programming with migratable objects: charm++ in practice //SC14: International Conference for High Performance Computing, Networking, Storage and Analysis</article-title>
          .
          <source>- IEEE</source>
          ,
          <year>2014</year>
          . -
          <fpage>С</fpage>
          .
          <fpage>647</fpage>
          -
          <lpage>658</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Official MPI Forum</surname>
          </string-name>
          web-site, http://mpi-forum.org
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Official OpenMP</surname>
          </string-name>
          web-site, http://openmp.org
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          13.
          <string-name>
            <surname>McCune R. R</surname>
          </string-name>
          .,
          <string-name>
            <surname>Weninger</surname>
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Madey</surname>
            <given-names>G</given-names>
          </string-name>
          .
          <article-title>Thinking like a vertex: a survey of vertex-centric frameworks for large-scale distributed graph processing //ACM Computing Surveys (CSUR)</article-title>
          .
          <source>- 2015</source>
          . -
          <fpage>Т</fpage>
          .
          <year>48</year>
          . -
          <fpage>№</fpage>
          . 2. -
          <fpage>С</fpage>
          .
          <year>25</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          14.
          <string-name>
            <surname>Malewicz</surname>
            <given-names>G.</given-names>
          </string-name>
          et al.
          <article-title>Pregel: a system for large-scale graph processing //</article-title>
          <source>Proceedings of the 2010 ACM SIGMOD International Conference on Management of data. - ACM</source>
          ,
          <year>2010</year>
          . -
          <fpage>С</fpage>
          .
          <fpage>135</fpage>
          -
          <lpage>146</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          15.
          <string-name>
            <surname>Seshadhri</surname>
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pinar</surname>
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kolda</surname>
            <given-names>T. G.</given-names>
          </string-name>
          <article-title>An in-depth study of stochastic Kronecker graphs</article-title>
          //
          <source>2011 IEEE 11th International Conference on Data Mining. - IEEE</source>
          ,
          <year>2011</year>
          . -
          <fpage>С</fpage>
          .
          <fpage>587</fpage>
          -
          <lpage>596</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          16.
          <string-name>
            <surname>Murphy R. C</surname>
          </string-name>
          . et al.
          <source>Introducing the graph</source>
          <volume>500</volume>
          //Cray User's Group (CUG).
          <article-title>- 2010.</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          18.
          <string-name>
            <surname>Симонов</surname>
            <given-names>А.С.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Макагон</surname>
            <given-names>Д</given-names>
          </string-name>
          .В.,
          <string-name>
            <surname>Жабин</surname>
            <given-names>И</given-names>
          </string-name>
          .А.,
          <string-name>
            <surname>Щербак</surname>
            <given-names>А</given-names>
          </string-name>
          .Н.,
          <string-name>
            <surname>Сыромятников</surname>
            <given-names>Е</given-names>
          </string-name>
          .Л.,
          <string-name>
            <surname>Поляков</surname>
            <given-names>Д</given-names>
          </string-name>
          .А.
          <article-title>Первое поколение высокоскоростной коммуникационной сети</article-title>
          «Ангара» // Наукоемкие технологии.
          <source>- 2014</source>
          . -
          <fpage>Т</fpage>
          . 15,
          <string-name>
            <surname>No1</surname>
          </string-name>
          . - С.
          <fpage>21</fpage>
          -
          <lpage>28</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          19.
          <string-name>
            <surname>Wesolowski L</surname>
          </string-name>
          . et al.
          <article-title>Tram: Optimizing fine-grained communication with topological routing and</article-title>
          aggregation of messages //
          <source>2014 43rd International Conference on Parallel Processing. - IEEE</source>
          ,
          <year>2014</year>
          . -
          <fpage>С</fpage>
          .
          <fpage>211</fpage>
          -
          <lpage>220</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          20.
          <string-name>
            <surname>Gregor</surname>
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lumsdaine</surname>
            <given-names>A</given-names>
          </string-name>
          .
          <article-title>The parallel BGL: A generic library for distributed graph computations //Parallel Object-Oriented Scientific Computing (POOSC)</article-title>
          .
          <source>- 2005. - Т. 2. - С</source>
          .
          <fpage>1</fpage>
          -
          <lpage>18</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          21.
          <string-name>
            <surname>Cheatham</surname>
            <given-names>T.</given-names>
          </string-name>
          et al.
          <article-title>Bulk synchronous parallel computing-a paradigm for transportable software //Tools and Environments for Parallel</article-title>
          and
          <string-name>
            <given-names>Distributed</given-names>
            <surname>Systems</surname>
          </string-name>
          . - Springer US,
          <year>1996</year>
          . -
          <fpage>С</fpage>
          .
          <fpage>61</fpage>
          -
          <lpage>76</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          22.
          <string-name>
            <surname>Willcock J. J</surname>
          </string-name>
          . et al.
          <article-title>Active pebbles: parallel programming for data-driven applications //</article-title>
          <source>Proceedings of the international conference on Supercomputing. - ACM</source>
          ,
          <year>2011</year>
          . -
          <fpage>С</fpage>
          .
          <fpage>235</fpage>
          -
          <lpage>244</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          23.
          <string-name>
            <surname>Nelson</surname>
            <given-names>J</given-names>
          </string-name>
          . et al.
          <article-title>Grappa: A latency-tolerant runtime for large-scale irregular applications</article-title>
          //International Workshop on RackScale Computing (WRSC w/EuroSys).
          <article-title>- 2014.</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          24.
          <string-name>
            <surname>Kaiser</surname>
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Brodowicz</surname>
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sterling</surname>
            <given-names>T. Parallex</given-names>
          </string-name>
          <article-title>an advanced parallel execution model for scaling-impaired applications //2009</article-title>
          <source>International Conference on Parallel Processing Workshops. - IEEE</source>
          ,
          <year>2009</year>
          . -
          <fpage>С</fpage>
          .
          <fpage>394</fpage>
          -
          <lpage>401</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          <string-name>
            <surname>Brin S.</surname>
          </string-name>
          , Page L.
          <article-title>Reprint of: The anatomy of a large-scale hypertextual web search engine //Computer networks</article-title>
          .
          <source>- 2012</source>
          . - Т.
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          <string-name>
            <surname>Langville A. N.</surname>
          </string-name>
          , Meyer C. D.
          <article-title>Google's PageRank and beyond: The science of search engine rankings</article-title>
          . - Princeton University Press,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          3.
          <string-name>
            <surname>Suri</surname>
            <given-names>P. R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Taneja</surname>
            <given-names>H.</given-names>
          </string-name>
          <article-title>An integrated ranking algorithm for efficient information computing in social networks</article-title>
          //arXiv preprint arXiv:
          <volume>1204</volume>
          .
          <fpage>1413</fpage>
          . -
          <lpage>2012</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          4.
          <string-name>
            <surname>Sharma</surname>
            <given-names>D.</given-names>
          </string-name>
          et al.
          <article-title>A ranking algorithm for online social network search //</article-title>
          <source>Proceedings of the 6th ACM India Computing Convention. - ACM</source>
          ,
          <year>2013</year>
          . -
          <fpage>С</fpage>
          .
          <year>17</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          5.
          <string-name>
            <surname>Winter</surname>
            <given-names>C.</given-names>
          </string-name>
          et al.
          <article-title>Google goes cancer: improving outcome prediction for cancer patients by network-based ranking of marker genes //PLoS Comput Biol</article-title>
          .
          <article-title>-</article-title>
          <year>2012</year>
          . -
          <fpage>Т</fpage>
          . 8. -
          <fpage>№</fpage>
          .
          <fpage>5</fpage>
          ..
        </mixed-citation>
      </ref>
      <ref id="ref28">
        <mixed-citation>
          6.
          <string-name>
            <surname>Morrison J. L</surname>
          </string-name>
          . et al.
          <article-title>GeneRank: using search engine technology for the analysis of microarray experiments //BMC bioinformatics</article-title>
          . - 2005. -
          <fpage>Т</fpage>
          . 6. -
          <fpage>№</fpage>
          . 1. -
          <fpage>С</fpage>
          . 1.
        </mixed-citation>
      </ref>
      <ref id="ref29">
        <mixed-citation>
          7.
          <string-name>
            <surname>Page L</surname>
          </string-name>
          . et al.
          <article-title>The PageRank citation ranking: bringing order to the web</article-title>
          .
          <article-title>- 1999.</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref30">
        <mixed-citation>
          8.
          <string-name>
            <surname>Kale</surname>
            <given-names>L. V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Krishnan</surname>
            <given-names>S. CHARM</given-names>
          </string-name>
          ++
          <article-title>: a portable concurrent object oriented system based on C++</article-title>
          .
          <source>- ACM</source>
          ,
          <year>1993</year>
          . -
          <fpage>Т</fpage>
          .
          <year>28</year>
          . -
          <fpage>№</fpage>
          . 10. - С.
          <fpage>91</fpage>
          -
          <lpage>108</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref31">
        <mixed-citation>
          9.
          <string-name>
            <surname>Acun</surname>
            <given-names>B.</given-names>
          </string-name>
          et al.
          <article-title>Parallel programming with migratable objects: charm++ in practice //SC14: International Conference for High Performance Computing, Networking, Storage and Analysis</article-title>
          .
          <source>- IEEE</source>
          ,
          <year>2014</year>
          . -
          <fpage>С</fpage>
          .
          <fpage>647</fpage>
          -
          <lpage>658</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref32">
        <mixed-citation>
          10.
          <string-name>
            <surname>Official MPI Forum</surname>
          </string-name>
          web-site, http://mpi-forum.org
        </mixed-citation>
      </ref>
      <ref id="ref33">
        <mixed-citation>
          11.
          <string-name>
            <surname>Official OpenMP</surname>
          </string-name>
          web-site, http://openmp.org
        </mixed-citation>
      </ref>
      <ref id="ref34">
        <mixed-citation>
          12.
          <string-name>
            <surname>Frolov</surname>
            <given-names>A.S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Semenov</surname>
            <given-names>A.S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Markov</surname>
            <given-names>A.S.</given-names>
          </string-name>
          <article-title>Obzor instrumental'nykh sredstv razrabotki parallel'nykh grafovykh prilozheniy dlya superkomp'yuternykh kompleksov // «Vychislitel'nye nanotekhnologii»</article-title>
          .
          <source>- №4</source>
          . -
          <fpage>2015</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref35">
        <mixed-citation>
          13.
          <string-name>
            <surname>McCune R. R</surname>
          </string-name>
          .,
          <string-name>
            <surname>Weninger</surname>
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Madey</surname>
            <given-names>G</given-names>
          </string-name>
          .
          <article-title>Thinking like a vertex: a survey of vertex-centric frameworks for large-scale distributed graph processing //ACM Computing Surveys (CSUR)</article-title>
          .
          <source>- 2015</source>
          . -
          <fpage>Т</fpage>
          .
          <year>48</year>
          . -
          <fpage>№</fpage>
          . 2. -
          <fpage>С</fpage>
          .
          <year>25</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref36">
        <mixed-citation>
          14.
          <string-name>
            <surname>Malewicz</surname>
            <given-names>G.</given-names>
          </string-name>
          et al.
          <article-title>Pregel: a system for large-scale graph processing //</article-title>
          <source>Proceedings of the 2010 ACM SIGMOD International Conference on Management of data. - ACM</source>
          ,
          <year>2010</year>
          . -
          <fpage>С</fpage>
          .
          <fpage>135</fpage>
          -
          <lpage>146</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref37">
        <mixed-citation>
          15.
          <string-name>
            <surname>Seshadhri</surname>
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pinar</surname>
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kolda</surname>
            <given-names>T. G.</given-names>
          </string-name>
          <article-title>An in-depth study of stochastic Kronecker graphs</article-title>
          //
          <source>2011 IEEE 11th International Conference on Data Mining. - IEEE</source>
          ,
          <year>2011</year>
          . -
          <fpage>С</fpage>
          .
          <fpage>587</fpage>
          -
          <lpage>596</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref38">
        <mixed-citation>
          16.
          <string-name>
            <surname>Murphy R. C</surname>
          </string-name>
          . et al.
          <source>Introducing the graph</source>
          <volume>500</volume>
          //Cray User's Group (CUG).
          <article-title>- 2010.</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref39">
        <mixed-citation>
          17.
          <string-name>
            <surname>Simonov</surname>
            <given-names>A.S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Zhabin</surname>
            <given-names>I.A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Makagon D</surname>
          </string-name>
          .V.
          <article-title>Razrabotka mezhuzlovoy kommunikatsionnoy seti s topologiey «mnogomernyy tor» i podderzhkoy global'no adresuemoy pamyati dlya perspektivnykh otechestvennykh superkomp'yuterov</article-title>
          . // Nauchnotekhnicheskaya konferentsiya «
          <article-title>Perspektivnye napravleniya razvitiya vychislitel'noy tekhniki»</article-title>
          ,
          <source>OAO «NITsEVT»</source>
          ,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref40">
        <mixed-citation>
          18.
          <string-name>
            <surname>Simonov</surname>
            <given-names>A.S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Makagon</surname>
            <given-names>D.V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Zhabin</surname>
            <given-names>I.A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Shcherbak</surname>
            <given-names>A.N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Syromyatnikov</surname>
            <given-names>E.L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Polyakov</surname>
            <given-names>D.A.</given-names>
          </string-name>
          <article-title>Pervoe pokolenie vysokoskorostnoy kommunikatsionnoy seti</article-title>
          «Angara» // Naukoemkie tekhnologii.
          <source>- 2014</source>
          . - T.
          <volume>15</volume>
          ,
          <string-name>
            <surname>No1</surname>
          </string-name>
          . - S.
          <fpage>21</fpage>
          -
          <lpage>28</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref41">
        <mixed-citation>
          19.
          <string-name>
            <surname>Wesolowski L</surname>
          </string-name>
          . et al.
          <article-title>Tram: Optimizing fine-grained communication with topological routing and</article-title>
          aggregation of messages //
          <source>2014 43rd International Conference on Parallel Processing. - IEEE</source>
          ,
          <year>2014</year>
          . -
          <fpage>С</fpage>
          .
          <fpage>211</fpage>
          -
          <lpage>220</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref42">
        <mixed-citation>
          20.
          <string-name>
            <surname>Gregor</surname>
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lumsdaine</surname>
            <given-names>A</given-names>
          </string-name>
          .
          <article-title>The parallel BGL: A generic library for distributed graph computations //Parallel Object-Oriented Scientific Computing (POOSC)</article-title>
          .
          <source>- 2005. - Т. 2. - С</source>
          .
          <fpage>1</fpage>
          -
          <lpage>18</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref43">
        <mixed-citation>
          21.
          <string-name>
            <surname>Cheatham</surname>
            <given-names>T.</given-names>
          </string-name>
          et al.
          <article-title>Bulk synchronous parallel computing-a paradigm for transportable software //Tools and Environments for Parallel</article-title>
          and
          <string-name>
            <given-names>Distributed</given-names>
            <surname>Systems</surname>
          </string-name>
          . - Springer US,
          <year>1996</year>
          . -
          <fpage>С</fpage>
          .
          <fpage>61</fpage>
          -
          <lpage>76</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref44">
        <mixed-citation>
          22.
          <string-name>
            <surname>Willcock J. J</surname>
          </string-name>
          . et al.
          <article-title>Active pebbles: parallel programming for data-driven applications //</article-title>
          <source>Proceedings of the international conference on Supercomputing. - ACM</source>
          ,
          <year>2011</year>
          . -
          <fpage>С</fpage>
          .
          <fpage>235</fpage>
          -
          <lpage>244</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref45">
        <mixed-citation>
          23.
          <string-name>
            <surname>Nelson</surname>
            <given-names>J</given-names>
          </string-name>
          . et al.
          <article-title>Grappa: A latency-tolerant runtime for large-scale irregular applications</article-title>
          //International Workshop on RackScale Computing (WRSC w/EuroSys).
          <article-title>- 2014.</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref46">
        <mixed-citation>
          24.
          <string-name>
            <surname>Kaiser</surname>
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Brodowicz</surname>
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sterling</surname>
            <given-names>T. Parallex</given-names>
          </string-name>
          <article-title>an advanced parallel execution model for scaling-impaired applications //2009</article-title>
          <source>International Conference on Parallel Processing Workshops. - IEEE</source>
          ,
          <year>2009</year>
          . -
          <fpage>С</fpage>
          .
          <fpage>394</fpage>
          -
          <lpage>401</lpage>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>