Recent Releases of gunrock

gunrock - Gunrock 2.1.0

What's Changed

🎉 Algorithms and Operators

  • Support for CUDA 12.5.0 and SM 90. by @neoblizz in https://github.com/gunrock/gunrock/pull/1072
  • Add performance analysis by @annielytical in https://github.com/gunrock/gunrock/pull/920
  • Performance Analysis Updates by @annielytical in https://github.com/gunrock/gunrock/pull/923
  • fix bc bug (introduced with perf analysis) by @annielytical in https://github.com/gunrock/gunrock/pull/1035
  • main/develop merge by @neoblizz in https://github.com/gunrock/gunrock/pull/1044
  • Fixing custom frontier-based merge-path approach. Not fully functiona… by @neoblizz in https://github.com/gunrock/gunrock/pull/1045

🐛 Bug Fixes

  • MST Bugfix by @neoblizz in https://github.com/gunrock/gunrock/pull/1075

🏡 API Changes/Improvements

  • Adds support for performance metrics collection. by @neoblizz in https://github.com/gunrock/gunrock/pull/921
  • Improvement to existing build system. by @neoblizz in https://github.com/gunrock/gunrock/pull/1032
  • Support for CMAKE_CUDA_ARCHITECTURE. by @neoblizz in https://github.com/gunrock/gunrock/pull/1042
  • Variable was being ignored. by @neoblizz in https://github.com/gunrock/gunrock/pull/1043
  • Update Graph Builder API by @annielytical in https://github.com/gunrock/gunrock/pull/1046

New Contributors

  • @marjerie made their first contribution in https://github.com/gunrock/gunrock/pull/1049
  • @lxrzlyr made their first contribution in https://github.com/gunrock/gunrock/pull/1051 <!-- Release notes generated using configuration in .github/release.yml at main -->

Full Changelog: https://github.com/gunrock/gunrock/compare/2.0.0...v2.1.0

- C++
Published by neoblizz almost 2 years ago

gunrock - Gunrock 2.0.0

gunrock/essentials is a continuation of our original work gunrock/gunrock. To name some of the changes: essentials aim to add better support for graph and frontier data structures, new operators, new load-balancing algorithms, new graph algorithms, support for benchmarking kernels, a queue-based asynchronous programming model, ease of programmability, proper Doxygen and wiki documentation for API and programming models, and more complete GitHub actions enabled compilation testing. We also introduce experiments with multi-GPU backend and gunrock/essentials-cpp, which takes Gunrock's programming model to modern-C++ parallelism.

The quality of the release documentation may vary as it is autogenerated based on the Pull Requests (PR) to the repository. If something is unclear, please refer to the corresponding PR.

What's Changed

