<!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>Collaboration spotting visual analytics tool optimized for very large graphs</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Richard Forster forceuse@inf.elte.hu</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>ELTE Eotvos Lorand University Budapest</institution>
          ,
          <country country="HU">Hungary</country>
        </aff>
      </contrib-group>
      <fpage>74</fpage>
      <lpage>84</lpage>
      <abstract>
        <p>As big data is getting collected in every sciences and other applications too, visual analytics is starting to gain traction with graph based applications to help the users understand their data. Community detection has become an important operation in such applications. It reveals the groups that exist within real world networks without imposing prior size or cardinality constraints on the set of communities. The Louvain method is a multi-phase, iterative heuristic for modularity optimization. It was originally developed by Blondel et al. [1], the method has become increasingly popular owing to its ability to detect high modularity community partitions in a fast and memory-e cient manner. To parallelize this solution multiple heuristics are used, that were rst introduced in [2]. For graph organization the ForceAtlas algorithm is used that is part of the Gephi toolkit [3]. This method is responsible to assign coordinates in a 2D space for every node in such a way that they will not overlap on each other. In this paper CPU based parallel implementations are provided for these sequential algorithms, and are tested on a single processor with 8 threads, where a 7 fold performance increase was achieved on test data taken from the CERN developed Collaboration Spotting's database, that involves patents and publications to visualize the connections in technologies among its collaborators.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Introduction</title>
      <p>
        The Collaboration Spotting [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] graph based tool is a generic version of the CERN and JRC developed TIM
(Technology Innovation Monitor), that serves as a visual analytic application. The data about technologies are
stored in a graph database and those are traversed to get a speci c subgraph based on user queries that will be
visualized as an interactive image of the graph. The user can extract di erent informations from publications
and patents, such as authors, keywords, organizations, etc. On organization landscapes it is a requirement to be
able to distinguish the di erent groups working together on the visualized papers, hence community detection
plays an important role in the tool's calculations.
      </p>
      <p>Interactive means that the user can always navigate the map that he or she is looking at. Every user starts
from their own user de ned technology-gram, that is populated by the users as they are exploring the di erent
technologies, requesting the connected papers and patents. From there they can start navigating based on
di erent properties of the papers and patents at hand. They can take a look at the organizations working on a
speci c technology or nding out what kind of keywords the authors used in their respective publications.</p>
      <p>The tool is generic as it is capable to handle all kind of data until it ts a prede ned graph database schema.
Right now the tool is not only about patents and publications, but within CERN it starts to provide visualization
to di erent experiments and departments based on their data and their own needs.</p>
      <p>As this application may handle graphs with tens of thousands of nodes and hundreds of thousands of edges
per user, it is clear that the overall system needs to be able to process even millions of nodes and edges at any
given time. And because the tool is supposed to give an interactive session for every user it has to be fast and
reliable to serve the user requests seamlessly.</p>
      <p>We take a look at the community detection problem, what procedures are used to do the computations and
what heuristics were applied on the system and we will also describe how to make the interactive visualization
useful to the users by applying force-directed algorithms on the graphs. Taking all processes and providing
parallelization on them, in overall we were able to achive a speedups up to 7.
2</p>
    </sec>
    <sec id="sec-2">
      <title>Problem statement and notation</title>
      <p>Let G(V; E; !) be an undirected weighted graph, where V represents the set of vertices, E is the set of edges and
! is a weighting function that gives every edge in E a positive weight. If the input graph is unweighted, then we
consider the weight of the edges to be 1. The graph is allowed to have loops, so edges like (i; i) are valid, while
multiple edges should not be present. Let the adjacency list of vertex i be the following: (i) = jj(i; j) 2 E. Let
i denote the weighted degree of vertex i, such as i = Pj2 (i) !(i; j). Let #V denote the number of vertices in
graph G, #E the number of edges, and W the sum of all edge weights such as #E = 12 Pi2V i. To detect the
communities we would like to partition the vertex set V into an arbitrary number of disjoint communities, each
with di erent sizes (0 &lt; n #V ). We will use C(i) to denote the community containing vertex i. Let Ei!C be
the set of all edges connecting vertex i to vertices in community C. Also let ei!C contain the sum of the edge
weights in Ei!C .</p>
      <p>Let degC denote the sum of the degrees of every vertices in community C, which will give us the degree of the
whole community.</p>
      <p>ei!C =</p>
      <p>X
(i;j)2Ei!C</p>
      <p>!(i; j)
degC = X</p>
      <p>i
i2C</p>
      <p>Even with the groups generated by community detection helping to understand what is in the data we are
looking at, it is still di cult to handle. To be fully useful we need to provide a readable representation that could
be easily understood by users. This helps us to make interactions with the graph possible, while maintaining a
fast and versatile system.
2.1</p>
      <sec id="sec-2-1">
        <title>Modularity</title>
        <p>
          Let S = C1; C2; :::; Ck be the set of every community in a given partitioning of the vertex set V in G(V; E; !),
where 1 k #V . Modularity Q of the partitioning S is given by the following [
          <xref ref-type="bibr" rid="ref5">5</xref>
          ]:
