Code Structure - gunrock/essentials GitHub Wiki

This file gives a summary of the code structure of gunrock/essentials. 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/essentials

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