All Projects → govertb → GPUGraphLayout

govertb / GPUGraphLayout

Licence: Unknown, AGPL-3.0 licenses found Licenses found Unknown LICENSE AGPL-3.0 COPYING
An experimental GPU accelerated implementation of ForceAtlas2

Programming Languages

C++
36643 projects - #6 most used programming language
Cuda
1817 projects
Makefile
30231 projects

Projects that are alternatives of or similar to GPUGraphLayout

spotify-song-recommender
A Spotify song recommendation engine built with the power of graph analytics.
Stars: ✭ 34 (-15%)
Mutual labels:  graph-algorithms
Advanced-Shortest-Paths-Algorithms
Java Code for Contraction Hierarchies Algorithm, A-Star Algorithm and Bidirectional Dijkstra Algorithm. Tested and Verified Code.
Stars: ✭ 63 (+57.5%)
Mutual labels:  graph-algorithms
graphs
Graph algorithms written in Go
Stars: ✭ 60 (+50%)
Mutual labels:  graph-algorithms
nodegraph
NodeGraph - A simple directed graph with visualization UI.
Stars: ✭ 21 (-47.5%)
Mutual labels:  graph-algorithms
gephi twitter media downloader
A small script designed to take either a .csv of Tweet ids, or the export from Gephi's TwitterStreamingImporter Plugin and download related Tweet media.
Stars: ✭ 41 (+2.5%)
Mutual labels:  gephi
edgebundle
R package implementing edge bundling algorithms
Stars: ✭ 100 (+150%)
Mutual labels:  graph-algorithms
Graph Data Science
Source code for the Neo4j Graph Data Science library of graph algorithms.
Stars: ✭ 251 (+527.5%)
Mutual labels:  graph-algorithms
jsgraph
Deprecated: Use the @encapsule/arccore package that includes the graph library
Stars: ✭ 42 (+5%)
Mutual labels:  graph-algorithms
HuaweiCodeCraft2020
2020华为软件精英挑战赛
Stars: ✭ 14 (-65%)
Mutual labels:  graph-algorithms
PGD
A Parallel Graphlet Decomposition Library for Large Graphs
Stars: ✭ 68 (+70%)
Mutual labels:  graph-algorithms
InterviewPrep
A repository containing link of good interview questions
Stars: ✭ 54 (+35%)
Mutual labels:  graph-algorithms
blossom
Edmonds's blossom algorithm for maximum weight matching in undirected graphs
Stars: ✭ 16 (-60%)
Mutual labels:  graph-algorithms
Grafatko
An app for creating and visualizing graphs and graph-related algorithms.
Stars: ✭ 22 (-45%)
Mutual labels:  graph-algorithms
d3-force-graph
Force-directed graph using D3-force and WebGL, support massive data rendering and custom style.
Stars: ✭ 74 (+85%)
Mutual labels:  social-network-analysis
DGFraud-TF2
A Deep Graph-based Toolbox for Fraud Detection in TensorFlow 2.X
Stars: ✭ 84 (+110%)
Mutual labels:  graph-algorithms
Pygraphblas
GraphBLAS for Python
Stars: ✭ 252 (+530%)
Mutual labels:  graph-algorithms
NGCF-PyTorch
PyTorch Implementation for Neural Graph Collaborative Filtering
Stars: ✭ 200 (+400%)
Mutual labels:  graph-algorithms
PowerWalk
Personalized PageRank (PPR) on GraphLab PowerGraph
Stars: ✭ 14 (-65%)
Mutual labels:  graph-algorithms
PathFinder-Visualization
📟 React and p5, maze generation and path finding visualization
Stars: ✭ 12 (-70%)
Mutual labels:  graph-algorithms
rustgraphblas
rust-library to wrap GraphBLAS.h
Stars: ✭ 23 (-42.5%)
Mutual labels:  graph-algorithms

graph_viewer | GPU accelerated graph layout

This repository contains experimental code for large scale graph layout using the GPU. Currently we only implement the basics of ForceAtlas2, a graph layout algorithm designed for social network visualization in Gephi1,2. Our implementation of ForceAtlas2 is based on the open source implementation used in Gephi itself, and considers the graph to be undirected. For force approximation, we use a CUDA implementation of the Barnes-Hut approximation algorithm3 by Martin Burtscher and Keshav Pingali4. This implementation is available as part of LonstarGPU. The average speedup, compared to a de facto CPU implementation of ForceAtlas2, is over 40x. This makes it feasible to compute layouts for networks with millions of nodes and edges. More details and results can be found in:

Citing

To cite this software, please use the aforementioned reference, or the preferred-citation section in CITATION.cff. The latter can be converted to the desired format using various tools, or using the Cite this repository button in the About section of this project's GitHub page.

System Requirements

A CUDA capable GPU. Currently only Linux is supported.

Obtaining all code

This repository contains a submodule (lib/pngwriter). Be sure to run

git submodule init && git submodule update

from the root of this Git repository before compiling. The code also depends on the libpng library (including its development headers). It should be possible to obtain this using the package manager for your Linux distribution.

Compiling

A Makefile is located in builds/linux. Running

make graph_viewer

from this directory compiles graph_viewer with CUDA support. To compile without CUDA support, run make graph_viewer CUDA_SUPPORT=0.

Usage

graph_viewer gpu|cpu max_iterations num_snaps sg|wg scale gravity exact|approximate edgelist_path out_path [png|csv|bin]

Argument Description
gpu|cpu Choose between a parallel GPU implementation or a serial CPU implementation.
max_iterations How many iterations of the layout algorithm to run.
num_snaps Choose how many times during the layout process a visualization should be rendered.
wg|sg Choose between weak gravity (inversely proportional to distance) or strong gravity.
scale Scale repulsive force.
gravity Scale gravitational force.
exact|approximate Choose between the exact/pairwise $O(|V|^2)$ repulsive force calculation or the $O(|V| \log |V|)$ approximation using Barnes-Hut (GPU implementation only supports Barnes-Hut).
edgelist_path Text file (ascii) containing node IDs for each edge on a separate line (whitespace separated). Lines starting with a #, the direction of edges, and self-loops are ignored.
out_path Path to write resulting layout to.

[png|csv|bin] is optional, defaulting to png, and determines the format of the layout written to out_path.

References

1 M. Jacomy, T. Venturini, S. Heymann, and M. Bastian, "Forceatlas2, a continuous graph layout algorithm for handy network visualization designed for the Gephi software", PLoS ONE, vol. 9, no. 6, pp. 1–12, 2014.

2 M. Bastian, S. Heymann, and M. Jacomy, "Gephi: an open source software for exploring and manipulating networks." in Proceedings of International Conference on Web and Social Media (ICWSM), 2009, pp. 361–362.

3J. Barnes and P. Hut, "A hierarchical O(N log N) force-calculation algorithm", Nature, vol. 324, pp. 446–449, 1986.

4 M. Burtscher and K. Pingali, "An efficient CUDA implementation of the tree-based Barnes Hut n-body algorithm", in GPU Computing Gems Emerald Edition, W. mei W. Hwu, Ed., 2011, ch. 6, pp. 75–92.

License

Most source files for this program are released under the GNU Affero General Public License. The license notice in each file provides more information. A copy of the GNU Affero General Public License can be found in the LICENCE file.

Disclaimer

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].