Be notified of new releases
Create your free GitHub account today to subscribe to this repository for new releases and build software alongside 40 million developers.Sign up
Minor feature and clean-up release.
- Subgraph Matching (SM) fixes
- SM _app .cu and .cuh updates, following proper coding style
- GetSrcDestEdge; given v and u, get the E(v, u).
- Removing grmat app (uses older API)
- Adding grmat implementation to rmat generator (supports v0.5.1 functionality of grmat)
- Streamlining performance testing (#576) and other JSON schema fixes
- Fixed pagerank support if boost is not found
- Added binary search google test
Release v1.0 is a major API refactor release, along with some feature updates and new applications/primitives. An important note from this release is that moving forward, v1.x will be incompatible with v0.5.x Gunrock, some applications are still pending to be ported over to the new and improved API.
- New operator interfaces
- New graph representations
- New frontier structure
- New test driver
- Restructured enactor routines
- New parameter handling
- New operators
- Code restructuring
- Optional Boost dependency
Operators (i.e. advance, filter)
- Take in lambda functions for per-element operations, instead of static
functions in a structure.
<algo>_functor.cuhis merged into
OprtrParametersstructure to keep inputs, except for the graph,
input / output frontiers, and the lambdas
KernelPolicyis defined within each operator, instead of in the enactor
- Templatized options (Idempotence, mark-preds, advance types, reduce ops,
reduce types, etc.) are provided as a combined 32bit
- Queue index and selector are automatically changed by the operator when
- A single structure encloses all graph related data
- Different representations (CSR, CSC, COO, etc.) can be selected based
on algorithmic needs
- New graph representations could be added without changing other parts of
Gunrock, except operator implementation that handles how to traverse such
- CPU, GPU and sub-graphs use the same graph data structure, no more
- A single structure
encloses all frontier related data
- Allows multiple graph types (
64bit-ValueT, directed vs. undirected) and multiple parameters
combinations to run in a single execution
- Allows result validation for each run, instead of only the last run
- Result validation without reference for BFS and SSSP
- Moved common functions into
- Moved CPU reference code and result validation into
- Common functions moved into
- Use OpenMP to maintain controlling threads on CPU
- Use instances of
Iterationinstead of static access to its functions
Command line parameters
- A dedicated
Parametersstruct to store all running parameters
- Need to define parameters via.
Usefunction before using them
- Command line is parsed by
Setto set parameter values
Getto get parameter values
- Handles vectors as parameter values
1D operators for Array1D
- Per-element operations, e.g.
- Vector-Vector operations, e.g.
- Vector-Scalar operations
- Partitioners moved from
LBoperator moved from
TWCoperator moved from 'gunrock/oprtr/edge_map_forward' to
Optional Boost dependency
- Utility functions changed to C++11 or implemented
- CPU references implemented for BFS and SSSP, and will be called when BOOST
is not available
infowill use RapidJson-based implementation, when Boost is not available
- Multi-GPU framework not fully tested,
- Operators have decreased performance, due to more than 32 registers used by
a single thread in the kernels,
- RGG and GRMAT generators not ported yet,
- SSSP may have incorrect predecessors, due to data racing in marking the
predecessors within the operator kernels
Minor bug-fixes release.
- Added Ctest for TC and SALSA applications
- Fixed illegal memory access bug in WTF
- Removed test directory
- Removed duplicated templates
- Cleaned up sample application code
- Added support for CUDA 9+, updated moderngpu dependency
Gunrock release 0.5 is a feature (minor) release that adds:
- New primitives and better support for existing primitives.
- New operator: Intersection.
- Unit-testing support through Googletest infrastructure.
- CPU reference code for correctness checking for some of the primitives.
- Support for central integration (Jenkins) and code-coverage.
- Overall bug fixes and support for new CUDA architectures.
All notable changes to gunrock for v0.5 are documented below:
- New primitives:
- Weighted Label Propagation (LP)
- Minimum Spanning Tree (MST)
- Random Walk (RW)
- Triangle Counting (TC)
- Intersection operator (for example, see TC)
- Googletest support (see
- Googletest support (see
- Support using Slate (see https://github.com/gunrock/docs)
- CPU reference code
- Run scripts for all primitives
- Clang-format based on Google style
- see commit aac9add (revert for diff)
- Support for Volta and Turing architectures
- Regression tests to
ctestfor better code-coverage
- Memset kernels
- Multi-gpu testing through Jenkins
- Subgraph matching and join operator removed due to race conditions (SM is now added to the future release)
- Plots generation python scripts removed (moved to https://github.com/gunrock/io)
- MaxFlow primitive removed, wasn't fully implemented for a release (implementation exists in the new API for future release)
- Outdated documentation
- HITS now produces correct results
- Illegal memory access fixed for label propagation (LP) primitive
- WTF Illegal memory access fixed for frontier queue (see known issues below)
- Other minor bug fixes
- Updated README and other docs
- Moved previously
- Doesn't require
cmake) to run
- Moved all docs to Slate
Gunrock release 0.4 is a feature release that adds
- New optimizations to both advance and filter operators
- Multi-iteration support for BFS, SSSP, BC, CC and PR
- Better error handling
- Updates on several interfaces
- Overall performance improvement for both single and multi-GPU execution
- Integrated direction-optimizing BFS with normal BFS. Now for BFS
there is only one executable, named bfs. The direction-optimizing
switch is enabled by the command-line option
- Added three new strategies for advance (triggered by setting
ALL_EDGES, optimized for advance on all edges with all vertices
of the graph. With
ALL_EDGES, there is no need to use sorted
search for load balancing, just binary search over the whole row
offsets array; used in CC.
LB_CULL, fused LB advance with a subsequent CULL filter; used in
BFS, SSSP and BC.
LB_LIGHTadvance with a subsequent CULL
filter; used in BFS, SSSP and BC.
- Added three new strategies of filter (triggered by setting
COMPACTED_CULL, optimized on several culling heuristics
SIMPLIFIED, another implementation of the CULL filter, without
BY_PASS, optimized for a filter with no elements
to remove from the input frontier; used in CC and PR.
- Added multi-iteration support for BFS, SSSP, BC, CC and PR. Users
can set the number of iterations to run and specify the source node
for each run (if necessary) via
InitSetup()defined in gunrock.h.
v0.4 Known Issues
- HITS and SALSA do not have CPU reference yet
- HITS, SALSA, and who-to-Follow do not have multi-GPU support yet
- An out-of-memory error (for graphs that approach the memory limit
of GPUs) will cause result validation to fail
Gunrock release 0.3 is a feature release that adds two new graph primitives—Stochastic Approach for Link-Structure Analysis (SALSA) and Minimal Spanning Tree (MST)—and improves several existing primitives. The new release uses a unified framework for both single-GPU and single-node multi-GPUs. Five graph primitives (BFS, CC, PR, BC, and SSSP) can be launched on multi-GPUs now by adding the command-line option--device=GPU_index_1,GPU_index_2,...,GPU_index_n. A simple pure C interface allow users to easily integrate Gunrock into their own work. A stats-logging and performance-chart-generating pipeline is prototyped in this new release. All our future releases will require C++11 support.
A new Gunrock release which includes a whole re-factoring of v0.1 with two traversal modes, two brand-new operators (advance and filter) and several new graph primitives. This release is the reference version which will reproduce our experiment results for PPoPP `15.