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