- 
                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) 
essentialsproject 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-memcheckandcuda-gdb - Profiling with NVIDIA Nsight Systems and Compute
 - Unit testing with GoogleTest
 - Performance analysis
 
- How to write a new graph algorithm
 - PageRank: PageRank: From 
networkxtogunrock 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