🎉 Algorithms and Operators

  • Merge API changes to master by @bkj in https://github.com/gunrock/essentials/pull/10
  • Reworking the graph_t and graph::build interface. by @neoblizz in https://github.com/gunrock/essentials/pull/14
  • Hotfix: update color implementation by @bkj in https://github.com/gunrock/essentials/pull/16
  • Add SSSP CPU implementation by @bkj in https://github.com/gunrock/essentials/pull/18
  • Implementing PageRank by @bkj in https://github.com/gunrock/essentials/pull/40
  • Documentations and more... by @neoblizz in https://github.com/gunrock/essentials/pull/48
  • BFS CPU reference implementation by @bkj in https://github.com/gunrock/essentials/pull/54
  • [APP] Betweenness Centrality (V3) by @bkj in https://github.com/gunrock/essentials/pull/60
  • Implementing COO graph functions by @bkj in https://github.com/gunrock/essentials/pull/62
  • Implementating CSC graph functions by @bkj in https://github.com/gunrock/essentials/pull/64
  • Local Graph Clustering & Batch Operator by @neoblizz in https://github.com/gunrock/essentials/pull/66
  • Improve sssp_cpu performance by @bkj in https://github.com/gunrock/essentials/pull/72
  • [APP] Parallel PR-Nibble by @bkj in https://github.com/gunrock/essentials/pull/73
  • Feature merge (dev to master) by @neoblizz in https://github.com/gunrock/essentials/pull/75
  • Vertex k-Core Decomposition App by @angeil in https://github.com/gunrock/essentials/pull/77
  • Asynchronous BFS Interface & Implementation by @bkj in https://github.com/gunrock/essentials/pull/78
  • HITS ported from gunrock/gunrock by @li-yi-dong in https://github.com/gunrock/essentials/pull/83
  • SpMV using Gunrock by @DanLoran in https://github.com/gunrock/essentials/pull/86
  • Improvements, Clean-up, Experimental Async Support by @neoblizz in https://github.com/gunrock/essentials/pull/87
  • Bring changes over, so I can improve kernels. by @neoblizz in https://github.com/gunrock/essentials/pull/103
  • Unit testing overhaul using Googletest, Stride, blocked standard kernels by @neoblizz in https://github.com/gunrock/essentials/pull/100
  • Command line parameters support for essentials using cxxopts. by @neoblizz in https://github.com/gunrock/essentials/pull/107
  • Merge all the progress to master branch. by @neoblizz in https://github.com/gunrock/essentials/pull/109
  • Advance Improvements, Frontier resizing, and more... by @neoblizz in https://github.com/gunrock/essentials/pull/110
  • Advance Improvements, Frontier resizing, and more... by @neoblizz in https://github.com/gunrock/essentials/pull/118
  • Merging changes to master (lots of enhancements, see commits for detail) by @neoblizz in https://github.com/gunrock/essentials/pull/119
  • Minimum Spanning Tree (MST) algorithm. by @annielytical in https://github.com/gunrock/essentials/pull/127
  • Add my changes from SPMV experiments by @jdwapman in https://github.com/gunrock/essentials/pull/134
  • Doxygen, CMake/Make improvements, MST algorithm, bug fixes and more! by @neoblizz in https://github.com/gunrock/essentials/pull/135
  • Add Triangle Counting algorithm by @maawad in https://github.com/gunrock/essentials/pull/140
  • Add TC benchmarking by @maawad in https://github.com/gunrock/essentials/pull/141
  • Add Triangle Counting CPU reference code by @maawad in https://github.com/gunrock/essentials/pull/144
  • Benchmarking, Triangle Counting, Intersection. by @neoblizz in https://github.com/gunrock/essentials/pull/145
  • Fixes for Graph Coloring and minor edits. by @neoblizz in https://github.com/gunrock/essentials/pull/149 ### 🐛 Bug Fixes
  • [BUGFIX] bug in csr.getsourcevertex by @bkj in https://github.com/gunrock/essentials/pull/53
  • Bug-fixes, minor enhancements and clean-up with unit tests. by @neoblizz in https://github.com/gunrock/essentials/pull/57
  • [BUGFIX] Fix offsets_to_indices by @bkj in https://github.com/gunrock/essentials/pull/61
  • [BUGFIX] Order of values passed to csc.set by @bkj in https://github.com/gunrock/essentials/pull/63
  • Fix virtual_memory unittest by @porumbes in https://github.com/gunrock/essentials/pull/85
  • Use std::size_t in graph loader by @maawad in https://github.com/gunrock/essentials/pull/132
  • Fix CUDA namespace collision, file support by @jdwapman in https://github.com/gunrock/essentials/pull/138
  • Graph Coloring bugfix: Tiebreak condition by @neoblizz in https://github.com/gunrock/essentials/pull/148 ### 🏡 API Changes/Improvements
  • Move default fetch dir to cmakefetch. by @li-yi-dong in https://github.com/gunrock/essentials/pull/74
  • Refactored & fixed. by @neoblizz in https://github.com/gunrock/essentials/pull/81
  • Windows support. by @neoblizz in https://github.com/gunrock/essentials/pull/96
  • Windows support and working windows workflow. by @neoblizz in https://github.com/gunrock/essentials/pull/97
  • Benchmarking support, cmake version++, and sample csr() by @neoblizz in https://github.com/gunrock/essentials/pull/99 ### 📝 Documentation Updates
  • Bug fixes, README updates, documentation, and more... by @neoblizz in https://github.com/gunrock/essentials/pull/108
  • Updated documentation. by @neoblizz in https://github.com/gunrock/essentials/pull/136 ### 🧪 Testing
  • Color CPU reference + correctness checking by @bkj in https://github.com/gunrock/essentials/pull/67
  • CPU Reference for coloring. by @neoblizz in https://github.com/gunrock/essentials/pull/68
  • Enabling Actions (GitHub) for dev branch. by @neoblizz in https://github.com/gunrock/essentials/pull/94
  • Add NVBench Algorithm Benchmarking by @annielytical in https://github.com/gunrock/essentials/pull/139

