Code Structure#
This file gives a summary of the code structure of gunrock/gunrock. In the future, the structure may change a bit, but the following description should remain relevant to the individual modules. For the latest code structure, you can generate it yourself using the following commands:
sudo apt-get install tree
tree /path/to/gunrock
Basic docs and license.#
.
├── README.md
├── LICENSE
├── doxygen
cmake
modules and main file.#
├── CMakeLists.txt
├── cmake
Provided datasets to play around with.#
├── datasets
│ └── toy.mtx
Examples/Test drivers for algorithms.#
├── examples
│ ├── CMakeLists.txt
│ ├── bfs
│ │ ├── CMakeLists.txt
│ │ ├── bfs.cu
│ │ └── bfs_cpu.hxx
│ └── sssp
│ ├── CMakeLists.txt
│ ├── bin
│ ├── sssp.cu
│ └── sssp_cpu.hxx
Directory for where externals get compiled.#
├── externals
Gunrock implementation files are found in include
.#
├── include
│ └── gunrock
Algorithms implemented are found in algorithms
.#
│ ├── algorithms
│ │ ├── algorithms.hxx
│ │ ├── bc.hxx
│ │ ├── bfs.hxx
│ │ ├── color.hxx
Experimental algorithms/features.#
│ │ ├── experimental
│ │ │ └── async
│ │ │ └── bfs.hxx
… algorithms continued.#
│ │ ├── generate
│ │ ├── geo.hxx
│ │ ├── hits.hxx
│ │ ├── kcore.hxx
│ │ ├── ppr.hxx
│ │ ├── pr.hxx
│ │ ├── search
│ │ ├── sort
│ │ ├── spmv.hxx
│ │ └── sssp.hxx
Useful container implementations/wrappers, such as vector_t
.#
│ ├── container
│ │ ├── array.hxx
│ │ ├── queue.hxx
│ │ └── vector.hxx
CUDA support, from atomics to barriers.#
The most important file is context.hxx
, which implements a hardware context that gets used everywhere in the library.
│ ├── cuda
│ │ ├── atomic_functions.hxx
│ │ ├── context.hxx
│ │ ├── cuda.hxx
│ │ ├── device.hxx
│ │ ├── device_properties.hxx
│ │ ├── event_management.hxx
│ │ ├── function.hxx
│ │ ├── global.hxx
│ │ ├── intrinsics.hxx
│ │ ├── launch_box.hxx
│ │ └── stream_management.hxx
Matrix formats, not exactly complete containers, but if you’re looking for a quick sparse-matrices formats.#
│ ├── formats
│ │ ├── coo.hxx
│ │ ├── csc.hxx
│ │ ├── csr.hxx
│ │ └── formats.hxx
Framework of gunrock (includes enactor
, problem
, frontier
and all of the operators
).#
These files are intended to be well documented, so, if you have any questions about the APIs, this is the place to check!
│ ├── framework
│ │ ├── framework.hxx
│ │ ├── enactor.hxx
│ │ ├── problem.hxx
│ │ ├── frontier
│ │ ├── operators
│ │ │ ├── operators.hxx
│ │ │ ├── configs.hxx
│ │ │ ├── advance
│ │ │ ├── batch
│ │ │ ├── filter
│ │ │ ├── for
│ │ │ └── uniquify
│ │ └── experimental
Graph data structure for Gunrock. Contains multiple “views”.#
Views such as coo
, csr
, csc
, allow you to view the graph_t
struct as one or more of those formats. Note that some internal implementation may require a certain view, and would not compile if the application doesn’t support it and is using incompatible APIs.
│ ├── graph
│ │ ├── build.hxx
│ │ ├── conversions
│ │ │ └── convert.hxx
│ │ ├── coo.hxx
│ │ ├── csc.hxx
│ │ ├── csr.hxx
│ │ ├── graph.hxx
│ │ ├── properties.hxx
│ │ └── vertex_pair.hxx
All the input-output handling goes here, so far, we only support matrix market format.#
│ ├── io
│ │ └── matrix_market.hxx
Useful gunrock utilities.#
│ ├── util
Error handling and memory managers.#
│ ├── error.hxx
│ ├── memory.hxx
│ └── virtual_memory.hxx
Contains all the unit tests.#
└── unittests