All Projects → AutomataLab → Subway

AutomataLab / Subway

Licence: other
Out-of-GPU-Memory Graph Processing with Minimal Data Transfer

Programming Languages

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

Projects that are alternatives of or similar to Subway

Pygraphistry
PyGraphistry is a Python library to quickly load, shape, embed, and explore big graphs with the GPU-accelerated Graphistry visual graph analyzer
Stars: ✭ 1,365 (+4450%)
Mutual labels:  graph, gpu
Qualia2.0
Qualia is a deep learning framework deeply integrated with automatic differentiation and dynamic graphing with CUDA acceleration. Qualia was built from scratch.
Stars: ✭ 41 (+36.67%)
Mutual labels:  graph, gpu
hipacc
A domain-specific language and compiler for image processing
Stars: ✭ 72 (+140%)
Mutual labels:  gpu
tt7zcrack
7z辅助破解工具 Fast 7zip crack assistant tool which support GPU/CPU, written in Python.
Stars: ✭ 12 (-60%)
Mutual labels:  gpu
opencv-cuda-docker
Dockerfiles for OpenCV compiled with CUDA, opencv_contrib modules and Python 3 bindings
Stars: ✭ 55 (+83.33%)
Mutual labels:  gpu
purescript-d3-tagless-II
Tagless final style interpreter / wrapper for D3 in PureScript, latest of many re-writes
Stars: ✭ 28 (-6.67%)
Mutual labels:  graph
arrowic
Quick and dirty directed graph viewer for REPL explorations.
Stars: ✭ 15 (-50%)
Mutual labels:  graph
racket-graphviz
Library to enable using graphviz in Racket programs
Stars: ✭ 20 (-33.33%)
Mutual labels:  graph
LGCN
Tensorflow Implementation of Large-Scale Learnable Graph Convolutional Networks (LGCN) KDD18
Stars: ✭ 45 (+50%)
Mutual labels:  graph
graph
Generic graph library and algorithms for Racket.
Stars: ✭ 53 (+76.67%)
Mutual labels:  graph
profdump
Processes profiling output of the D compiler
Stars: ✭ 15 (-50%)
Mutual labels:  graph
gun-scape
GunDB Cytoscape Graph Visualizer + Live Editor
Stars: ✭ 49 (+63.33%)
Mutual labels:  graph
ux-charts
Simple, responsive, modern Charts with zero dependencies
Stars: ✭ 22 (-26.67%)
Mutual labels:  graph
Data-structures
Data Structures in Java
Stars: ✭ 13 (-56.67%)
Mutual labels:  graph
cl-covid19
Explore COVID-19 data with Common Lisp, gnuplot, SQL and Grafana
Stars: ✭ 51 (+70%)
Mutual labels:  graph
gpustats
Statistics on GPUs
Stars: ✭ 21 (-30%)
Mutual labels:  gpu
tiny-cuda-nn
Lightning fast & tiny C++/CUDA neural network framework
Stars: ✭ 908 (+2926.67%)
Mutual labels:  gpu
parallel-dfs-dag
A parallel implementation of DFS for Directed Acyclic Graphs (https://research.nvidia.com/publication/parallel-depth-first-search-directed-acyclic-graphs)
Stars: ✭ 29 (-3.33%)
Mutual labels:  graph
nodify
High performance and modular controls for node-based editors designed for data-binding and MVVM.
Stars: ✭ 282 (+840%)
Mutual labels:  graph
GPU-Jupyterhub
Setting up a Jupyterhub Dockercontainer to spawn Jupyter Notebooks with GPU support (containing Tensorflow, Pytorch and Keras)
Stars: ✭ 23 (-23.33%)
Mutual labels:  gpu

Subway

Subway is an out-of-GPU-memory graph processing framework.

Subway provides a highly cost-effective solution to extracting a subgraph that only consists of the edges of active vertices. This allows it to transfer only the active parts of the graph from CPU to GPU, thus dramatically reduces the volume of data transfer. The benefits from the data transfer reduction outweigh the costs of subgraph generation in (almost) all iterations of graph processing, bringing in substantial overall performance improvements. Moreover, it supports asynchronous processing between the loaded subgraph in GPU and the rest of the graph in host memory, which tends to decrease the number of global iterations, thus can further reduce the data transfer.

Compilation

To compile Subway, just run make in the root directory. The only requrements are g++ and CUDA toolkit.

Input graph formats

Subway accepts edge-list (.el) and weighted edge-list (.wel) graph formats, as well as the binary serialized pre-built CSR graph representation (.bcsr and .bwcsr). It is highly recommended to convert edge-list format graph files to the binary format (using tools/converter). Reading binary formats is faster and more space efficient.

Subway is sensitive to graph file extension. A weighted edge-list graph file has to end with .wel. The followings are two graph file examples.

Graph.el ("SOURCE DESTINATION" for each edge in each line):

0 1
0 3
2 3
1 2

Graph.wel ("SOURCE DESTINATION WEIGHT" for each edge in each line):

0 1 26
0 3 33
2 3 40
1 2 10

To convert these graph files to the binary format, run the following commands in the root folder:

tools/converter path_to_Graph.el
tools/converter path_to_Graph.wel

The first command converts Graph.el to the binary CSR format and generates a binary graph file with .bcsr extension under the same directory as the original file. The second command converts Graph.wel to a weighted binary graph file with .bwcsr extension.

Running applications in Subway

The applications take a graph as input as well as some optional arguments. For example:

$ ./sssp-async --input path-to-input-graph
$ ./sssp-async --input path-to-input-graph --source 10

For applications that run on weighted graphs, like SSSP, the input must be weighted (.bwcsr or .wel) and for applications that run on unweighted graphs, like BFS, the input must be unweighted (.bcsr or .el).

Publications:

[EUROSYS'20] Amir Hossein Nodehi Sabet, Zhijia Zhao, and Rajiv Gupta. Subway: minimizing data transfer during out-of-GPU-memory graph processing. In Proceedings of the Fifteenth European Conference on Computer Systems.

[ASPLOS'18] Amir Hossein Nodehi Sabet, Junqiao Qiu, and Zhijia Zhao. Tigr: Transforming Irregular Graphs for GPU-Friendly Graph Processing. In Proceedings of the Twenty-Third International Conference on Architectural Support for Programming Languages and Operating Systems.

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].