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