Programmable CUDA/C++ GPU Graph Analytics
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.
master
(lots of enhancements, see commits for detail) by @neoblizz in https://github.com/gunrock/essentials/pull/119
offsets_to_indices
by @bkj in https://github.com/gunrock/essentials/pull/61
csc.set
by @bkj in https://github.com/gunrock/essentials/pull/63
std::size_t
in graph loader by @maawad in https://github.com/gunrock/essentials/pull/132
Full Changelog: https://github.com/gunrock/essentials/commits/0.0.1
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).
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
Minor feature and clean-up release.
(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.
<algo>_functor.cuh
is merged into
<algo>_enactor.cuh
OprtrParameters
structure to keep inputs, except for the graph,
input / output frontiers, and the lambdasKernelPolicy
is defined within each operator, instead of in the enactorOprtrFlag
GraphSlice
and GRGraph
gunrock/app/frontier.cuh:Frontier
encloses all frontier related data64bit-VertexT
, 64bit-SizeT
,
64bit-ValueT
, directed vs. undirected) and multiple parameters
combinations to run in a single executiongunrock/app/test_base.cuh
gunrock/app/<algo>/<algo>_test.cuh
gunrock/app/enactor_base.cuh
Iteration
instead of static access to its functionsParameters
struct to store all running parametersUse
function before using themget_opt
Set
to set parameter valuesGet
to get parameter valuesForAll
and ForEach
Add
, Minus
, Mul
, Div
, Mad
, Set
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/edge_map_forward' to
gunrock/oprtr/TWC_advance
info
will use RapidJson-based implementation, when Boost is not availableGunrock release 0.5 is a feature (minor) release that adds:
All notable changes to gunrock for v0.5 are documented below:
unittests
directory)ctest
for better code-coveragetests
directory to examples
CMakeLists.txt
(or cmake
) to run make
A release version for PPoPP 2016 artifact evaluation.
Gunrock release 0.4 is a feature release that adds
--direction-optimized
.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.FILTER_MODE
accordingly):
COMPACTED_CULL
, optimized on several culling heuristicsSIMPLIFIED
, another implementation of the CULL filter, without
some optimizationsBY_PASS
, optimized for a filter with no elements
to remove from the input frontier; used in CC and PR.InitSetup()
defined in gunrock.h.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.