Custom CUDA reduction, scan, stream compaction, and radix sort, benchmarked against Thrust and OpenMP, driving a real-time boids simulation rendered via CUDA-Vulkan interop.
- C++ 93.4%
- CMake 6.6%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| src | ||
| tests | ||
| .gitignore | ||
| CMakeLists.txt | ||
| CMakePresets.json | ||
| README.md | ||
Plan
Milestones
- Implement and unit test reduction and prefix-sum on the CPU (single/multi threaded)
- Implement and unit test reduction and prefix-sum on the GPU (naive and optimized)
- Benchmark GPU code against Thrust and generate Nsight performance numbers
- Implement, unit test and benchmark stream compaction on CPU and GPU
- Implement, unit test and benchmark radix sort on CPU and GPU
- CPU (single thread) boid simulation (just console output)
- OpenMP boid simulation and compare performance (just console output)
- Vulkan renderer
- CUDA naive boid simulation
- CUDA optimized boid simulation
- Debug overlays (age color, bounding box wireframe, grid heatmap toggle), backend hotkey switch, config-based max counts per backend
- Benchmark harness automation (Nsight Compute/Systems capture scripts, chart generation), README writeup, screen-capture video
How to Run
Run CMake
cmake --preset release
Then, either build the simulation...
cmake --build --preset simulation
... or the benchmark code
cmake --build --preset benchmark
To run the simulation...
build/simulation
... or the benchmark
build/benchmark
Test
Run CMake and build
cmake --preset dev
cmake --build --preset dev
Then run the tests
ctest --preset dev