New Contributors

  • @bkj made their first contribution in https://github.com/gunrock/essentials/pull/3
  • @cameronshinn made their first contribution in https://github.com/gunrock/essentials/pull/5
  • @neoblizz made their first contribution in https://github.com/gunrock/essentials/pull/14
  • @porumbes made their first contribution in https://github.com/gunrock/essentials/pull/22
  • @li-yi-dong made their first contribution in https://github.com/gunrock/essentials/pull/74
  • @angeil made their first contribution in https://github.com/gunrock/essentials/pull/77
  • @DanLoran made their first contribution in https://github.com/gunrock/essentials/pull/86
  • @annielytical made their first contribution in https://github.com/gunrock/essentials/pull/127
  • @maawad made their first contribution in https://github.com/gunrock/essentials/pull/132
  • @jdwapman made their first contribution in https://github.com/gunrock/essentials/pull/134

Full Changelog: https://github.com/gunrock/essentials/commits/0.0.1

- C++
Published by neoblizz over 2 years ago

gunrock - Gunrock 1.2.0

Gunrock v1.2.0 is a minor feature and bug fix release. We have added several new example applications, fixed many outstanding memory issues, and eliminated some JSON output bugs. Along the way we solved many little issues and annoyances we faced. Thanks to everyone who has contributed, and a special thanks to any new contributors since version 1.1 (marked in bold).

Contributors

Achal Agarwal Agnieszka Lupinska Charles Rozhon Hugo Braun Jonathan Wapman Leyuan Wang Mahmood Naderan - https://github.com/gunrock/gunrock/pull/641 Muhammad Osama Nima Johari Serban Porumbescu Yangzihao Wang

v1.2.0 Changelog

Apps

  • K-nearest-neighbor application implemented by agalup
  • HITS application implemented by jdwapman
  • Label propagation application implemented by achalagarwal

