Compute Capability
NVIDIA's versioning system that ties PTX instruction sets to the physical GPUs able to run them.
Compute capability is the versioning system NVIDIA uses to separate the Parallel Thread Execution (PTX) instruction set and the compiler from the details of physical GPUs. Not every PTX instruction works on every GPU, and the compute capability version tells you which ones do.
Version numbers and compatibility#
Most compute capability versions have two parts: a major and a minor version. NVIDIA promises forward compatibility (old PTX code runs on new GPUs) across both major and minor versions, following the onion layer model.
Two suffixes break from the onion model:
| Suffix | Introduced with | Example | Compatibility guarantee |
|---|---|---|---|
a |
Hopper | 9.0a |
None for future versions, even within the same major version |
f |
Blackwell | 10.0f |
Across minor versions, but not major versions (closer to SemVer) |
Key idea Plain versions are forward-compatible;
aandfsuffixes trade some of that compatibility for access to architecture-specific features.
Compiling for a target#
You specify target compute capabilities for PTX compilation when invoking nvcc, the NVIDIA CUDA Compiler Driver. By default, the compiler also generates optimized SASS for the matching Streaming Multiprocessor (SM) architecture.
The nvcc documentation calls compute capability a "virtual GPU architecture", in contrast to the "physical GPU architecture" given by the SM version.
Technical specifications for each version are in the Compute Capability section of the NVIDIA CUDA C Programming Guide.
Related#
- Parallel Thread Execution: the instruction set compute capability versions
- Streaming Multiprocessor Architecture: the physical architecture it corresponds to
- nvcc: where you choose target compute capabilities