<!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>Early Experience with Integrating Charm++ Support to Green-Marl Domain-Speci c Language</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Alexander Frolov JSC NICEVT Moscow</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Russia frolov@nicevt.ru</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Copyright c by the paper's authors. Copying permitted for private and academic purposes. In: V. Voevodin, A. Simonov (eds.): Proceedings of the GraphHPC-2017 Conference, Moscow State University</institution>
          ,
          <addr-line>Russia, 02-03-2017, published at</addr-line>
        </aff>
      </contrib-group>
      <abstract>
        <p>The paper presents the implementation of the code generation mechanism in the Green-Marl domain-speci c language compiler targeted at the Charm++ framework. Green-Marl is used for parallel static graph analysis and adopts imperative shared memory programming model, while Charm++ implements a message-driven execution model. The description of the graph representation in the generated Charm++ code, as well as of the translation of the common Green-Marl constructs to Charm++, is presented. The evaluation of the typical graph algorithms (Single-Source Shortest Path, Connected Components, and PageRank) showed that the Green-Marl programs translated to the Charm++ have almost the same performance as their native implementations in Charm++.</p>
      </abstract>
      <kwd-group>
        <kwd>domain-speci c language</kwd>
        <kwd>datadriven computation models</kwd>
        <kwd>graph computations</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        A parallel static graph analysis on high-performance
computing systems (supercomputers) is one of the
recent application domains which is characterized by a
domination of irregular data processing rather than
massive bulks of oating point operations which are
common in other scienti c applications used for
supercomputers. The key challenges of parallel graph
processing are discussed in [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ].
      </p>
      <p>The paper presents the results of the e orts to
integrate a Charm++ support to the Green-Marl
compiler. Green-Marl is an open-source
domainspeci c programming language (DSL) designed for
static graph processing. Charm++ is an asynchronous
message-driven execution model developed to execute
parallel programs on multiprocessor computing
systems. Charm++ relies on its runtime system to
schedule computation, as well as perform dynamic load
balancing.</p>
      <p>For the translation of Green-Marl programs to
Charm++ a code generation module has been
developed in the Green-Marl compiler that uses the existing
internal representation of a Green-Marl program for
Charm++ code generation. For performance
evaluation we used three well-known graph problems:
SingleSource Shortest Path (SSSP), Connected Components
(CC), and PageRank. We compared the performance
of the generated code to the hand-coded reference
implementations.</p>
      <p>In the next section an overview of research e orts on
asynchronous computation models and graph-speci c
DSLs is presented. In section 3 a brief description of
the Green-Marl DSL is presented, section 4 contains
an overview of the Charm++ programming model.
Section 5 shows the main technical aspects of
translating Green-Marl programs to Charm++. Section 6
presents results of the performance evaluation. The
nal section contains conclusion and future work.
2</p>
    </sec>
    <sec id="sec-2">
      <title>Related</title>
    </sec>
    <sec id="sec-3">
      <title>Work</title>
      <p>
        A usage of common approaches to the development
of parallel graph applications for massive parallel,
distributed memory systems such as MPI or Shmem in
combination with OpenMP is complicated due to its
limited support for expressing irregular parallelism
and implicit orientation on statically balanced
parallel bulk-synchronous problems, and, therefore, the
complexity of implementing parallel graph algorithms
falls on the application developer. In contrast, the
asynchronous data- ow computational models enable
almost transparent mapping of the graph algorithms.
The examples of such models which are built on top of
asynchronous active messages concept are Charm++
[
        <xref ref-type="bibr" rid="ref3 ref4">2, 3</xref>
        ], Active Pebbles [
        <xref ref-type="bibr" rid="ref5 ref6">4, 5</xref>
        ], HPX [
        <xref ref-type="bibr" rid="ref7">6</xref>
        ]. The researched
next generation parallel programming languages such
as Chapel [
        <xref ref-type="bibr" rid="ref10 ref8 ref9">7, 8, 9</xref>
        ] and X10 [
        <xref ref-type="bibr" rid="ref11 ref12">10, 11</xref>
        ] also support active
messages as one of the base principles of their
programming models.
      </p>
      <p>
        Even better productivity of the graph application
