-
Notifications
You must be signed in to change notification settings - Fork 15
Code Structure
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
.
├── README.md
├── LICENSE
├── doxygen
├── CMakeLists.txt
├── cmake
├── datasets
│ └── toy.mtx
├── examples
│ ├── CMakeLists.txt
│ ├── bfs
│ │ ├── CMakeLists.txt
│ │ ├── bfs.cu
│ │ └── bfs_cpu.hxx
│ └── sssp
│ ├── CMakeLists.txt
│ ├── bin
│ ├── sssp.cu
│ └── sssp_cpu.hxx
├── externals
├── include
│ └── gunrock
│ ├── algorithms
│ │ ├── algorithms.hxx
│ │ ├── bc.hxx
│ │ ├── bfs.hxx
│ │ ├── color.hxx
│ │ ├── experimental
│ │ │ └── async
│ │ │ └── bfs.hxx
│ │ ├── generate
│ │ ├── geo.hxx
│ │ ├── hits.hxx
│ │ ├── kcore.hxx
│ │ ├── ppr.hxx
│ │ ├── pr.hxx
│ │ ├── search
│ │ ├── sort
│ │ ├── spmv.hxx
│ │ └── sssp.hxx
│ ├── container
│ │ ├── array.hxx
│ │ ├── queue.hxx
│ │ └── vector.hxx
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
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
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
│ ├── io
│ │ └── matrix_market.hxx
│ ├── util
│ ├── error.hxx
│ ├── memory.hxx
│ └── virtual_memory.hxx
└── unittests
Essentials © 2022 The Regents of the University of California
- Programming Model
- Gunrock Operators
- Graph Algorithms
- Getting Essentials
- (GitHub Template)
essentials
project example
- MGPU, Python, Docs (needs review)
- Boolmap Frontier
- Hypergraphs (private)
- Modern CPP Features
- Programming Interface Examples (API)
- Style Guide
- Understanding the code structure
- Git Workflow
-
Debugging with
cuda-memcheck
andcuda-gdb
- Profiling with NVIDIA Nsight Systems and Compute
- Unit testing with GoogleTest
- Performance analysis
- How to write a new graph algorithm
- PageRank: PageRank: From
networkx
togunrock essentials
- How to write parallel operators
- How to add a new graph representation
- How to add a new frontier representation
- How to add multiple GPU support
- How to bind an application to python
- How to use
thrust
/cub
- Writing sparse-matrix dense-vector multiplication using graphs
- Variadic Inheritance
- Polymorphic-Virtual (Diamond) Inheritance
- Need for custom copy constructor
- CUDA-enabled
std::shared_ptr
- Ubuntu
-latest
- Windows
-latest
- Doxygen
- Code Quality