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