development can be achieved with a usage of
highlevel domain-speci c languages which enable to shift a
major part of work on the control of parallel execution,
including task spawning, communication,
synchronization, etc. to the compiler and dynamic load
balancing and a failure resiliency { to the runtime system.
There are few DSLs speci cally developed for a
parallel static graph analysis such as Green-Marl [
        <xref ref-type="bibr" rid="ref13 ref14 ref15">12,13,14</xref>
        ],
OptiGraph, Elixir [
        <xref ref-type="bibr" rid="ref16">15</xref>
        ], and Falcon [
        <xref ref-type="bibr" rid="ref17">16</xref>
        ]. However,
none of them supports distributed memory
massiveparallel HPC systems, rather the researchers focused
their work on the shared memory systems, GPUs, and
Big Data platforms.
3
      </p>
    </sec>
    <sec id="sec-4">
      <title>Green-Marl</title>
      <p>
        Green-Marl [
        <xref ref-type="bibr" rid="ref13 ref14 ref15">12, 13, 14</xref>
        ] is an open-source
domainspeci c programming language designed for a parallel
static graph analysis in Stanford University
(Pervasive Parallel Laboratory, PPL). The Green-Marl
compiler supports translation to the following parallel
programming models: OpenMP and Pregel [
        <xref ref-type="bibr" rid="ref18">17</xref>
        ]. The
OpenMP backend allows to run Green-Marl programs
on shared memory multi-processor systems, while the
Pregel backends (there are two slightly di erent
backends with Pregel implementations: GPS and Giraph)
enable to use Green-Marl for distributed
massiveparallel computing systems.
      </p>
      <p>Green-Marl supports special types for declaration
of graphs (Graph), vertices (Node), and edges (Edge),
as well as declaration of vertex properties (N P&lt;type &gt;)
and edges properties (E P&lt;type &gt;).</p>
      <p>Besides the While and Do-While constructs used
for de ning sequential loops and If and If-Else for
branches, Green-Marl provides statements for parallel
execution such as For and Foreach loops. The
semantics of the parallel loops assumes that all computations
should be nished before the rst operation after the
loop is executed. However, the order of the iteration
execution is not de ned.</p>
      <p>Green-Marl supports the following reduction
operators +=, *=, max=, min=, &amp;&amp;=, ||=. These operators
can be used in parallel loops to produce reduction
assignments.
1 Procedure sssp(G:Graph, dist:N_P&lt;Int&gt;, len:E_P&lt;Int&gt;,
2 root: Node)
3 {
4 N_P&lt;Bool&gt; updated;
5 N_P&lt;Bool&gt; updated_nxt;
6 N_P&lt;Int&gt; dist_nxt;
7
8 Bool fin = False;
9 G.dist = (G == root) ? 0 : +INF;
10 G.updated = (G == root) ? True: False;
11 G.dist_nxt = G.dist;
12 G.updated_nxt = G.updated;
13
14 While(!fin) {
15 fin = True;
16 Foreach(n: G.Nodes)(n.updated) {
17 Foreach(s: n.Nbrs) {
18 Edge e = s.ToEdge();
19 &lt;s.dist_nxt; s.updated_nxt&gt;
20 min= &lt;n.dist + e.len; True, n&gt;;
21 }
22 }
23 G.dist = G.dist_nxt;
24 G.updated = G.updated_nxt;
25 G.updated_nxt = False;
26 fin = ! Exist(n: G.Nodes){n.updated};
27 }
28 }</p>
      <p>In Figure 1 an implementation of the Bellman-Ford
algorithm for nding the shortest paths from the
speci ed vertex to other vertices in the graph is presented.
The program consists of a single procedure (sssp) with
four parameters: G is a graph to be analyzed, dist is
a vertex property storing the distance from the source
vertex, len is an edge property storing the edge length
(or weight), and root is a source vertex.</p>
      <p>In the initialization step (lines 8-12) dist is set to
+INF for all vertices except the root vertex which dist
is set to zero. Also, the root vertex is marked by
setting its update property to true which signi es that
the vertex will be processed in the rst iteration of the
While loop (lines 14-17). Then the While loop is
executed. It completes when fin is set to true that is
there is no more updated vertices in the graph. In each
iteration of the While loop a parallel Foreach loop is
executed (lines 16-22), which scans vertices and for
each previously updated vertex (i.e. its updated
property is set to true) checks neighbour vertices by
executing a relaxation operation: if dist[v] + weight(v,u)
&lt; dist[u] for the (v,u) edge then dist[u] is assigned to
dist[v] + weight(v,u) (lines 19-20). The number of
iterations of the While loop is restricted to jV j 1 (upper
bound).</p>
      <p>Therefore, Green-Marl is an imperative
domainspeci c programming language designed for a
parallel static graph analysis. Green-Marl allows to
signi cantly simplify the development of parallel graph
applications by its builtin specialized high-level
abstractions as well as the diverse set of the compiler
optimizations. However, it still lacks the support of
the translation to e ective programming platform for
HPC systems with distributed memory.
4</p>
    </sec>
    <sec id="sec-5">
      <title>Charm++</title>
      <p>
        Charm++ [
        <xref ref-type="bibr" rid="ref3 ref4">2, 3</xref>
        ] is a parallel programming framework
which is based on the object-oriented asynchronous
message-driven execution model. Charm++
designed and developed in Illinois University of
UrbanaChampaign (Parallel Programming Laboratory, PPL).
As a framework, Charm++ includes the following core
components: a compiler used to translate application's
objects interfaces to the C++ code and a runtime
system which drives the application execution process.
      </p>
      <p>In Charm++ a program consists of a set of chares,
implemented as C++ objects, that have an interface
of prede ned methods (entry methods) which can be
used to transfer data between chares and initiating
asynchronous computations, that is caller thread will
proceed its execution. A mapping of chares to process
elements (PEs) is done statically by the Charm++
runtime (by default) or by application developer.
Typically, PE can be regarded as a CPU core (or an
operating system process assigned to a CPU core).
Additionally to stand-alone chares, single-dimensional and
multi-dimensional chare arrays are supported.</p>
      <p>For addressing chares special proxy objects are used
that provide an abstraction of global address space
and enable the Charm++ runtime to manage location
and distribution of chares transparently for
application. This allows to use dynamic load balancing by
migrating chares from more loaded nodes to less loaded
by the runtime system. A migratability of chares is
another base concept of the Charm++ programming
model.</p>
      <p>The following properties of the Charm++ model:
rst, an entry method can only access data which
belong to the chare that it is called on, and, second, that
only single entry method can be executed on a chare
at a time, guarantee the atomicity of modi cations of
chare's data in Charm++ that signi cantly simpli es
application development.
5</p>
    </sec>
    <sec id="sec-6">
      <title>Porting</title>
    </sec>
    <sec id="sec-7">
      <title>Charm++</title>
      <p>5.1</p>
      <p>Compiler Overview</p>
    </sec>
    <sec id="sec-8">
      <title>Green-Marl</title>
    </sec>
    <sec id="sec-9">
      <title>Compiler to</title>
      <p>
        The Green-Marl compiler performs a source-to-source
translation from Green-Marl to one of the possible
equivalent representations: a sequential C++ code,
a parallel code for shared memory systems in C++
with OpenMP pragmas, a parallel code for distributed
memory systems in Java on top of Pregel [
        <xref ref-type="bibr" rid="ref18">17</xref>
        ] (namely,
one of the two Java based implementations of Pregel:
GPS [
        <xref ref-type="bibr" rid="ref19">18</xref>
        ] or Giraph [?, 19]), which is a vertex-centric
programming model built on the Bulk Synchronous
Parallel (BSP) execution model [
        <xref ref-type="bibr" rid="ref21">20</xref>
        ].
      </p>
      <p>The general scheme of Green-Marl is shown in
Figure 2. The main stages of translation are the
following: a lexical and syntax analysis (type checking,
a syntactic sugar expansion etc.), platform
independent optimizations (such as loop splitting and
merging, loop-invariant code motion etc.), platform speci c
optimizations and a nal code generation.</p>
      <p>An internal representation of the program in the
Green-Marl compiler includes an abstract syntax tree
(AST) and a control- ow graph (a nite state
machine, FSM), the nodes of the graph (or extended basic
blocks, EBB) correspond to linear blocks of code in the
translated program. Each EBB contains information
about local variables, incoming and outgoing
dependencies, code statements, etc.</p>
      <p>
        The FSM states can be of two types: sequential
(SEQ) and parallel (PAR). The sequential nodes
correspond to the code blocks in which the statements
should be executed in the strict order. The parallel
nodes correspond to the code blocks which suggest
execution for each vertex of the graph in parallel (Foreach
and For loops).
The developed Charm++ code generator is based on
the GPS generator developed for translating
GreenMarl programs to the Pregel execution model, a full
description of the GPS generator can be found in [
        <xref ref-type="bibr" rid="ref15">14</xref>
        ].
However, the Charm++ programming model is more
general than Pregel, which allows, rst, to relatively
easy implement the Pregel model and, second, extends
the possibilities of Green-Marl translator, that is
increase the variety Green-Marl programs which can be
translated to Charm++.
      </p>
      <p>At the same time, to prove the concept of the
possibility to translate Green-Marl programs to Charm++
it was su cient to implement the last stage of the
compiler { code generation from the internal program
representation (IR). Further, a description of the
translation methods is presented for main Green-Marl
constructs. As an example, a program for calculating a
mean age of all registered users of a social network
whose age is less than K. The source code of the
GreenMarl program and the generated code in Charm++ are
shown in Figure 3.</p>
      <p>Graph representation in the generated code
For a graph representation in the generated code in
Charm++ the most simple and natural approach has
been chosen: vertices of the graph are mapped to the
chares (i.e. the elements of the chare array), which are
de ned in the code by the name vertex class, name
is a name of the translated Green-Marl procedure.</p>
      <p>The vertex properties data structure is used for
storing vertex attributes, while edges is used for { an
edge list of the vertex, each edge is a pair of a
neighbour identi er and its attributes (edge properties).
As a 1-dimensional chare array (array [1D]) is used
for storing graph vertices then the vertices are
distributed in contiguous blocks over parallel processes
(or cores) by the Charm++ runtime system.</p>
      <p>In the example (see Figure 3) the vertices are
represented by the count vertex class (Figure 3 (b), lines
14{18, 3, lines 26{52). The vertices have a single
attribute age, which is stored in the vertex properties
class. As the attributes for edges are not de ned in the
Green-Marl program then edge properties does not
have any eld.</p>
      <sec id="sec-9-1">
        <title>FSM construction</title>
        <p>As it has already been mentioned, after the
controlow analysis the Green-Marl compiler creates a nite
state machine (FSM). For managing the execution of
FSM a special chare (name master) is created, each
state of FSM is mapped to one of the entry methods:
ep state i, where i is a number of the FSM state.
The program starts with the execution of ep state 0
then the states are switched according to FSM. When
PAR states are executed, an appropriate call is
initiated to all chares of the name vertex class (i.e. array
elements). Then master (name master) waits until
all computation are done (by using a quiescence
detection) and then an entry method correspondent to
the next FSM state is executed. The process continues
until the terminal ( nal) state is called.</p>
        <p>In the example FSM consists of three states (see
Figure 4) which correspond to the following
entry methods of the count master: ep state 0,
ep state 1 and ep state 2. As the state 1 is
parallel, then it has a correspondent entry method in the
count vertex class ( ep state 1). In the terminal
state (state 2) the callback (done callback) is
triggered to move control ow to the boiler-plate code (or
code of the Green-Marl program loader).</p>
      </sec>
      <sec id="sec-9-2">
        <title>Global variables and reduction</title>
        <p>In Green-Marl, all variables can be of two types: global
and local (for vertices). The global variables are
declared in the sequential code blocks and can be
accessed from the parallel code blocks. All global
variables are stored in the name master class as its
member variables. In case of a read access to the global
variable from the Foreach loop, its value is passed
as a parameter of the correspondent entry method to
all vertices (name vertex). In case of a write access
then the correspondent entry method of name master
is called, however, when write accesses operations are
performed to the same global variable from the
multiple vertices then race conditions occur and the
behaviour is unde ned.</p>
        <p>The Green-Marl compiler applies the contribute
operation supported in Charm++ to implement
reductions which can be used in Green-Marl programs.
In Charm++ there are several supported reductions
operations which can be applied to the chare array
elements, the mechanism suggests that a speci ed
entry method (of the speci ed chare) is called when
reduction is completed which has to be marked with
reductiontarget keyword and has a single parameter
which will store the result of the reduction.</p>
        <p>In the example (see Figure 3) three global
variables are used (S, C, K). The K value is used
inside the Foreach loop, therefore ep state 2 in
count vertex receives K as one of the parameters of
the ep state2 msg structure, which is a Charm++
message (message). S and C are used for the reduction
results (lines 7, 8). In the generated code there are two
methods in the count master class: reduction S
(line 3) and reduction (line 4) which are used for
passing the reduction results to the S and C variables.</p>
        <p>In conclusion of this section we can say that for
implementing Charm++ support in the Green-Marl
compiler it was su cient to add a new code
generation module to the existing backend chain for GPS
code generation. However, as it has been mentioned,
Charm++ has signi cantly more exibility and
generality than Pregel that is why it provides wider
possibilities to the compiler as well as to the domain-speci c
language itself. Using of these possibilities is the topic
of further research.
6</p>
      </sec>
    </sec>
    <sec id="sec-10">
      <title>Performance Evaluation</title>
      <p>
        For benchmarking a 32-node Angara-K1 cluster has
been used, we used its 24-node segment with dual
6core Intel Xeon E5-2630 processors and 64 GB of
memory in each node. The nodes are connected by a
custom 4D-torus Angara interconnect [
        <xref ref-type="bibr" rid="ref22">21</xref>
        ]. Eight CPU
cores have been used per each node in the test runs to
keep total number of processes equal to power of two,
however, it may not be necessary in the general case.
      </p>
      <p>The benchmarks used for the performance
evaluation include: Single-Source Shortest paths (SSSP),
Connected Components (CC), and PageRank. We
compared the performance of Green-Marl programs to
their hand-written Charm++ invariants (or reference
implementations).</p>
      <p>
        We used two types of synthetic graphs: RMAT [
        <xref ref-type="bibr" rid="ref23">22</xref>
        ]
and Random. RMAT graphs have been designed to
simulate many real-world graphs, which are
characterized by a power law of degree distribution (for example
social networks, etc.). For RMAT graphs we used
generator from the Graph500 test. Random graphs have a
random uniform distribution of edges over graph
vertices.
      </p>
      <p>The performance results are shown in Figure 5. In
all plots the graph size is 222 vertices. For SSSP and
PageRank directed graphs have been used, while for
CC { undirected.</p>
      <p>For SSSP (as well as for CC) the two di erent
reference implementations in Charm++ have been used.
The rst is sssp-async (cc-async) and it implements
a fully asynchronous algorithm which employs a label
updating approach. For SSSP the updated label is
a distance from the root vertex (dist) in each
vertex, while for CC { identi er of connected
component (CC). The computation process continues until
any update is possible. When there is no more
updates in the graph then the algorithm nishes, this is
controlled by a quiescence detection mechanism,
supported in Charm++. Another reference
implementation sssp-adapt (cc-adapt) is similar to the rst
except that a global synchronization is used to
control label propagation (the new labels are sent only to
the neighbour vertices of the front and then a global
synchronization is performed). In Green-Marl
implementations of the tests it is achieved by the outer loop
While.</p>
      <p>As can be seen from Figure 5, for SSSP and CC
the performance of Green-Marl implementations is
very close to the performance of the reference
implementation with a partially synchronized algorithm
(sssp-adapt for SSSP and cc-adapt for CC). For
CC the adapted reference implementation shows even
better performance than asynchronous one. It can
look unexpected, but the following reasons of such
behaviour are possible: rst, while the partially
synchronized algorithms (sssp-adapt and cc-adapt)
restrict the amount of available parallelism, at the same
time the number of active messages sent during
execution of the programs is also signi cantly restricted,
thus resulting in less overheads from the runtime
system and less memory consumption, and, second, the
fully asynchronous implementations (sssp-async and
cc-async) generate many speculative computations
(speculative wavefronts), for example propagating of
the distance which is not minimal for SSSP. It
results in large amount of unnecessary computations and
degradation of performance. For the partially
synchronized implementations the amount of speculative
computations is signi cantly lesser.</p>
      <p>The evaluation of PageRank has not revealed any
signi cant di erence in performance between reference
and Green-Marl versions. In the rst order, it is
explained by the fact that for both cases the algorithms
are very close (almost the same).
7</p>
    </sec>
    <sec id="sec-11">
      <title>Conclusion and Future Work</title>
      <p>In the paper the Charm++ code generator
developed for the compiler of the domain-speci c language
Green-Marl is presented. Therefore, the Green-Marl
DSL is extended to HPC clusters with distributed
memory: Charm++ is added to already supported
OpenMP, GPS, and Giraph target platforms.</p>
      <p>
        The performance evaluation shows that Green-Marl
programs compiled to Charm++ have the same
performance as native Charm++ programs assuming that
the same algorithms are used in the generated code
and the reference implementation. In the future we
plan to add a support of the Topological Routing and
Aggregation Module (TRAM) [
        <xref ref-type="bibr" rid="ref24">23</xref>
        ] to the Charm++
code generator implemented in the Green-Marl
compiler.
      </p>
    </sec>
    <sec id="sec-12">
      <title>Acknowledgment</title>
      <p>This work is partially supported by Russian
Foundation for Basic Research (RFBR) under Contract
1507-09368.
8
16
(c) PageRank, RMAT-22
pagerank (Green-Marl)
pagerank (Charm++)</p>
      <p>4
nodes
4
nodes
(a) SSSP, RMAT-22</p>
      <p>sssp (Green-Marl)
sssp-async (Charm++)
sssp-adapt (Charm++)
0
1
2
(b) CC, RMAT-22</p>
      <p>cc (Green-Marl)
cc-async (Charm++)
cc-adapt (Charm++)
4
nodes
2
8
16
1
2
8
16
1
2
8
16
(d) SSSP, Random-22
(e) CC, Random-22
sssp (Green-Marl)
sssp-async (Charm++)
sssp-adapt (Charm++)
cc (Green-Marl)
cc-async (Charm++)
cc-adapt (Charm++)
pagerank (Green-Marl)
pagerank (Charm++)</p>
      <p>4
nodes</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>A.</given-names>
            <surname>Lumsdaine</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D. P.</given-names>
            <surname>Gregor</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Hendrickson</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J. W.</given-names>
            <surname>Berry</surname>
          </string-name>
          , \
          <article-title>Challenges in parallel graph processing,"</article-title>
          <source>Parallel Processing Letters</source>
          , vol.
          <volume>17</volume>
          , no.
          <issue>1</issue>
          , pp.
          <volume>5</volume>
          {
          <issue>20</issue>
          ,
          <year>2007</year>
          . http://dblp.uni-trier.
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          de/rec/bib/journals/ppl/LumsdaineGHB07 (accessed: 10/23/
          <year>2017</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>L. V.</given-names>
            <surname>Kale</surname>
          </string-name>
          and
          <string-name>
            <given-names>S.</given-names>
            <surname>Krishnan</surname>
          </string-name>
          , \Charm+
          <article-title>+: A portable concurrent object oriented system based on c++," SIGPLAN Not.</article-title>
          , vol.
          <volume>28</volume>
          , pp.
          <volume>91</volume>
          {
          <issue>108</issue>
          ,
          <string-name>
            <surname>Oct</surname>
          </string-name>
          .
          <year>1993</year>
          . http://doi.acm.
          <source>org/10</source>
          .1145/ 167962.165874 (
          <issue>accessed</issue>
          : 10/23/
          <year>2017</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>G.</given-names>
            <surname>Zheng</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Meneses</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Bhatele</surname>
          </string-name>
          , and
          <string-name>
            <given-names>L. V.</given-names>
            <surname>Kale</surname>
          </string-name>
          , \
          <article-title>Hierarchical load balancing for charm++ applications on large supercomputers,"</article-title>
          <source>in 2010 39th International Conference on Parallel Processing Workshops</source>
          , pp.
          <volume>436</volume>
          {
          <issue>444</issue>
          , IEEE,
          <year>2010</year>
          . https://charm.cs.illinois.edu/newPapers/ 10-08/paper.pdf (
          <issue>accessed</issue>
          : 10/23/
          <year>2017</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>J. J.</given-names>
            <surname>Willcock</surname>
          </string-name>
          , T. Hoe er, N. G.
          <article-title>Edmonds, and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Lumsdaine</surname>
          </string-name>
          , \
          <article-title>Active pebbles: parallel programming for data-driven applications,"</article-title>
          <source>in Proceedings of the international conference on Supercomputing</source>
          , pp.
          <volume>235</volume>
          {
          <issue>244</issue>
          ,
          <string-name>
            <surname>ACM</surname>
          </string-name>
          ,
          <year>2011</year>
          . http: //doi.acm.
          <source>org/10</source>
          .1145/1995896.1995934 (
          <issue>accessed</issue>
          : 10/23/
          <year>2017</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>J. J.</given-names>
            <surname>Willcock</surname>
          </string-name>
          , T. Hoe er, N. G.
          <article-title>Edmonds, and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Lumsdaine</surname>
          </string-name>
          , \
          <article-title>Active pebbles: a programming model for highly parallel ne-grained datadriven computations," in ACM SIGPLAN Notices</article-title>
          , vol.
          <volume>46</volume>
          , pp.
          <volume>305</volume>
          {
          <issue>306</issue>
          ,
          <string-name>
            <surname>ACM</surname>
          </string-name>
          ,
          <year>2011</year>
          . http: //doi.acm.
          <source>org/10</source>
          .1145/1941553.1941601 (
          <issue>accessed</issue>
          : 10/23/
          <year>2017</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>H.</given-names>
            <surname>Kaiser</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Heller</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Adelstein-Lelbach</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Serio</surname>
          </string-name>
          , and
          <string-name>
            <given-names>D.</given-names>
            <surname>Fey</surname>
          </string-name>
          , \
          <article-title>Hpx: A task based programming model in a global address space,"</article-title>
          <source>in Proceedings of the 8th International Conference on Partitioned Global Address Space Programming Models</source>
          , p.
          <fpage>6</fpage>
          ,
          <issue>ACM</issue>
          ,
          <year>2014</year>
          . http://doi.acm.
          <source>org/10</source>
          . 1145/2676870.2676883 (
          <issue>accessed</issue>
          : 10/23/
          <year>2017</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>D.</given-names>
            <surname>Callahan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B. L.</given-names>
            <surname>Chamberlain</surname>
          </string-name>
          , and
          <string-name>
            <given-names>H. P.</given-names>
            <surname>Zima</surname>
          </string-name>
          , \
          <article-title>The cascade high productivity language," in High-Level Parallel Programming Models</article-title>
          and
          <string-name>
            <given-names>Supportive</given-names>
            <surname>Environments</surname>
          </string-name>
          ,
          <year>2004</year>
          . Proceedings. Ninth International Workshop on, pp.
          <volume>52</volume>
          {
          <issue>60</issue>
          , IEEE,
          <year>2004</year>
          . http://ieeexplore.ieee.org/ document/1299190/ (accessed: 10/23/
          <year>2017</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>B. L.</given-names>
            <surname>Chamberlain</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Callahan</surname>
          </string-name>
          , and
          <string-name>
            <given-names>H. P.</given-names>
            <surname>Zima</surname>
          </string-name>
          , \
          <article-title>Parallel programmability and the chapel language,"</article-title>
          <source>International Journal of High Performance Computing Applications</source>
          , vol.
          <volume>21</volume>
          , no.
          <issue>3</issue>
          , pp.
          <volume>291</volume>
          {
          <issue>312</issue>
          ,
          <year>2007</year>
          . http://dx. doi.org/10.1177/1094342007078442 (accessed: 10/23/
          <year>2017</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>R.</given-names>
            <surname>Haque</surname>
          </string-name>
          and
          <string-name>
            <given-names>D.</given-names>
            <surname>Richards</surname>
          </string-name>
          , \
          <article-title>Optimizing pgas overhead in a multi-locale chapel implementation of comd,"</article-title>
          <source>in Proceedings of the First Workshop on PGAS Applications</source>
          , pp.
          <volume>25</volume>
          {
          <issue>32</issue>
          , IEEE Press,
          <year>2016</year>
          . https://doi.org/10.1109/PAW.
          <year>2016</year>
          .
          <volume>9</volume>
          (
          <issue>accessed</issue>
          : 10/23/
          <year>2017</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>P.</given-names>
            <surname>Charles</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Grotho</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Saraswat</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Donawa</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Kielstra</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Ebcioglu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Von Praun</surname>
          </string-name>
          , and
          <string-name>
            <given-names>V.</given-names>
            <surname>Sarkar</surname>
          </string-name>
          , \
          <article-title>X10: an object-oriented approach to non-uniform cluster computing," in Acm Sigplan Notices</article-title>
          , vol.
          <volume>40</volume>
          , pp.
          <volume>519</volume>
          {
          <issue>538</issue>
          ,
          <string-name>
            <surname>ACM</surname>
          </string-name>
          ,
          <year>2005</year>
          . http: //doi.acm.
          <source>org/10</source>
          .1145/1103845.1094852 (
          <issue>accessed</issue>
          : 10/23/
          <year>2017</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>O.</given-names>
            <surname>Tardieu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Herta</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Cunningham</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Grove</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Kambadur</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Saraswat</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Shinnar</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Takeuchi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Vaziri</surname>
          </string-name>
          , and W. Zhang, \
          <article-title>X10 and apgas at petascale,"</article-title>
          <source>ACM Transactions on Parallel Computing</source>
          , vol.
          <volume>2</volume>
          , no.
          <issue>4</issue>
          , p.
          <fpage>25</fpage>
          ,
          <year>2016</year>
          . http://doi.acm.
          <source>org/10</source>
          .1145/2894746 (accessed: 10/23/
          <year>2017</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>S.</given-names>
            <surname>Hong</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Cha</surname>
          </string-name>
          , E. Sedlar, and
          <string-name>
            <given-names>K.</given-names>
            <surname>Olukotun</surname>
          </string-name>
          , \
          <article-title>Green-marl: a dsl for easy and e cient graph analysis," in ACM SIGARCH Computer Architecture News</article-title>
          , vol.
          <volume>40</volume>
          , pp.
          <volume>349</volume>
          {
          <issue>362</issue>
          ,
          <string-name>
            <surname>ACM</surname>
          </string-name>
          ,
          <year>2012</year>
          . http://doi.acm.
          <source>org/10</source>
          .1145/2189750. 2151013 (
          <issue>accessed</issue>
          : 10/23/
          <year>2017</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>S.</given-names>
            <surname>Hong</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. Van Der</given-names>
            <surname>Lugt</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Welc</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Raman</surname>
          </string-name>
          , and
          <string-name>
            <given-names>H.</given-names>
            <surname>Cha</surname>
          </string-name>
          , \
          <article-title>Early experiences in using a domain-speci c language for large-scale graph analysis,"</article-title>
          <source>in First International Workshop on Graph Data Management Experiences and Systems</source>
          , p.
          <fpage>5</fpage>
          ,
          <issue>ACM</issue>
          ,
          <year>2013</year>
          . http://doi. acm.
          <source>org/10</source>
          .1145/2484425.2484430 (
          <issue>accessed</issue>
          : 10/23/
          <year>2017</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>S.</given-names>
            <surname>Hong</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Salihoglu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Widom</surname>
          </string-name>
          , and
          <string-name>
            <given-names>K.</given-names>
            <surname>Olukotun</surname>
          </string-name>
          , \
          <article-title>Simplifying scalable graph processing with a domain-speci c language,"</article-title>
          <source>in Proceedings of Annual IEEE/ACM International Symposium on Code Generation and Optimization</source>
          , p.
          <fpage>208</fpage>
          ,
          <issue>ACM</issue>
          ,
          <year>2014</year>
          . http://doi.acm.
          <source>org/10</source>
          .1145/2544137. 2544162 (
          <issue>accessed</issue>
          : 10/23/
          <year>2017</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>D.</given-names>
            <surname>Prountzos</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Manevich</surname>
          </string-name>
          , and
          <string-name>
            <given-names>K.</given-names>
            <surname>Pingali</surname>
          </string-name>
          , \
          <article-title>Elixir: A system for synthesizing concurrent graph programs,"</article-title>
          <source>ACM SIGPLAN Notices</source>
          , vol.
          <volume>47</volume>
          , no.
          <issue>10</issue>
          , pp.
          <volume>375</volume>
          {
          <issue>394</issue>
          ,
          <year>2012</year>
          . http: //doi.acm.
          <source>org/10</source>
          .1145/2398857.2384644 (
          <issue>accessed</issue>
          : 10/23/
          <year>2017</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>R.</given-names>
            <surname>Nasre</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Srikant</surname>
          </string-name>
          , et al.,
          <article-title>\Falcon: a graph manipulation language for heterogeneous systems,"</article-title>
          <source>ACM Transactions on Architecture and Code Optimization (TACO)</source>
          , vol.
          <volume>12</volume>
          , no.
          <issue>4</issue>
          , p.
          <fpage>54</fpage>
          ,
          <year>2016</year>
          . http://doi.acm.
          <source>org/10</source>
          .1145/2842618 (accessed: 10/23/
          <year>2017</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>G.</given-names>
            <surname>Malewicz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M. H.</given-names>
            <surname>Austern</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A. J.</given-names>
            <surname>Bik</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. C.</given-names>
            <surname>Dehnert</surname>
          </string-name>
          , I. Horn,
          <string-name>
            <given-names>N.</given-names>
            <surname>Leiser</surname>
          </string-name>
          , and G. Czajkowski, \
          <article-title>Pregel: a system for large-scale graph processing,"</article-title>
          <source>in Proceedings of the 2010 ACM SIGMOD International Conference on Management of data</source>
          , pp.
          <volume>135</volume>
          {
          <issue>146</issue>
          ,
          <string-name>
            <surname>ACM</surname>
          </string-name>
          ,
          <year>2010</year>
          . http: //doi.acm.
          <source>org/10</source>
          .1145/1807167.1807184 (
          <issue>accessed</issue>
          : 10/23/
          <year>2017</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>S.</given-names>
            <surname>Salihoglu</surname>
          </string-name>
          and
          <string-name>
            <given-names>J.</given-names>
            <surname>Widom</surname>
          </string-name>
          , \
          <article-title>Gps: a graph processing system,"</article-title>
          <source>in Proceedings of the 25th International Conference on Scienti c and Statistical Database Management</source>
          , p.
          <fpage>22</fpage>
          ,
          <issue>ACM</issue>
          ,
          <year>2013</year>
          . http: //doi.acm.
          <source>org/10</source>
          .1145/2484838.2484843 (
          <issue>accessed</issue>
          : 10/23/
          <year>2017</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>S.</given-names>
            <surname>Schelter</surname>
          </string-name>
          , \
          <article-title>Large scale graph processing with apache giraph," Invited talk</article-title>
          at GameDuell Berlin 29th May,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>T.</given-names>
            <surname>Cheatham</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Fahmy</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Stefanescu</surname>
          </string-name>
          , and L. Valiant, \
          <article-title>Bulk synchronous parallel computinga paradigm for transportable software," in Tools and Environments for Parallel and Distributed Systems</article-title>
          , pp.
          <volume>61</volume>
          {
          <issue>76</issue>
          , Springer,
          <year>1996</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [21]
          <string-name>
            <given-names>A.</given-names>
            <surname>Agarkov</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Ismagilov</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Makagon</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Semenov</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Simonov</surname>
          </string-name>
          , \
          <article-title>Performance evaluation of the Angara interconnect,"</article-title>
          <source>in Proceedings of the International Conference Russian Supercomputing Days</source>
          , pp.
          <volume>626</volume>
          {
          <issue>639</issue>
          ,
          <year>2016</year>
          . http://www.dislab.org/docs/rsd2016- angara-bench.
          <source>pdf (accessed: 11.10</source>
          .
          <year>2017</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [22]
          <string-name>
            <given-names>D.</given-names>
            <surname>Chakrabarti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Zhan</surname>
          </string-name>
          , and
          <string-name>
            <given-names>C.</given-names>
            <surname>Faloutsos</surname>
          </string-name>
          , \
          <article-title>R-mat: A recursive model for graph mining</article-title>
          .,
          <source>" in SDM</source>
          , vol.
          <volume>4</volume>
          , pp.
          <volume>442</volume>
          {
          <issue>446</issue>
          ,
          <string-name>
            <surname>SIAM</surname>
          </string-name>
          ,
          <year>2004</year>
          . https: //faculty.mccombs.utexas.edu/deepayan. chakrabarti/mywww/papers/siam04.pdf (
          <issue>accessed</issue>
          : 10/23/
          <year>2017</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [23]
          <string-name>
            <given-names>L.</given-names>
            <surname>Wesolowski</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Venkataraman</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Gupta</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.-S.</given-names>
            <surname>Yeom</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Bisset</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Sun</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Jetley</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T. R.</given-names>
            <surname>Quinn</surname>
          </string-name>
          , and
          <string-name>
            <given-names>L. V.</given-names>
            <surname>Kale</surname>
          </string-name>
          , \TRAM:
          <article-title>Optimizing Fine-grained Communication with Topological Routing and Aggregation of Messages,"</article-title>
          <source>in Proceedings of the International Conference on Parallel Processing, ICPP '14</source>
          ,
          <string-name>
            <surname>(Minneapolis</surname>
          </string-name>
          , MN),
          <year>September 2014</year>
          . http://charm.cs. illinois.edu/newPapers/14-18/paper.pdf (
          <issue>accessed</issue>
          : 10/23/
          <year>2017</year>
          ). 4 nodes
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>