(1)
(2)
(3)
Q =
1
        </p>
        <p>X ei!C(i)
2W i2V</p>
        <p>X ( degC</p>
        <p>2W
C2S
degC
2W
)</p>
        <p>
          Modularity is widely used for community detection while it has issues such as resolution limit [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ][
          <xref ref-type="bibr" rid="ref7">7</xref>
          ], and the
de nition itself has multiple variants [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ][
          <xref ref-type="bibr" rid="ref8">8</xref>
          ][
          <xref ref-type="bibr" rid="ref9">9</xref>
          ]. However, the de nition in Eq. 3 is still the more common version,
as it is in the Louvain method [
          <xref ref-type="bibr" rid="ref1">1</xref>
          ].
2.2
        </p>
      </sec>
      <sec id="sec-2-2">
        <title>Community detection</title>
        <p>
          On a given G(V; E; !) the problem of community detection is to compute the partitioning S of communities
that produces the maximum modularity. This problem has been shown to be NP-Complete [
          <xref ref-type="bibr" rid="ref10">10</xref>
          ]. This problem
basically is di erent from the graph partitioning and its variants [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ], where the number and size of the clusters
and their distribution are known at the beginning. For community detection, both quantities are unknown for
the computation.
3
        </p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>The Louvain algorithm</title>
      <p>
        In 2008 Blondel et al. presented an algorithm for community detection[
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. The Louvain method, is a multi-phase,
iterative, greedy algorithm capable of producing the community hierarchy. The main idea is the following: the
algorithm has multiple phases, each phase with multiple iterations that are running until a convergence criteria
is met. At the beginning of the rst phase each vertex is going to be assigned to a separate community. Going
on, the algorithm progresses from one iteration to another until the modularity gain becomes lower than a
prede ned threshold. With every iteration, the algorithm checks all the vertices in an arbitrary but prede ned
order. For every vertex i, all its neighboring communities (where the neighbors can be found) are explored and
the modularity gain that would be the result of the movement of i into each of those neighboring communities
from its current one is calculated.
      </p>
      <p>
        Once this calculation is done, the algorithm selects one of the neighboring communities that would provide
the maximum modularity gain, as the new community for i, and it also updates the necessary structures
that are maintained to hold the communities and its properties. On the other hand, if all the gains are
negative, the vertex stays in its own community. An iteration ends once all vertices are checked. As a
result the modularity is a monotonically increasing function, that is spread across the multiple iterations of a
phase. When the algorithm converges within a phase, it moves to the next one by reducing all vertices of a
community to a single "meta-vertex"[
        <xref ref-type="bibr" rid="ref12">12</xref>
        ], placing an edge from such meta-vertex to itself with a weight that is
the sum of the weights of all the edges within that community and putting an edge between two meta-vertices
with a weight that is equal to the sum of the weights of all the edges between the corresponding two communities.
      </p>
      <p>The result is graph G0(V 0; E0; !0), which then becomes the input for the consecutive phase. Multiple phases
are processed until the modularity converges. At any given iteration, let Qi!C(j) represent the modularity
gain that resulting from moving vertex i from its current community C(i) to a di erent community C(j). This
is given by:</p>
      <p>Qi!C(j) =
ei!C(j) + 2</p>
      <p>W
i modC(i)=i 2
(2W )2
i modC(j)
The new community assignment for vertex i will be determined as follows. For j 2
(i) [ i:
C(i) = arg max(j) Qi!C(j)</p>
      <p>C</p>
      <p>
        In [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] thanks to the introduced data structures, the calculation time for Qi!C(j) is constant O(1). This way
the full iteration's complexity is O(#E). E ectively we let the iterations and phases run forever, but because
the modularity is monotonically increasing, it is guaranteed to terminate at some point. Generally the method
needs only tens of iterations and fewer phases to terminate on real world data.
4
      </p>
    </sec>
    <sec id="sec-4">
      <title>Louvain parallel heuristics</title>
      <p>
        In [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] the challenges were explored that arise from parallelizing the Louvain method. To solve those issues
multiple heuristics were introduced that can be used to e ectively introduce the basically sequential algorithm
to parallel systems. From the proposed heuristics in this paper we will see two applied on our system. For them
we assume the communities at any given stage of the algorithm be labeled numerically. We will use the notation
l(C) to return the label of community C.
4.1
      </p>
      <sec id="sec-4-1">
        <title>Singlet minimum label heuristic</title>
        <p>
          In the parallel algorithm, if at any given iteration the vertex i which is in a community by itself (C(i) = i, singlet
community [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ]), that vertex will decide to move into another community possibly holding also one single vertex
j in hope for modularity gain. This change will only be applied if l(C(j) &lt; l(C(i))).
In the parallel algorithm, if at any given iteration the vertex i has multiple neighboring communities providing
the maximum modularity gain, then the community with the minimum label will be selected as its destination
community. It is possible that swap situations where two vertices from each others target community will change
place delay the convergence, but they can never lead to nontermination as the algorithm uses a minimum required
modularity gain threshold.
        </p>
        <p>Phases: Execute phases one at a time. Within each phase, multiple iterations are running and each iteration
performs a parallel evaluation of the vertices without any locking mechanism using only the community
information from the previous iteration. This is going on until the modularity gain between the iterations
is not below the threshold.</p>
        <p>Graph rebuilding: After a successive phase the new community assignment is used to construct a new input
graph for the next phase. This is done by introducing the communities in the new graph as vertices and the
edges are added based on their connection to these communities.
17:
18:
19: Qprev
20: end if
21: end while
22: end procedure</p>
        <p>Qcurr Compute modularity for new assignments
if j QcurQrpreQvprev j &lt; then, being a user speci ed threshold</p>
        <p>break
else</p>
        <p>
          The cycle in line 4 represents a parallel evaluation of all nodes in the input graph. The possible modularity
gain is calculated for all nodes in parallel with the resulting new collaboration assignment.
The ForceAtlas [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ] algorithm generates a force-directed layout on a given set of nodes, acting as an n-body
simulation. Nodes repulse each other while edges attract the nodes they connect. These forces are driving the
system to converge to a balanced state. This nal con guration is expected to give a map of the input nodes,
that will help the interpretation of the data they represent. It is generally true, by applying this technique
not all graphs will have exactly the same output given multiple runs. The end result highly depends on the
forces applied, but it can be in uenced by the initial state of the system too. The result is very di erent from
a Cartesian projection, the position of a node cannot be read, it has to be compared to other nodes. Still,
this approach has a unique advantage: it makes the graph's visual interpretation much easier. As it works the
structurally relevant data is represented in a visually connected map.
        </p>
        <p>ForceAtlas has two main features, that makes it stand out from other force-directed algorithms:
The nal layout highly depends on the given graph's energy model, which represents how the repulsion and
attraction is handled.</p>
        <p>In a force-directed algorithm, the layout is applied iteratively to the graph. These steps are simulating the
movements that will make the system reach the balance. In every step the forces are recomputed and the
nodes are moved from their original position according to the results.
5.1</p>
      </sec>
      <sec id="sec-4-2">
        <title>Energy Model</title>
        <p>The force-directed algorithms relies on a certain formula to calculate the repulsion and another one to get the
attraction. As described above, force-directed algorithms are simulating a physical system, that involves repulsion
and attraction. As in any physical system, such forces are proportional to the distance between the interacting
nodes. The nodes that are closer to each other has a higher repulsion force, but lesser attraction and vice versa.
The proportionality can be linear, exponential or logarithmic.
5.2</p>
      </sec>
      <sec id="sec-4-3">
        <title>Repulsion by degree</title>
        <p>ForceAtlas was designed to work well with di erent web graphs and social networks. Commonly these networks
have many leaves. This is because of the power-law distribution of degrees that describes many real-world data.
The forest of leaves surrounding the highly connected nodes is one of the most signi cant sources of visual
cluttering.</p>
        <p>To solve this, the idea is to bring less strongly connected nodes closer to highly connected ones. In this
algorithm the repulsion force is calculated (Equation 6) in such way so the poorly connected nodes and strongly
connected nodes repulse less. As a result they will get closer to each other in the balanced state. The repulsion
force Fr is proportional to the degrees plus one of the two nodes. The coe cient kr is provided by the user
settings.</p>
        <p>Fr(n1; n2) = kr
(deg(n1) + 1)(deg(n2) + 1)
d(n1; n2)</p>
        <p>In this formula the +1 ensures that even nodes with a degree of zero still have some repulsion force.
5.3</p>
      </sec>
      <sec id="sec-4-4">
        <title>A classical attraction force</title>
        <p>The attraction force (Equation 7) Fa between two connected nodes n1 and n2 depends linearly on the distance
d(n1; n2).</p>
        <p>Fa(n1; n2) = d(n1; n2)
6</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>Parallel ForceAtlas</title>
      <p>As our tool needs to process very big graphs with even tens of thousands of nodes and hundreds of thousand of
edges it is important to increase the performance of the ForceAtlas computation too. To optimize the algorithm
in the current implementation we worked on the repulsion (Subsection 5.2) and attraction (Subsection 5.3) part
of process. The original algorithm was designed with user interaction in mind, which means the user could
see some animation as the iterations were progressing. This is a nice feature considering the calculations were
running on the client side. Because we would like to focus on performance and thus would push the calculations
to the server side, we left this feature out.
6.1</p>
      <sec id="sec-5-1">
        <title>Repulsion phase</title>
        <p>
          For this part rst we use the Barnes-Hut algorithm [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ] to recursively divide our nodes into groups by storing
them in a quad-tree. The nodes of this tree represents a region of the two-dimensional space. The root node
stands for the whole space, and its four children represent the four quartets of the space. The full space is
recursively subdivided into quartets until each subdivision contains 0 or 1 nodes. We distinguish two types of
nodes in the tree: internal and external nodes. The external node has no children and is either empty or points
to single node from the original space. Each internal node represents the group of nodes belonging to it, and
stores the center of mass and the total mass of all its children nodes.
        </p>
        <p>After this we use the regions as nodes and repulse them from each other. In those cases where the region
contains multiple nodes, they will repulse together with the region. Naturally those regions where only one node
is present will repulse the node itself.</p>
        <p>user provided threshold and coe cient prede ned value, algorithm 2 shows</p>
        <p>Using the created regions, a
how the repulsion is calculated.</p>
        <sec id="sec-5-1-1">
          <title>From line 2 repulsion is calculated for all nodes in parallel.</title>
          <p>6.2</p>
        </sec>
      </sec>
      <sec id="sec-5-2">
        <title>Attraction phase</title>
        <p>Here we would like to calculate how the links between the nodes will a ect the repulsion of them. The nodes
connected by edges will be attracted to each other, keeping them closer to other connected nodes. All the edges
are processed in parallel and because multiple edges can connect to the same node to change the distance of the
e ected elements, we use atomic operations to accumulate all the modi cations. Because the distance values
are stored as oating point numbers and the generic C++ oating point types do not have atomic addition
operations de ned, we use the compare-exchange functions to de ne the summation.</p>
        <p>The user can control through the ForceAtlas settings how much the edge weights should in uence the
attraction. Di erent graphs possibly will react di erently to a speci c set of settings, resulting in a di erent
layout in the end. Users are encouraged to experiment with the di erent values to see how will they yield the
best layout that suits best their use cases.</p>
        <p>Algorithm 3, using the coe cient prede ned value shows how the attraction is done.</p>
        <p>The cycle in line 2 represents the parallel evaluation of the attraction applying on each node of the input
graph.
7</p>
      </sec>
    </sec>
    <sec id="sec-6">
      <title>Evaluation</title>
      <p>For testing purposes we took 4 graphs from the Collaboration Spotting's database, that is based on data, coming
from the Web of Knowledge. For the test set the searches were run to gather the papers currently in the database
related to 3D, CT, Database and Silicon. The produced graphs are containing all the organizations collaborating
on that speci c technology. The reason why we choose these graphs is that they can e ectively demonstrate the
use of community detection and layout generation. We will take a look at the details of the graphs as we evaluate
the di erent runtimes. The evaluation is strictly done on the described algorithms, the database processing and
retrieval time is not under discussion in this paper.</p>
      <p>The optimized version is implemented in C++, so for a fair comparison between the two, we prepared the
implementation of the standard versions of the Louvain and ForceAtlas algorithms also in the same environment.
The tests of both versions were running on the following (Table 1) system:</p>
      <p>The optimized version was running on 8 threads in both algorithms.
We are interested in examining the performance of the whole compuation, so we measure the runtime on the
Louvain community detection algorithm (Section 3) in its entirety, running its original and optimized version on
all test graphs and then we do same with the ForceAtlas (Section 5) calculation. These runtimes are compared
to each other, showing the performance gain of our modi ed algorithms, while also showing the ratio how these
computations are dividing the whole process among them.</p>
      <p>For the testing rst we use the graph that contains the collaborators on all the papers that are related to 3D
technology. This graph has 35763 nodes and 192336 edges. The runtime of the algorithms on this input can be
seen on Figure 1.</p>
      <p>These results are showing us that the overall computation time of the original implementation is toriginal =
127; 4s and the optimized version is just toptimized = 21; 8s. For the "3D" graph the original Louvain algorithm
took tlouvainoriginal = 92; 2s, the optimized code took tlouvainoptimized = 10; 8s to nish the whole community
detection. The original ForceAtlas took tforceatlasoriginal = 35; 2s to nish and the parallel version took only
tforceatlasoptimized = 11s to generate the nal balanced layout.</p>
      <p>Overall, the full process was able to nish with everything t = 5; 8 times faster on the optimized algorithms.
7.1.2</p>
      <sec id="sec-6-1">
        <title>CT graph</title>
        <p>The next graph contains the collaborators working on papers referring to the CT technology. This graph has
53039 nodes and 325490 edges. The runtime of the processing can be seen on Figure 2.</p>
        <p>The results are showing that the overall computation time of the original implementation is toriginal = 243; 82s
and the optimized version is handling the same processing in just toptimized = 35; 707s. For the "CT" graph
the original Louvain algorithm took tlouvainoriginal = 179; 1s, the optimized took tlouvainoptimized = 18; 1s to fully
generate the communities. The original ForceAtlas took tforceatlasoriginal = 64; 72s and the optimized took only
tforceatlasoptimized = 17; 6s to return with the nished layout.</p>
        <p>For the overall computation of both the community detection and layout generation, the runtime was t = 6; 8
times faster on the optimized algorithms.
7.1.3</p>
      </sec>
      <sec id="sec-6-2">
        <title>Database graph</title>
        <p>The next graph contains the network of collaborators connected to Database technologies. The whole graph
consists of 17832 organizations and 113622 corresponding edges among them. The full processes runtime values
can be seen on Figure 3.</p>
        <p>This shows us that the overall computation time of the original implementation is toriginal = 36; 45s and
the optimized version is just toptimized = 7; 44s. For the "Database" graph the original Louvain algorithm took
tlouvainoriginal = 20; 5s to nish, while the optimized took only tlouvainoptimized = 2; 6s to return the communities.
The original ForceAtlas took tforceatlasoriginal = 15; 95s to generate the layout, while the optimized could nish
in tforceatlasoptimized = 4; 84s.</p>
        <p>For the overall computation the runtime was t = 4; 89 times faster on the optimized algorithms.
7.1.4</p>
      </sec>
      <sec id="sec-6-3">
        <title>Silicon graph</title>
        <p>The last graph contains the network connected to technologies working with silicon. This graph has 24923 nodes
and 185594 edges. The nal runtime can be seen on Figure 4.</p>
        <p>The overall computation time of the original implementation is toriginal = 53; 6s and the optimized version
is only toptimized = 11; 67s. For the "Silicon" graph the original Louvain algorithm took tlouvainoriginal = 28; 3s
to nish its computations and the optimized took tlouvainoptimized = 3:51s on the same dataset. The original
ForceAtlas took tforceatlasoriginal = 25; 3s to process the graph and the optimized was able to conclude in only
tforceatlasoptimized = 8; 16s.</p>
        <p>For the whole computation on the tested algorithms the overall runtime was t = 4; 6 times faster on the
optimized algorithms.
7.2
From the detailed runtimes we can see, that the Louvain computation takes more time to nish from the two
algorithms, also it is where the biggest speedup can be achieved. The optimized Louvain algorithm is in average
t(louvain) = 9; 1 times faster than the sequential implementation, while the ForceAtlas gains in average a
t(forceatlas) = 3; 4 speedup. This happens because of two things: rst the ForceAtlas runs on the quad-tree
generated by the Barnes-Hut algorithm to calculate the repulsions (Subsection 6.1) leading to smaller number
of nodes than what we have in the original input graphs, requiring less operations to nish the process. On the
other hand the Louvain has to check every possible neighbor for the nodes to decide which community will yield
the best possible modularity gain (Subsection 3), thus leading to more computation.</p>
        <p>The speed up of the Louvain algorithm is in line with the increase of the computing resources, using 8 threads
instead of just 1. The higher performance increase can be explained with the usage of the parallel heuristics
(Section 4). It reduces the number of operations in the swapping scenarios, where no modularity gain check
is required, as the nodes are always simply moved towards the community with a bigger label. Overall the
clustering scales well with the available resources.</p>
        <p>These can help the Louvain to perform better, than ForceAtlas. Furthermore While the quadratic tree
decreases the required amount of computation, it introduces an additional bottleneck in the form of irregular
memory accesses. In this case the algorithm cannot e ectively utilize the CPU's caching system, thus reducing
the scalability in the current implementation.</p>
        <p>While the Louvain algorithm is inherently sequential with the heuristics we can drastically increase the
performance of the computation, tlouvainoptimized &lt;&lt; tlouvainoriginal . It may be that the ForceAtlas algorithm did not
receive such boost in performance, but the gained runtimes from the optimization are still signi cantly better,
tforceatlasoptimized &lt; tforceatlasoriginal .
8</p>
      </sec>
    </sec>
    <sec id="sec-7">
      <title>Future work</title>
      <p>As we stand now our work is tested on a single machine, with a single CPU using 8 threads (Section 7). Naturally
there is a limit at how much can be processed on such systems and as we are starting a service based on these
graph calculations it is given that the system will run on multiple machines utilizing multiple CPUs and much
more resources than what was given for the analysis. We have to further explore the possibilities about how
much this system can scale on a bigger environment and how much performance boost it can provide using the
described techniques.
9</p>
    </sec>
    <sec id="sec-8">
      <title>Conclusion</title>
      <p>By applying the heuristics described in Section 4 for the Louvain algorithm and by using an optimized version of
the ForceAtlas (Section 5) we were able on our biggest test graph about "CT" technology (Subsection 7.1.2) to
achieve a t = 6; 8 times overall speedup (Subsection 7.1) compared to the original CPU based implementation.
Based on what we see in the detailed analysis (Section 7.2) we can expect the system to scale well on distributed
systems when the graph that it's used on does not only have a high volume of edges, but also a larger amount
of nodes. In all test cases the community detection enjoyed a signi cantly higher speedup than the ForceAtlas
algorithm, thanks to the introduced heuristics (Section 4): tlouvainoptimized &lt;&lt; tforceatlasoptimized . Even though
the ForceAtlas computation was also more e cient using the parallel solutions (Section 6): tforceatlasoptimized &lt;
tforceatlasoriginal . This leads us to the conclusion, the parallel Louvain modularity (Table 1) can greatly improve
the overall performance of the computations thanks to the introduced heuristics and the parallel ForceAtlas
(Tables 0, 0) also increases the overall experience of the tools usage. Also, this makes the Collaboration Spotting
tool capable of handling very large graphs without compromising the users work.</p>
      <p>graphs,</p>
      <sec id="sec-8-1">
        <title>Phys.</title>
        <p>Rep.
486
(35)
(2010)
75174,</p>
      </sec>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>V.</given-names>
            <surname>Blondel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.-L.</given-names>
            <surname>Guillaume</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Lambiotte</surname>
          </string-name>
          , E. Lefebvre,
          <article-title>Fast unfolding of communities in large networks</article-title>
          ,
          <source>J. Stat. Mech. Theory Exp</source>
          . (
          <year>2008</year>
          ) P10008
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>Hao</given-names>
            <surname>Lu</surname>
          </string-name>
          , Mahantesh Halappanavar,
          <article-title>Ananth Kalyanaraman, Parallel heuristics for scalable community detection</article-title>
          ,
          <source>Parallel Computing</source>
          <volume>47</volume>
          (
          <year>2015</year>
          ) 1937
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>Mathieu</given-names>
            <surname>Jacomy</surname>
          </string-name>
          , Tommaso Venturini, Sebastien Heymann,
          <article-title>Mathieu Bastian, ForceAtlas2, a Continuous Graph Layout Algorithm for Handy Network Visualization Designed for the Gephi Software</article-title>
          , http://dx.doi.org/10.1371/journal.pone.
          <volume>0098679</volume>
          (
          <year>2014</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>Collaboration</given-names>
            <surname>Spotting Visual Analytics Tool</surname>
          </string-name>
          , CERN, http://collspotting.web.cern.ch
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>M.E.J.</given-names>
            <surname>Newman</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Girvan</surname>
          </string-name>
          ,
          <article-title>Finding and evaluating community structure in networks</article-title>
          ,
          <source>Phys. Rev. E</source>
          <volume>69</volume>
          (
          <issue>2</issue>
          ) (
          <year>2004</year>
          )
          <fpage>026113</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>S.</given-names>
            <surname>Fortunato</surname>
          </string-name>
          , Community detection in http://dx.doi.org/10.1016/j.physrep.
          <year>2009</year>
          .
          <volume>11</volume>
          .002.
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>V.A.</given-names>
            <surname>Traag</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Van Dooren</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Nesterov</surname>
          </string-name>
          ,
          <article-title>Narrow scope for resolution-limit-free community detection</article-title>
          ,
          <source>Phys. Rev. E</source>
          <volume>84</volume>
          (
          <issue>1</issue>
          ) (
          <year>2011</year>
          )
          <fpage>016114</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>D.</given-names>
            <surname>Bader</surname>
          </string-name>
          ,
          <string-name>
            <surname>J. McCloskey</surname>
          </string-name>
          ,
          <article-title>Modularity and graph algorithms</article-title>
          ,
          <source>SIAM AN10 Minisymposium on Analyzing Massive</source>
          Real-World
          <string-name>
            <surname>Graphs</surname>
          </string-name>
          (
          <year>2009</year>
          )
          <fpage>1216</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>J.W.</given-names>
            <surname>Berry</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Hendrickson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.A.</given-names>
            <surname>LaViolette</surname>
          </string-name>
          ,
          <string-name>
            <surname>C.</surname>
          </string-name>
          <article-title>A. Phillips, Tolerating the community detection resolution limit with edge weighting</article-title>
          ,
          <source>Phys. Rev. E</source>
          <volume>83</volume>
          (
          <issue>5</issue>
          ) (
          <year>2011</year>
          )
          <fpage>056119</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>U.</given-names>
            <surname>Brandes</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Delling</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Gaertler</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Gorke</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Hoefer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Z.</given-names>
            <surname>Nikoloski</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Wagner</surname>
          </string-name>
          ,
          <article-title>On modularity clustering</article-title>
          ,
          <source>IEEE Trans. Knowl. Data Eng</source>
          .
          <volume>20</volume>
          (
          <issue>2</issue>
          ) (
          <year>2008</year>
          )
          <fpage>172188</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>B.</given-names>
            <surname>Hendrickson</surname>
          </string-name>
          , T.G. Kolda,
          <article-title>Graph partitioning models for parallel computing, Parallel Comput</article-title>
          .
          <volume>26</volume>
          (
          <issue>12</issue>
          ) (
          <year>2000</year>
          )
          <fpage>15191534</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <surname>Hao</surname>
            <given-names>Lu</given-names>
          </string-name>
          , Mahantesh Halappanavar,
          <article-title>Ananth Kalyanaraman, Parallel heuristics for scalable community detection</article-title>
          ,
          <source>Parallel Computing</source>
          <volume>47</volume>
          (
          <year>2015</year>
          ) 1937
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>J.</given-names>
            <surname>Barnes</surname>
          </string-name>
          and
          <string-name>
            <given-names>P.</given-names>
            <surname>Hut</surname>
          </string-name>
          (
          <year>December 1986</year>
          ).
          <article-title>"A hierarchical</article-title>
          <string-name>
            <surname>O(N log N</surname>
          </string-name>
          <article-title>) force-calculation algorithm"</article-title>
          .
          <source>Nature</source>
          <volume>324</volume>
          (
          <issue>4</issue>
          ):
          <fpage>446449</fpage>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>