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
include
.
Gunrock implementation files are found in ├── include
│ └── gunrock
algorithms
.
Algorithms implemented are found in │ ├── 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
vector_t
.
Useful container implementations/wrappers, such as │ ├── 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
enactor
, problem
, frontier
and all of the operators
).
Framework of gunrock (includes 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