NVIDIA/nvbench
CUDA Kernel Benchmarking Library
What it solves
NVBench simplifies the process of benchmarking CUDA kernels. It provides a structured way to measure execution time, throughput, and memory bandwidth usage, removing the need for manual boilerplate code when tuning and regression testing individual GPU kernels.
How it works
It is a C++17 library that allows developers to define benchmarks using a simple API. It uses an "axis" system to perform parameter sweeps, exploring different kernel configurations (using either dynamic numbers/strings or static types) to find optimal settings. It supports multiple measurement modes, including "Cold" measurements (with a clean L2 cache) and "Batch" measurements (to average execution time).
Who it’s for
CUDA developers and performance engineers who need to optimize GPU kernels and perform systematic parameter tuning.
Highlights
- Parameter Sweeps: A flexible axis system for exploring configuration spaces.
- Runtime Customization: A rich CLI for redefining axes, selecting devices, and locking GPU clocks.
- Performance Metrics: Automatic calculation of item throughput and global memory bandwidth usage (including %-of-peak).
- Flexible Measurement: Supports cold starts, batching, and manual timer modes.
- Multiple Outputs: Results can be exported in Markdown or CSV formats.
Related
- Project
- Project
- Project
- Project
- Project