GPU Glossary
Glossary·Why kernels are fast or slow

Performance

The concepts and metrics you need to understand why a GPU program is fast or slow.

People use GPUs because their programs are too slow on ordinary hardware. That changes what "done" means.

In most software, like a database or a web server, correctness comes first. If the program loses data or returns wrong answers, it has failed, and performance is often an afterthought.

On GPUs, correctness is usually fuzzier. Outputs are often only "correct" to some number of significant bits, or only for well-behaved inputs. Correctness is still required, but it is not enough. If the program isn't faster per second, per dollar or per watt than the alternative, it has failed: GPUs are too hard to program and too expensive to run to justify anything less. NVIDIA sums this up as "performance is the product".

This section defines the terms you need to reason about GPU performance. Roughly, it should cover every term you meet when you debug a kernel in Nsight Compute.

Key idea Every slow kernel is limited by something: compute, memory bandwidth, latency or overhead. Start with performance bottlenecks and the roofline model to find out which.