wangshaohua / gunrock

High-performance Graph Primitives on GPU

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Gunrock documentation

Introduction

Gunrock is a CUDA library for graph primitives that refactors, integrates, and generalizes best-of-class GPU implementations of breadth-first search, connected components, and betweenness centrality into a unified code base useful for future development of high-performance GPU graph primitives.

Home Page

Homepage for Gunrock: http://gunrock.github.io/

Getting Started with Gunrock

For information on building Gunrock, see Building Gunrock.

The "tests" subdirectory included with Gunrock has a comprehensive test application for all the functionality of Gunrock.

For the programming model we use in Gunrock, see Programming Model.

We have also provided a code walkthrough of a simple example.

Reporting Problems

To report Gunrock bugs or request features, please file an issue directly using Github.

Operating System Support and Requirements

This release (0.1) has only been tested on Linux Mint 15 (64-bit) with CUDA 5.5 installed. We expect Gunrock to build and run correctly on other 64-bit and 32-bit Linux distributions. The current release (0.1) does not support any other platforms.

Requirements

Gunrock has not been tested with any CUDA version < 5.5.

The CPU validity code for connected component and betweenness centrality uses Boost Graph Library v1.53.0.

CUDA

Gunrock is implemented in CUDA C/C++. It requires the CUDA Toolkit. Please see the NVIDIA CUDA homepage to download CUDA as well as the CUDA Programming Guide and CUDA SDK, which includes many CUDA code examples.

Design Goals

Gunrock aims to provide a core set of vertex-centric or edge-centric operators for solving graph related problems and use these parallel-friendly abstractions to improve programmer productivity while maintaining high performance.

Road Map

  • Framework: The structure of the operator code in Gunrock may change significantly during near-term future development. Generally we want to find the right set of operators that can abstract most graph primitives while delivering high performance.

  • Primitives: Our near-term goal is to implement direction-optimal BFS (as described in Direction-Optimizing Breadth-First Search (DOI) by Scott Beamer, Krste Asanovic and David Patterson) using the backward edge-mapping operator in Gunrock. The long-term goal includes other basic graph primitives such as single-source shortest path and minimal spanning tree.

Credits

Gunrock Developers

Acknowledgements

Thanks to the following developers who contributed code: The connected-component implementation was derived from code written by Jyothish Soman, Kothapalli Kishore, and P. J. Narayanan and described in their IPDPSW '10 paper A Fast GPU Algorithm for Graph Connectivity (DOI). The breadth-first search implementation and many of the utility functions in Gunrock are derived from the b40c library of Duane Merrill. The algorithm is described in his PPoPP '12 paper Scalable GPU Graph Traversal (DOI). Thanks to Erich Elsen and Vishal Vaidyanathan from Royal Caliber for their discussion on library development and the dataset auto-generating code.

This work was funded by the DARPA XDATA program under AFRL Contract FA8750-13-C-0002 and by NSF awards CCF-1017399 and OCI-1032859. Our XDATA principal investigator is Eric Whyne of Data Tactics Corporation and our DARPA program manager is Dr. Christopher White.

Gunrock Copyright and Software License

Gunrock is copyright The Regents of the University of California, 2013. The library, examples, and all source code are released under Apache 2.0.

About

High-performance Graph Primitives on GPU

License:Apache License 2.0