CuVO-Kernels is a performance-oriented study of standard Computer Vision algorithms implemented from scratch in CUDA C++. The project aims to benchmark and optimize the "Frontend" of a SLAM system (Feature Extraction, Matching, and Tracking) by leveraging GPU hardware architecture.
| Phase | Algorithm | CUDA Optimization Technique | Speedup (vs CPU) |
| 01 | Grayscale & Thresholding | Global Memory Coalescing | Pending |
| 02 | Gaussian Blur | Shared Memory Tiling & Halo Handling | Pending |
| 03 | Histogram Calculation | Atomic Operations & Local Reductions | Pending |
| 04 | Harris Corner Detector | CUDA Streams & Asynchronous Execution | Pending |
| 05 | BRIEF/ORB Matcher | Warp Intrinsics (__popc, __shfl) |
Pending |
| 06 | Visual Odometry Pipeline | End-to-End Frame Tracking | Pending |
- src/: Contains isolated modules for each algorithmic stage.
- common/: Shared utilities for precise benchmarking.
- data/: Scripts and placeholders for the KITTI Odometry Dataset.
Recommended for debugging and visual verification of kernels.
-
Install Dependencies (Ubuntu 22.04):
chmod +x scripts/install_deps.sh ./scripts/install_deps.sh
-
Verify Installation (Test CUDA + OpenCV Setup):
Run the benchmark suite to verify your environment is configured correctly:
./scripts/build.sh ./scripts/run.sh benchmark
You should see GPU-accelerated array operations with speedup metrics. If this works, your CUDA toolkit, compiler, and OpenCV are properly installed.
-
Build Specific Modules:
./scripts/build.sh # Build all modules ./scripts/build.sh benchmark # Build only benchmark module
-
Run Modules:
./scripts/run.sh benchmark # Run CPU vs GPU benchmarks ./scripts/run.sh pixel_ops_gui # Run with visualization (future)
Recommended for clean performance testing and portfolio demonstration.
-
Build Image:
docker build -t cuda-vision-lab . -
Run Benchmarks:
This runs the performance suite without any GUI dependencies.
docker run --gpus all cuda-vision-lab
Each module includes a benchmark target that runs the algorithm on a standard image sequence (KITTI) 100 times to average the execution metrics.
// Example Metric Output
[Gaussian Blur 5x5]
CPU Time (OpenCV): 12.5 ms
GPU Time (Global): 3.2 ms
GPU Time (Shared): 0.8 ms
Speedup: 15.6x
Alibek Erkabayev (bigalex95) Computer Vision & Machine Learning Engineer Specializing in High-Performance Computing and Embedded Vision.