Fixes

  • SetDevice after spawning OpenMP threads (https://github.com/gunrock/gunrock/issues/757)
  • Release with multiple command switches (https://github.com/gunrock/gunrock/pull/767)
  • Specify --quick and --validation at the same time (https://github.com/gunrock/gunrock/issues/773)
  • Subgraph not properly released in single-gpu mode (https://github.com/gunrock/gunrock/pull/746)
  • Compile issues with certain SM configurations (https://github.com/gunrock/gunrock/commit/d57b9325aec2b3570523a3c921741df31bdfe3fe)
  • Compile issue linking with C compiler instead of C++ (https://github.com/gunrock/gunrock/commit/804ea776bacfcd1b979c6c25f014444aa4542b54)
  • JSON writer improvements (https://github.com/gunrock/gunrock/commit/8819f39ca8716f9d3f8c5b577c85538d148aaac6)
  • Update moderngpu to latest (https://github.com/gunrock/gunrock/commit/7c14fa21c63e6a71fc62ce8ac90462677d4c54d1)
  • Modify device intrinsics to compile on all arches (https://github.com/gunrock/gunrock/commit/6b05704cee6e36b0d0140eeca7c775948f2d584d)

- C++
Published by crozhon over 5 years ago

gunrock - Gunrock 1.1.0

Minor feature and clean-up release.

v1.1.0 Changelog

  • 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

Known Issues:

  • PageRank has a bug when using rmat generator.
  • PTXAS warning "out of range" for Turing arch (SM 7.5) https://github.com/gunrock/gunrock/issues/598
  • Graph generators with no undirected graphs support https://github.com/gunrock/gunrock/issues/592

- C++
Published by neoblizz over 6 years ago

gunrock - Gunrock 1.0.0

(documentation: https://gunrock.github.io/docs/)

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

v1.0 Changelog

Operators (i.e. advance, filter)

  • Take in lambda functions for per-element operations, instead of static functions in a structure. <algo>_functor.cuh is merged into <algo>_enactor.cuh
  • Use OprtrParameters structure to keep inputs, except for the graph, input / output frontiers, and the lambdas
  • KernelPolicy is 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 OprtrFlag
  • Queue index and selector are automatically changed by the operator when needed

Graph representation

  • 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 new representation
  • CPU, GPU and sub-graphs use the same graph data structure, no more GraphSlice and GRGraph

Frontier

  • A single structure gunrock/app/frontier.cuh:Frontier encloses all frontier related data

Test driver

  • Allows multiple graph types (64bit-VertexT, 64bit-SizeT, 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 gunrock/app/test_base.cuh
  • Moved CPU reference code and result validation into gunrock/app/<algo>/<algo>_test.cuh

Enactor

  • Common functions moved into gunrock/app/enactor_base.cuh
  • Use OpenMP to maintain controlling threads on CPU
  • Use instances of Iteration instead of static access to its functions

Command line parameters

  • A dedicated Parameters struct to store all running parameters
  • Need to define parameters via. Use function before using them
  • Command line is parsed by get_opt
  • Set to set parameter values
  • Get to get parameter values
  • Handles vectors as parameter values

1D operators for Array1D

  • Per-element operations, e.g. ForAll and ForEach
  • Vector-Vector operations, e.g. Add, Minus, Mul, Div, Mad, Set
  • Vector-Scalar operations
  • Sort

Code restructuring

  • Partitioners moved from gunrock/app to gunrock/partitioner
  • LB operator moved from gunrock/oprtr/edge_map_partitioned_forward to gunrock/oprtr/LB_advance
  • TWC operator moved from 'gunrock/oprtr/edgemapforward' to gunrock/oprtr/TWC_advance

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
  • info will use RapidJson-based implementation, when Boost is not available

Known Issues

  • 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

- C++
Published by neoblizz almost 7 years ago

gunrock - Gunrock 0.5.1

Minor bug-fixes release.

v0.5.1 Changelog

  • 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

- C++
Published by neoblizz about 7 years ago

gunrock - Gunrock 0.5.0

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.

v0.5 Changelog

All notable changes to gunrock for v0.5 are documented below:

Added

  • New primitives:
    • A*
    • Weighted Label Propagation (LP)
    • Minimum Spanning Tree (MST)
    • Random Walk (RW)
    • Triangle Counting (TC)
  • Operator:
    • Intersection operator (for example, see TC)
  • Unit-testing:
    • Googletest support (see unittests directory)
  • Docs
    • 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 ctest for better code-coverage
  • Memset kernels
  • Multi-gpu testing through Jenkins

Removed

  • 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

Fixed

  • 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

Changed

  • Updated README and other docs
  • Moved previously tests directory to examples
  • Doesn't require CMakeLists.txt (or cmake) to run make
  • Moved all docs to Slate

Known Issues:

  • WTF has illegal memory access (https://github.com/gunrock/gunrock/issues/503).
  • A* sometimes outputs the wrong path randomly (https://github.com/gunrock/gunrock/issues/502).
  • Random Walk uses custom kernels within gunrock, this is resolved for future releases.
  • CPU Reference code not implemented for SALSA, TC and LP (https://github.com/gunrock/gunrock/issues/232).

- C++
Published by neoblizz about 7 years ago

gunrock - Gunrock 0.3.1

A release version for PPoPP 2016 artifact evaluation.

- C++
Published by yzhwang over 9 years ago

gunrock - Gunrock 0.4.0

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

v0.4 ChangeLog

  • 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 --direction-optimized.
  • Added three new strategies for advance (triggered by setting ADVANCE_MODE accordingly):
    • 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_LIGHT_CULL, fused LB_LIGHT advance with a subsequent CULL filter; used in BFS, SSSP and BC.
  • Added three new strategies of filter (triggered by setting FILTER_MODE accordingly):
    • COMPACTED_CULL, optimized on several culling heuristics
    • SIMPLIFIED, another implementation of the CULL filter, without some optimizations
    • 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

- C++
Published by yzhwang over 9 years ago

gunrock - Gunrock 0.3.0

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=GPUindex1,GPUindex2,...,GPUindexn. 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.

- C++
Published by yzhwang almost 11 years ago

gunrock - Gunrock 0.2.0

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.

- C++
Published by yzhwang over 11 years ago

gunrock - Gunrock 0.1.0

Gunrock version 0.1 release.

- C++
Published by yzhwang over 12 years ago