OUTPACE

GPU glossary

The vocabulary of the Compute layer.

Plain definitions of the terms that appear in GPU specifications, vendor benchmarks and utilisation reports, written for the people who finance and operate the facilities those GPUs run in.

The terms are in four groups, from the physical units inside a GPU to the measurements that show whether it is doing useful work. Each definition is written for owners, operators and investors who need to read a specification sheet, a benchmark or a utilisation report with a critical eye. Where a term bears directly on the economics of a facility, the definition says how.

Groups build on each other. Hardware terms describe what a GPU is made of, device software describes how work is expressed for it, host software describes what an operator runs, and performance describes the gap between what a GPU could do and what it does.

Group 01

Device hardware

Specification sheets quote core counts, memory sizes and peak rates. Which units AI workloads actually use decides which of those figures matter.

STREAMING MULTIPROCESSORL1 instruction cacheWarp schedulerDispatchRegister file32 CUDA CoresTensor CoreLSUSFUWarp schedulerDispatchRegister file32 CUDA CoresTensor CoreLSUSFUWarp schedulerDispatchRegister file32 CUDA CoresTensor CoreLSUSFUWarp schedulerDispatchRegister file32 CUDA CoresTensor CoreLSUSFUTensor Memory Accelerator256 KB L1 data cache / shared memoryTexture units
One Streaming Multiprocessor in the Hopper layout. Four partitions, each with its own scheduler, register file, 32 CUDA Cores and one Tensor Core, share a Tensor Memory Accelerator and 256 KB of L1 cache and shared memory. An H100 has 132 of these.
CUDA device architecture

The common hardware design behind NVIDIA GPUs. A GPU is built as many small processors that run the same instruction across large groups of threads at once, with a memory system arranged to feed them. CUDA names both this architecture and the software platform written for it. Each generation keeps the same broad shape while changing the mix of compute units, memory and interconnect, which is why one programming model has survived two decades of hardware.

See also Streaming Multiprocessor, CUDA programming model, CUDA software platform

Streaming MultiprocessorSM

The basic processing block of an NVIDIA GPU, roughly the counterpart of a CPU core. Each SM holds its own schedulers, arithmetic units, register file and fast local memory, and a data centre GPU contains well over a hundred of them. Work is handed to SMs as thread blocks, and how fully those SMs are kept busy is the first thing to examine when a GPU underperforms.

HBMHBMHBMHBMHBMHBMGPU DIEGPCGPCGPCGPCGPCGPCGPCGPCL2 cache
Each small block on the die is one SM. The Hopper die holds 144 across eight GPCs; 132 are enabled on the H100 SXM part.

See also Streaming Multiprocessor architecture, Thread Block, Streaming Multiprocessor utilisation

Core

A general term for the individual execution units inside a Streaming Multiprocessor. On a GPU the word covers several different unit types, including CUDA Cores for ordinary arithmetic and Tensor Cores for matrix maths, so a headline core count says little on its own. Unlike a CPU core, a GPU core has no scheduler or instruction fetch of its own; the SM supplies those.

STREAMING MULTIPROCESSORL1 instruction cacheWarp schedulerDispatchRegister file32 CUDA CoresTensor CoreLSUSFUWarp schedulerDispatchRegister file32 CUDA CoresTensor CoreLSUSFUWarp schedulerDispatchRegister file32 CUDA CoresTensor CoreLSUSFUWarp schedulerDispatchRegister file32 CUDA CoresTensor CoreLSUSFUTensor Memory Accelerator256 KB L1 data cache / shared memoryTexture units
The execution units of one SM: 128 CUDA Cores in rows and four Tensor Cores, one per partition.

See also CUDA Core, Tensor Core

Special Function UnitSFU

A unit inside the SM that computes transcendental functions such as exponentials, logarithms, sines and reciprocals in hardware. There are far fewer SFUs than CUDA Cores, so code that leans heavily on these functions can stall on them. The activation functions used in neural networks are a common source of SFU demand.

STREAMING MULTIPROCESSORL1 instruction cacheWarp schedulerDispatchRegister file32 CUDA CoresTensor CoreLSUSFUWarp schedulerDispatchRegister file32 CUDA CoresTensor CoreLSUSFUWarp schedulerDispatchRegister file32 CUDA CoresTensor CoreLSUSFUWarp schedulerDispatchRegister file32 CUDA CoresTensor CoreLSUSFUTensor Memory Accelerator256 KB L1 data cache / shared memoryTexture units
Four Special Function Units per partition, 16 per SM, against 128 CUDA Cores.

See also Pipe utilisation

Load/Store UnitLSU

The unit inside the SM that moves data between registers and the memory hierarchy. Every read from or write to shared, cache or global memory passes through an LSU. When a workload is memory-bound, the LSUs and the memory paths behind them, rather than the arithmetic units, set the pace.

STREAMING MULTIPROCESSORL1 instruction cacheWarp schedulerDispatchRegister file32 CUDA CoresTensor CoreLSUSFUWarp schedulerDispatchRegister file32 CUDA CoresTensor CoreLSUSFUWarp schedulerDispatchRegister file32 CUDA CoresTensor CoreLSUSFUWarp schedulerDispatchRegister file32 CUDA CoresTensor CoreLSUSFUTensor Memory Accelerator256 KB L1 data cache / shared memoryTexture units
Eight Load/Store Units per partition. Every access to shared, cache or global memory passes through one of them.

See also Memory hierarchy, Memory-bound

Warp Scheduler

The part of the SM that chooses, each clock cycle, which warp issues its next instruction. An SM has several warp schedulers, each managing a pool of resident warps and switching between them whenever one is waiting on memory. This cheap switching is how GPUs hide latency instead of avoiding it, and it only works when enough warps are resident to choose from.

STREAMING MULTIPROCESSORL1 instruction cacheWarp schedulerDispatchRegister file32 CUDA CoresTensor CoreLSUSFUWarp schedulerDispatchRegister file32 CUDA CoresTensor CoreLSUSFUWarp schedulerDispatchRegister file32 CUDA CoresTensor CoreLSUSFUWarp schedulerDispatchRegister file32 CUDA CoresTensor CoreLSUSFUTensor Memory Accelerator256 KB L1 data cache / shared memoryTexture units
One warp scheduler and dispatch unit per partition. Each cycle it picks one resident warp to issue.

See also Warp, Latency hiding, Occupancy

CUDA Core

An execution unit for ordinary scalar arithmetic: one floating-point or integer operation per clock cycle on one thread's data. CUDA Cores handle the general-purpose parts of a program. For the matrix multiplications that dominate AI training and inference they are far slower than Tensor Cores, so comparisons built on CUDA Core counts overstate what matters for AI workloads.

STREAMING MULTIPROCESSORL1 instruction cacheWarp schedulerDispatchRegister file32 CUDA CoresTensor CoreLSUSFUWarp schedulerDispatchRegister file32 CUDA CoresTensor CoreLSUSFUWarp schedulerDispatchRegister file32 CUDA CoresTensor CoreLSUSFUWarp schedulerDispatchRegister file32 CUDA CoresTensor CoreLSUSFUTensor Memory Accelerator256 KB L1 data cache / shared memoryTexture units
The 128 CUDA Cores of one SM, 32 per partition. Each handles one thread's scalar instruction per cycle.

See also Tensor Core, Core

Tensor Core

A specialised execution unit that performs a small matrix multiply-and-accumulate in a single operation rather than one element at a time. Tensor Cores are where almost all of the floating-point throughput quoted for a modern AI GPU comes from, and they support reduced-precision formats such as FP16, BF16, FP8 and FP4 that trade numeric precision for speed. The headline figure on a specification sheet is usually a Tensor Core peak at the lowest precision, often with sparsity assumed.

STREAMING MULTIPROCESSORL1 instruction cacheWarp schedulerDispatchRegister file32 CUDA CoresTensor CoreLSUSFUWarp schedulerDispatchRegister file32 CUDA CoresTensor CoreLSUSFUWarp schedulerDispatchRegister file32 CUDA CoresTensor CoreLSUSFUWarp schedulerDispatchRegister file32 CUDA CoresTensor CoreLSUSFUTensor Memory Accelerator256 KB L1 data cache / shared memoryTexture units
One Tensor Core per partition. These four units supply nearly all of the SM's quoted matrix throughput.

See also Peak rate, Arithmetic bandwidth, Pipe utilisation

Streaming Multiprocessor architecture

The internal layout of an SM in a given GPU generation: how many schedulers, CUDA Cores, Tensor Cores, load/store units and special function units it contains, the size of its register file and shared memory, and how they are grouped into partitions. Architecture names such as Ampere, Hopper and Blackwell refer mainly to changes at this level. Two GPUs with the same SM count can differ several-fold in Tensor Core throughput for this reason.

See also Streaming Multiprocessor, Compute Capability

Texture Processing ClusterTPC

A grouping of two SMs that share some front-end and texture hardware. The name is inherited from graphics, where texture sampling mattered. For AI workloads the TPC is mostly an organisational unit, though some newer features let the SMs in a pair cooperate. It sits between the SM and the Graphics Processing Cluster in the GPU's hierarchy.

HBMHBMHBMHBMHBMHBMGPU DIEGPCGPCGPCGPCGPCGPCGPCGPCL2 cache
A TPC is a pair of SMs. Nine TPCs make up each GPC on the Hopper die.

See also Graphics Processing Cluster

Graphics Processing ClusterGPC

The largest subdivision inside a GPU die, containing several TPCs and therefore a set of SMs, plus shared dispatch hardware. A data centre GPU has a handful of GPCs. Some features, such as thread block clusters on recent architectures, let the SMs within one GPC share data directly, which is why the GPC boundary matters to performance engineers.

HBMHBMHBMHBMHBMHBMGPU DIEGPCGPCGPCGPCGPCGPCGPCGPCL2 cache
The eight GPCs of the Hopper die, four either side of the L2 cache. Each holds 18 SMs.

See also Texture Processing Cluster, Thread Block

Register File

A large block of very fast storage inside each SM, divided among the threads that are resident on it. Registers are the fastest memory on the GPU, but the register file is finite: the more registers each thread uses, the fewer threads can be resident at once. That trade-off, called register pressure, is one of the main constraints on occupancy.

STREAMING MULTIPROCESSORL1 instruction cacheWarp schedulerDispatchRegister file32 CUDA CoresTensor CoreLSUSFUWarp schedulerDispatchRegister file32 CUDA CoresTensor CoreLSUSFUWarp schedulerDispatchRegister file32 CUDA CoresTensor CoreLSUSFUWarp schedulerDispatchRegister file32 CUDA CoresTensor CoreLSUSFUTensor Memory Accelerator256 KB L1 data cache / shared memoryTexture units
One 64 KB register file per partition, 256 KB per SM, divided among every thread resident on it.

See also Registers, Register pressure, Occupancy

L1 Data Cache

A small, fast cache inside each SM that holds recently used data from global memory. On modern NVIDIA GPUs the same physical storage is split between L1 cache and programmer-managed shared memory, with the split configurable per kernel. A high L1 hit rate means the SM is being fed from local memory rather than waiting on the much slower path to GPU RAM.

STREAMING MULTIPROCESSORL1 instruction cacheWarp schedulerDispatchRegister file32 CUDA CoresTensor CoreLSUSFUWarp schedulerDispatchRegister file32 CUDA CoresTensor CoreLSUSFUWarp schedulerDispatchRegister file32 CUDA CoresTensor CoreLSUSFUWarp schedulerDispatchRegister file32 CUDA CoresTensor CoreLSUSFUTensor Memory Accelerator256 KB L1 data cache / shared memoryTexture units
The 256 KB per SM that serves as both L1 data cache and shared memory. The kernel chooses the split.

See also Shared Memory, Memory hierarchy

GPU RAM

The main memory attached to the GPU, separate from the host system's RAM. Data centre GPUs use high-bandwidth memory, HBM, stacked next to the processor die. Both its capacity and its bandwidth are first-order constraints on AI workloads: capacity decides how large a model fits on one device, and bandwidth decides how fast weights can be read during inference. HBM supply is one of the tightest constraints on the whole accelerator market.

HBMHBMHBMHBMHBMHBMGPU DIEGPCGPCGPCGPCGPCGPCGPCGPCL2 cache
The HBM stacks beside the die. They sit on the same package as the processor, which is what makes their bandwidth possible.

See also Global Memory, Memory bandwidth

Tensor Memory AcceleratorTMA

A hardware unit, introduced with the Hopper architecture, that copies multi-dimensional blocks of data between global memory and shared memory without occupying threads. Offloading these bulk copies frees the SM's threads and registers for computation and makes it practical to keep Tensor Cores fed. Code written to use TMA is one reason newer GPUs reach a higher share of their peak rate than older ones.

STREAMING MULTIPROCESSORL1 instruction cacheWarp schedulerDispatchRegister file32 CUDA CoresTensor CoreLSUSFUWarp schedulerDispatchRegister file32 CUDA CoresTensor CoreLSUSFUWarp schedulerDispatchRegister file32 CUDA CoresTensor CoreLSUSFUWarp schedulerDispatchRegister file32 CUDA CoresTensor CoreLSUSFUTensor Memory Accelerator256 KB L1 data cache / shared memoryTexture units
The Tensor Memory Accelerator, shared by the SM's four partitions. It moves tiles between global and shared memory without using threads.

See also Shared Memory, Tensor Core

Tensor Memory

A dedicated block of on-chip memory added in the Blackwell architecture to hold the accumulator values that Tensor Cores produce, relieving pressure on the register file. It is managed explicitly by the kernel rather than used as a cache. Features like this are why the realised throughput gain between GPU generations depends on software being rewritten to use them.

See also Register File, CUDA Tile programming model

Group 02

Device software

NVIDIA's advantage is the programming model and the two decades of software written against it. That is why switching accelerators costs more than the hardware price difference, and why a GPU's useful life depends on software being rewritten for each generation.

THREAD HIERARCHYMEMORY HIERARCHYHARDWAREThread block gridGlobal memoryGPUThread blockShared memoryStreaming MultiprocessorWarp: 32 threadsno memory level of its ownWarp schedulerThreadRegistersCore
The programming model's three hierarchies side by side. Each level of the thread hierarchy has a memory level it can use and a hardware unit it runs on.
CUDA programming model

The abstract description of a GPU that programmers write against: a hierarchy of threads grouped into blocks and grids, a hierarchy of memory with different speeds and scopes, and kernels that run across that hierarchy. The model hides the physical layout of SMs and cores so that the same code runs on different GPUs. It is the layer that gives NVIDIA its software moat: two decades of libraries and skills are written against it.

See also Thread hierarchy, Memory hierarchy, Kernel

Compute Capability

A version number, such as 9.0 for Hopper or 10.0 for Blackwell, that identifies which features of the programming model a GPU supports. Compiled code targets a compute capability, and code compiled for a newer one will not run on older hardware. In practice it is the field to check when asking whether a given software stack can run on a given fleet.

See also Streaming Multiprocessor architecture, nvcc

Thread hierarchy

The way the programming model groups work: individual threads are grouped into thread blocks, blocks are grouped into a grid, and on recent architectures blocks can also be grouped into clusters. Each level maps to a level of the hardware, with threads running on cores, blocks on SMs and the grid across the whole GPU. Getting this mapping right is most of what GPU programming consists of.

THREAD HIERARCHYMEMORY HIERARCHYHARDWAREThread block gridGlobal memoryGPUThread blockShared memoryStreaming MultiprocessorWarp: 32 threadsno memory level of its ownWarp schedulerThreadRegistersCore
Thread, warp, block, grid. Each level is scheduled by, and runs on, the hardware unit beside it.

See also Thread, Thread Block, Thread Block Grid

Thread

The smallest unit of work in the programming model: one sequence of instructions operating on one piece of data. A GPU kernel is written as if for a single thread and then launched across thousands or millions of them. Threads are cheap to create and are not scheduled individually; the hardware handles them in warps.

THREAD HIERARCHYMEMORY HIERARCHYHARDWAREThread block gridGlobal memoryGPUThread blockShared memoryStreaming MultiprocessorWarp: 32 threadsno memory level of its ownWarp schedulerThreadRegistersCore
One thread runs on one core and owns its registers.

See also Warp, Kernel

Warp

A group of 32 threads that the hardware executes together, issuing the same instruction to all of them at once. The warp is the real unit of scheduling on an NVIDIA GPU, even though programmers write in terms of threads. When threads within a warp need to take different paths through the code, the warp must run each path in turn, which is the source of warp divergence.

THREAD HIERARCHYMEMORY HIERARCHYHARDWAREThread block gridGlobal memoryGPUThread blockShared memoryStreaming MultiprocessorWarp: 32 threadsno memory level of its ownWarp schedulerThreadRegistersCore
Thirty-two threads form a warp, the unit a warp scheduler issues to.

See also Warp Scheduler, Warp divergence, Warpgroup

Warpgroup

A set of four consecutive warps, 128 threads, introduced with the Hopper architecture as the unit that issues instructions to the newer Tensor Cores. Operations at the warpgroup level allow much larger matrix tiles per instruction than warp-level ones. It is an example of the programming model growing a new level to match the hardware.

See also Warp, Tensor Core

Thread Block

A group of threads, up to 1,024, that run on the same SM and can cooperate through shared memory and synchronisation barriers. The thread block is the unit in which work is handed to an SM, and a block never moves once placed. Choosing block size well decides how many blocks fit on an SM at once and therefore how well latency is hidden.

THREAD HIERARCHYMEMORY HIERARCHYHARDWAREThread block gridGlobal memoryGPUThread blockShared memoryStreaming MultiprocessorWarp: 32 threadsno memory level of its ownWarp schedulerThreadRegistersCore
A thread block is placed on one SM and uses that SM's shared memory.

See also Cooperative Thread Array, Shared Memory, Occupancy

Cooperative Thread ArrayCTA

The hardware-level name for a thread block, used in the lower-level PTX and SASS documentation. The two terms describe the same thing from different sides: programmers say thread block, the compiler and hardware say CTA. On recent architectures, CTAs can be grouped into clusters that span several SMs.

See also Thread Block, Parallel Thread Execution

Thread Block Grid

The full set of thread blocks launched for one kernel, arranged in one, two or three dimensions to match the shape of the data. The grid can be far larger than the GPU can run at once; the hardware works through it block by block as SMs become free. Grid size is set per launch, which is how one kernel scales across GPUs of different sizes.

THREAD HIERARCHYMEMORY HIERARCHYHARDWAREThread block gridGlobal memoryGPUThread blockShared memoryStreaming MultiprocessorWarp: 32 threadsno memory level of its ownWarp schedulerThreadRegistersCore
The grid spans the whole GPU and its blocks work from global memory.

See also Thread Block, Kernel

Kernel

A function written to run on the GPU, launched from the host across a grid of threads. Everything a GPU computes, from a matrix multiply to an attention layer, is one or more kernels. Kernel quality determines how much of a GPU's theoretical throughput is actually delivered, which is why a facility's realised output depends on software as well as hardware.

See also Thread Block Grid, CUDA C++, Peak rate

Memory hierarchy

The ordered set of memory types a thread can use, from fastest and smallest to slowest and largest: registers, shared memory and L1 cache, L2 cache, and global memory in GPU RAM. Each step down is roughly an order of magnitude slower. Most performance work on a GPU is about keeping data as high in this hierarchy as possible for as long as possible.

THREAD HIERARCHYMEMORY HIERARCHYHARDWAREThread block gridGlobal memoryGPUThread blockShared memoryStreaming MultiprocessorWarp: 32 threadsno memory level of its ownWarp schedulerThreadRegistersCore
Registers, shared memory and global memory, each scoped to a level of the thread hierarchy.

See also Registers, Shared Memory, Global Memory

Registers

Per-thread storage, the fastest memory on the device, allocated from the SM's register file. Each thread gets its own registers and they are private to it. The compiler decides how many a kernel needs; when that number is high, fewer threads fit on the SM, and when it exceeds the limit, values spill to much slower memory.

See also Register File, Register pressure

Shared Memory

A block of fast on-chip memory, inside the SM, that all threads in a thread block can read and write. It is explicitly managed by the programmer and is the main tool for reusing data across threads without returning to global memory. Well-written matrix kernels stage tiles of their inputs in shared memory, and this staging is where much of their speed comes from.

See also L1 Data Cache, Bank conflict, Tensor Memory Accelerator

Global Memory

The memory space backed by GPU RAM, visible to every thread on the device and to the host. It is the largest memory on the GPU and by far the slowest to access from a thread, with latency measured in hundreds of cycles. Model weights, activations and datasets live here, so global memory bandwidth is the ceiling for any memory-bound workload.

See also GPU RAM, Memory bandwidth, Memory coalescing

Parallel Thread ExecutionPTX

NVIDIA's intermediate instruction set: a stable, virtual assembly language that compilers target and that the driver translates into the actual machine code for a specific GPU. PTX lets code compiled years ago run on hardware released later. It is also where much of NVIDIA's compatibility guarantee lives, and the layer that competing chip makers find hardest to replicate.

See also Streaming Assembler, nvcc, NVRTC

Streaming AssemblerSASS

The real machine code that an NVIDIA GPU executes, specific to each architecture. PTX is translated into SASS either at compile time or by the driver at load time. SASS is not publicly documented in full, which keeps the lowest layer of the stack proprietary; performance engineers read it through NVIDIA's disassembly tools when PTX does not explain what the hardware is doing.

See also Parallel Thread Execution, CUDA Binary Utilities

CUDA Tile programming model

A newer programming model, introduced alongside Blackwell, in which the programmer describes operations on tiles of data rather than on individual threads, and the compiler maps those tiles onto warps, Tensor Cores and memory. It raises the level of abstraction in the same way the thread model once did for graphics hardware. Its purpose is to make high Tensor Core utilisation reachable without hand-tuned kernels.

See also cuTile, Tensor Core, CUDA programming model

Group 03

Host software

Drivers, libraries and tools are what a facility actually operates and what customers actually run. They also produce every utilisation and health figure that an owner reports to customers and financiers.

ApplicationPyTorch, JAX, vLLM and other frameworksLibrariescuBLAS, cuDNN, CUTLASSCUDA Runtime APIlibcudart.so, shipped with the applicationCUDA Driver APIlibcuda.so, the user-mode driverKernel-mode drivernvidia.ko, inside the operating systemGPUCompilersnvcc ahead of time, NVRTC at runtimeProfilingCUPTI, Nsight SystemsManagementNVML, libnvml.so, nvidia-smi
The host software stack. Everything an application does reaches the GPU through the runtime, the user-mode driver and the kernel module. Compilers, profilers and management tools attach alongside.
CUDA software platform

The complete set of software NVIDIA ships for programming its GPUs: the drivers, the compiler, the runtime and driver interfaces, the maths and deep learning libraries, and the profiling and management tools. It runs on the host CPU and controls the device. It is the reason most AI software is written for NVIDIA hardware first and ported elsewhere later, if at all.

See also CUDA programming model, NVIDIA GPU drivers, cuBLAS

CUDA C++

The extended dialect of C++ in which most GPU kernels are written. It adds a small number of keywords and built-in variables for launching kernels, identifying threads and placing data in the memory hierarchy. Higher-level frameworks such as PyTorch ultimately call kernels written in CUDA C++ or generated from it.

See also Kernel, nvcc

NVIDIA GPU drivers

The software that lets the operating system and applications talk to the GPU. The driver has a kernel-mode part that runs inside the operating system and a user-mode part that applications link against. Driver versions determine which CUDA versions and which GPUs are supported, and keeping thousands of nodes on compatible driver versions is a real operational task.

ApplicationPyTorch, JAX, vLLM and other frameworksLibrariescuBLAS, cuDNN, CUTLASSCUDA Runtime APIlibcudart.so, shipped with the applicationCUDA Driver APIlibcuda.so, the user-mode driverKernel-mode drivernvidia.ko, inside the operating systemGPUCompilersnvcc ahead of time, NVRTC at runtimeProfilingCUPTI, Nsight SystemsManagementNVML, libnvml.so, nvidia-smi
The driver's two halves: the user-mode library that applications link against, and the kernel module that addresses the hardware.

See also nvidia.ko, libcuda.so

nvidia.ko

The kernel-mode component of the NVIDIA driver on Linux, loaded into the operating system kernel. It handles the lowest-level work: memory mapping, interrupts, power states and the command queues that the GPU reads from. The open-source variant of this module is now the default for data centre GPUs.

ApplicationPyTorch, JAX, vLLM and other frameworksLibrariescuBLAS, cuDNN, CUTLASSCUDA Runtime APIlibcudart.so, shipped with the applicationCUDA Driver APIlibcuda.so, the user-mode driverKernel-mode drivernvidia.ko, inside the operating systemGPUCompilersnvcc ahead of time, NVRTC at runtimeProfilingCUPTI, Nsight SystemsManagementNVML, libnvml.so, nvidia-smi
nvidia.ko is the only component that addresses the GPU directly.

See also NVIDIA GPU drivers

libcuda.so

The user-mode driver library on Linux, and the implementation of the CUDA Driver API. Every CUDA program, whatever language or framework it uses, ends up calling into this library. It ships with the driver rather than with the CUDA toolkit, which is why the two must be version-compatible.

ApplicationPyTorch, JAX, vLLM and other frameworksLibrariescuBLAS, cuDNN, CUTLASSCUDA Runtime APIlibcudart.so, shipped with the applicationCUDA Driver APIlibcuda.so, the user-mode driverKernel-mode drivernvidia.ko, inside the operating systemGPUCompilersnvcc ahead of time, NVRTC at runtimeProfilingCUPTI, Nsight SystemsManagementNVML, libnvml.so, nvidia-smi
libcuda.so implements the Driver API and ships with the driver, not with the toolkit.

See also CUDA Driver API, libcudart.so

CUDA Driver API

The low-level programming interface to the GPU, exposed by libcuda.so. It gives explicit control over contexts, modules, memory and kernel launches and is used by language runtimes and frameworks that need that control. Most application code uses the simpler Runtime API instead.

ApplicationPyTorch, JAX, vLLM and other frameworksLibrariescuBLAS, cuDNN, CUTLASSCUDA Runtime APIlibcudart.so, shipped with the applicationCUDA Driver APIlibcuda.so, the user-mode driverKernel-mode drivernvidia.ko, inside the operating systemGPUCompilersnvcc ahead of time, NVRTC at runtimeProfilingCUPTI, Nsight SystemsManagementNVML, libnvml.so, nvidia-smi
The Driver API sits directly above the kernel module. Runtimes and frameworks that need fine control call it.

See also CUDA Runtime API, libcuda.so

CUDA Runtime API

The higher-level programming interface most CUDA programs use, implemented in libcudart.so and layered over the Driver API. It manages contexts and modules automatically and offers a simpler model for memory and kernel launches. The familiar functions for allocating GPU memory and copying data belong to this interface.

ApplicationPyTorch, JAX, vLLM and other frameworksLibrariescuBLAS, cuDNN, CUTLASSCUDA Runtime APIlibcudart.so, shipped with the applicationCUDA Driver APIlibcuda.so, the user-mode driverKernel-mode drivernvidia.ko, inside the operating systemGPUCompilersnvcc ahead of time, NVRTC at runtimeProfilingCUPTI, Nsight SystemsManagementNVML, libnvml.so, nvidia-smi
The Runtime API wraps the Driver API for application code. Most CUDA programs stop here.

See also CUDA Driver API, libcudart.so

libcudart.so

The shared library that implements the CUDA Runtime API. It ships with the CUDA toolkit and is usually bundled with, or statically linked into, each application. Because it sits above the driver, an application can carry its own runtime version while depending on a sufficiently recent driver underneath.

ApplicationPyTorch, JAX, vLLM and other frameworksLibrariescuBLAS, cuDNN, CUTLASSCUDA Runtime APIlibcudart.so, shipped with the applicationCUDA Driver APIlibcuda.so, the user-mode driverKernel-mode drivernvidia.ko, inside the operating systemGPUCompilersnvcc ahead of time, NVRTC at runtimeProfilingCUPTI, Nsight SystemsManagementNVML, libnvml.so, nvidia-smi
libcudart.so is bundled with the application, so it can move independently of the driver beneath it.

See also CUDA Runtime API, libcuda.so

nvcc

The CUDA compiler driver. It splits CUDA C++ source into host code, which it hands to the system's C++ compiler, and device code, which it compiles to PTX and SASS for the compute capabilities requested. Build times and the choice of target architectures are set here.

ApplicationPyTorch, JAX, vLLM and other frameworksLibrariescuBLAS, cuDNN, CUTLASSCUDA Runtime APIlibcudart.so, shipped with the applicationCUDA Driver APIlibcuda.so, the user-mode driverKernel-mode drivernvidia.ko, inside the operating systemGPUCompilersnvcc ahead of time, NVRTC at runtimeProfilingCUPTI, Nsight SystemsManagementNVML, libnvml.so, nvidia-smi
nvcc and NVRTC turn CUDA C++ into PTX and SASS, ahead of time and at runtime respectively.

See also Parallel Thread Execution, Compute Capability, NVRTC

NVRTC

A library for compiling CUDA C++ to PTX at runtime, inside a running program, rather than ahead of time. It allows frameworks to generate kernels specialised for the exact shapes and types they encounter. Just-in-time compilation of this kind is now routine in inference and training stacks.

See also nvcc, Parallel Thread Execution

CUDA Binary Utilities

Command-line tools in the toolkit for inspecting compiled GPU code, including a disassembler that shows the SASS inside a binary and a tool that lists the architectures a binary targets. They are how engineers confirm what the compiler actually produced.

See also Streaming Assembler

CUDA Graph

A way of recording a sequence of kernel launches and memory operations once and replaying it many times as a single unit. Replaying a graph removes most of the per-launch overhead from the host. For inference workloads made of many small kernels, graphs can be the difference between a GPU that idles between launches and one that stays busy.

See also Overhead, Kernel

cuBLAS

NVIDIA's library of basic linear algebra routines for the GPU, above all matrix multiplication. It contains hand-tuned kernels for each architecture, and almost every training and inference framework calls it. The gap between a naive matrix multiply and the cuBLAS version is a practical measure of how much performance lives in software.

ApplicationPyTorch, JAX, vLLM and other frameworksLibrariescuBLAS, cuDNN, CUTLASSCUDA Runtime APIlibcudart.so, shipped with the applicationCUDA Driver APIlibcuda.so, the user-mode driverKernel-mode drivernvidia.ko, inside the operating systemGPUCompilersnvcc ahead of time, NVRTC at runtimeProfilingCUPTI, Nsight SystemsManagementNVML, libnvml.so, nvidia-smi
cuBLAS, cuDNN and CUTLASS sit between frameworks and the runtime. Most matrix work in a framework ends up in one of them.

See also CUTLASS, Tensor Core

cuDNN

NVIDIA's library of primitives for deep neural networks: convolutions, attention, normalisation, activation functions and similar operations, tuned per architecture. Frameworks call cuDNN for the layers it covers and fall back to their own kernels elsewhere. Its depth is one reason moving a mature workload off NVIDIA hardware costs more than the hardware price difference.

See also cuBLAS, CUDA software platform

CUTLASS

An open-source C++ template library from NVIDIA for building high-performance matrix multiplication and related kernels. Where cuBLAS is a finished product, CUTLASS is the toolkit for people who need custom variants, such as fused operations in attention layers. Many of the fastest published kernels for recent GPUs are built on it.

See also CuTe, cuBLAS

CuTe

The core layer of CUTLASS: a set of abstractions for describing how tensors are laid out in memory and across threads, and for moving data between layouts. It makes the tiling and data-movement patterns that Tensor Cores require explicit and composable. Most of the complexity in a modern matrix kernel is in these layouts rather than in the arithmetic.

See also CUTLASS, CuTe DSL

CuTe DSL

A Python interface to the CuTe abstractions that generates GPU code without writing C++ templates. It shortens the loop between designing a kernel and measuring it, and brings CUTLASS-grade performance within reach of teams that work mainly in Python.

See also CuTe, cuTile

cuTile

A Python-based implementation of the CUDA Tile programming model, in which kernels are written in terms of operations on tiles and the compiler handles the mapping onto hardware. It is the entry point to the tile model for most developers and is intended to make near-peak Tensor Core performance accessible without low-level work.

See also CUDA Tile programming model, CuTe DSL

CUPTI

The CUDA Profiling Tools Interface: a library that exposes hardware performance counters and activity records to profiling tools. Products such as Nsight Systems are built on it, and so are the monitoring agents that report what a fleet is actually doing. Any serious measurement of GPU utilisation ultimately comes through CUPTI or NVML.

ApplicationPyTorch, JAX, vLLM and other frameworksLibrariescuBLAS, cuDNN, CUTLASSCUDA Runtime APIlibcudart.so, shipped with the applicationCUDA Driver APIlibcuda.so, the user-mode driverKernel-mode drivernvidia.ko, inside the operating systemGPUCompilersnvcc ahead of time, NVRTC at runtimeProfilingCUPTI, Nsight SystemsManagementNVML, libnvml.so, nvidia-smi
CUPTI exposes the hardware counters. Nsight Systems and fleet monitoring agents read them through it.

See also Nsight Systems, NVML, Pipe utilisation

Nsight Systems

NVIDIA's system-wide profiler. It records a timeline of CPU activity, kernel launches, memory transfers and GPU execution so that an engineer can see where time goes and where the GPU is idle. It answers the question of whether a slow workload is limited by the GPU, the host or the data path between them.

See also CUPTI, Overhead, Performance bottleneck

NVML

The NVIDIA Management Library: a programming interface for monitoring and managing GPUs, covering temperature, power draw, memory use, clock speeds, error counts and the coarse utilisation figures most dashboards report. Fleet telemetry, orchestration systems and the nvidia-smi tool are built on it.

ApplicationPyTorch, JAX, vLLM and other frameworksLibrariescuBLAS, cuDNN, CUTLASSCUDA Runtime APIlibcudart.so, shipped with the applicationCUDA Driver APIlibcuda.so, the user-mode driverKernel-mode drivernvidia.ko, inside the operating systemGPUCompilersnvcc ahead of time, NVRTC at runtimeProfilingCUPTI, Nsight SystemsManagementNVML, libnvml.so, nvidia-smi
NVML, its library libnvml.so and the nvidia-smi tool report GPU state to operators and schedulers.

See also libnvml.so, nvidia-smi

libnvml.so

The shared library that implements NVML on Linux, shipped with the driver. Monitoring agents and schedulers link against it directly. It is the practical source of the GPU health and power data that an operator reports to customers and lenders.

See also NVML

nvidia-smi

The NVIDIA System Management Interface, a command-line tool built on NVML that shows the state of every GPU in a node: utilisation, memory, temperature, power and running processes. It is the first thing an operator runs when a node misbehaves. Its headline utilisation figure only reports whether any kernel was running, not how hard the GPU was working, and should not be mistaken for a measure of productive output.

See also NVML, Streaming Multiprocessor utilisation, Pipe utilisation

Group 04

Performance

A facility earns on the throughput it achieves. A specification sheet quotes the throughput it could achieve. These terms describe the gap between the two and the measurements that show where it comes from.

Arithmetic intensity: operations per byte moved, log scaleAttainable throughput, log scaleMemory bandwidth roofPeak arithmetic rateRidge pointInference decoding, small batchLarge-batch training
The roofline. Attainable throughput is capped by memory bandwidth at low arithmetic intensity and by the arithmetic peak at high intensity. Inference decoding sits under the slope, large-batch training under the flat roof.
Performance bottleneck

The resource that limits how fast a workload can run: arithmetic throughput, memory bandwidth, latency, host overhead or something else. Every workload has one, and speeding up anything other than the bottleneck changes nothing. Finding it is most of performance engineering, and it is the first question to ask when a facility's measured output falls short of its specification.

See also Roofline model, Compute-bound, Memory-bound

Peak rate

The theoretical maximum throughput of a GPU for a given operation and precision, quoted on specification sheets in floating-point operations per second or bytes per second. No real workload reaches it; well-tuned matrix multiplications reach a large fraction and most other work reaches far less. Revenue models built on peak rates rather than achieved rates are a recurring source of disappointment.

Arithmetic intensity: operations per byte moved, log scaleAttainable throughput, log scaleMemory bandwidth roofPeak arithmetic rateRidge pointInference decoding, small batchLarge-batch training
The flat roof is the peak rate. Nothing above it is attainable, and most workloads sit well below it.

See also Arithmetic bandwidth, Memory bandwidth, Pipe utilisation

Roofline model

A simple chart that shows the best performance a workload can achieve on a given GPU as a function of its arithmetic intensity. Below a certain intensity the ceiling is set by memory bandwidth and rises with intensity; above it the ceiling is flat at the arithmetic peak. Placing a workload on the roofline shows immediately whether it is memory-bound or compute-bound and how far it is from the limit.

See also Arithmetic intensity, Arithmetic bandwidth, Memory bandwidth

Arithmetic intensity

The number of arithmetic operations a workload performs per byte of data it moves from memory. High intensity means the GPU can do a lot of work on each value it fetches and is likely to be compute-bound; low intensity means it is fetching more than it computes and is likely to be memory-bound. Large-batch training has high intensity; token-by-token inference has low intensity.

Arithmetic intensity: operations per byte moved, log scaleAttainable throughput, log scaleMemory bandwidth roofPeak arithmetic rateRidge pointInference decoding, small batchLarge-batch training
Arithmetic intensity is the horizontal axis. Doing more work per byte fetched moves a workload right, out of the memory-bound region.

See also Roofline model, Compute-bound, Memory-bound

Arithmetic bandwidth

The rate at which a GPU can perform arithmetic, usually expressed in floating-point operations per second for a given precision. It is the flat part of the roofline. For AI workloads the relevant figure is the Tensor Core rate at the precision actually used.

Arithmetic intensity: operations per byte moved, log scaleAttainable throughput, log scaleMemory bandwidth roofPeak arithmetic rateRidge pointInference decoding, small batchLarge-batch training
Arithmetic bandwidth sets the height of the flat roof.

See also Peak rate, Tensor Core, Compute-bound

Memory bandwidth

The rate at which data can be moved between GPU RAM and the processor, measured in bytes per second. It is the sloped part of the roofline and the binding constraint for memory-bound work such as inference decoding, where each generated token requires reading the full set of model weights. Memory bandwidth, more than arithmetic peak, often determines how many tokens per second a GPU can serve.

Arithmetic intensity: operations per byte moved, log scaleAttainable throughput, log scaleMemory bandwidth roofPeak arithmetic rateRidge pointInference decoding, small batchLarge-batch training
Memory bandwidth sets the slope. Doubling it lifts the whole sloped section.

See also GPU RAM, Memory-bound, Little's law

Compute-bound

A workload whose speed is limited by how fast the GPU can perform arithmetic rather than by how fast it can fetch data. Compute-bound work sits under the flat part of the roofline and benefits from faster or more numerous Tensor Cores and from lower-precision formats. Training large models is the main compute-bound workload in AI.

Arithmetic intensity: operations per byte moved, log scaleAttainable throughput, log scaleMemory bandwidth roofPeak arithmetic rateRidge pointInference decoding, small batchLarge-batch training
Compute-bound work sits under the flat roof, where only faster arithmetic helps.

See also Memory-bound, Arithmetic intensity

Memory-bound

A workload whose speed is limited by memory bandwidth, because it performs too few operations per byte fetched to keep the arithmetic units busy. Most inference serving at small batch sizes is memory-bound. For such work, a GPU with more memory bandwidth outperforms one with a higher arithmetic peak, which matters when choosing hardware for an inference-heavy facility.

Arithmetic intensity: operations per byte moved, log scaleAttainable throughput, log scaleMemory bandwidth roofPeak arithmetic rateRidge pointInference decoding, small batchLarge-batch training
Memory-bound work sits under the slope, where only more bandwidth or higher intensity helps.

See also Compute-bound, Memory bandwidth

Overhead

Time spent on work that is neither computation nor useful data movement: launching kernels, synchronising, waiting on the host, or moving data across the slower link between host and device. Overhead is why a workload made of many small kernels can leave the GPU mostly idle even when each kernel is efficient. CUDA Graphs and larger batch sizes are the usual remedies.

See also CUDA Graph, Nsight Systems

Latency hiding

The technique of keeping a GPU busy by switching between many resident warps so that while one waits for memory another computes. GPUs are designed around this rather than around the large caches and prediction logic that CPUs use. It depends on having enough independent work resident at once, which is what occupancy measures.

Cycle 1Cycle 2Cycle 3Cycle 4Cycle 5Cycle 6Cycle 7Cycle 8Cycle 9Cycle 10Warp slot 1IssuedStalledStalledEligibleIssuedStalledEligibleStalledWarp slot 2StalledIssuedStalledStalledStalledStalledStalledEligibleWarp slot 3EligibleEligibleStalledStalledStalledStalledStalledIssuedWarp slot 4IssuedEligibleStalledIssuedStalledIssuedEligible, not selectedStalledNo warp resident
Latency hiding on one scheduler. While a warp is stalled on memory the scheduler issues from another. The two cycles with no issue are the ones where every resident warp was waiting.

See also Warp Scheduler, Occupancy, Little's law

Little's law

A result from queueing theory: the average number of items in a system equals their arrival rate multiplied by the time each spends there. Applied to a GPU, it says how many memory requests must be in flight to sustain a given bandwidth at a given latency. It explains why high memory bandwidth requires high occupancy, and why a GPU with few resident warps cannot use the bandwidth it paid for.

See also Latency hiding, Memory bandwidth, Occupancy

Occupancy

The ratio of warps actually resident on an SM to the maximum the SM could hold. It is limited by how many registers and how much shared memory each thread block uses. Higher occupancy gives the warp schedulers more to choose from and so hides latency better, though beyond a point more occupancy does not help and the fastest kernels often run below the maximum.

Cycle 1Cycle 2Cycle 3Cycle 4Cycle 5Cycle 6Cycle 7Cycle 8Cycle 9Cycle 10Warp slot 1Warp slot 2Warp slot 3Warp slot 4Warp residentSlot empty
Four warp slots over ten cycles. Warps are resident in 29 of the 40 slots, an occupancy of about 73 percent.

See also Register pressure, Latency hiding, Thread Block

Register pressure

The demand a kernel places on the register file. When each thread needs many registers, fewer threads fit on the SM, which lowers occupancy; when the demand exceeds what is available, the compiler spills values to local memory, which is far slower. Managing register pressure is a central trade-off in kernel tuning.

See also Register File, Registers, Occupancy

Memory coalescing

The hardware's ability to combine the memory requests of the 32 threads in a warp into as few transactions as possible when those threads access adjacent addresses. Coalesced access uses the full width of the memory bus; scattered access wastes most of it. Data layout decisions that preserve coalescing can change effective bandwidth by an order of magnitude.

See also Global Memory, Warp, Memory bandwidth

Bank conflict

A slowdown that occurs when several threads in a warp try to access shared memory addresses that map to the same memory bank in the same cycle, forcing the accesses to be serialised. Shared memory is divided into 32 banks precisely to allow 32 simultaneous accesses, so conflicts undo its main advantage. Tile layouts are often padded specifically to avoid them.

See also Shared Memory, Warp

Warp divergence

What happens when threads within one warp take different branches of a conditional. Because a warp issues one instruction at a time, the hardware runs each branch in turn with the non-participating threads idle, so a fully divergent warp can run at a fraction of its potential. Code is structured so that threads in the same warp follow the same path wherever possible.

See also Warp, Branch efficiency

Branch efficiency

The proportion of branch instructions in which all threads of a warp took the same path. It is the profiler's measure of warp divergence: an efficiency of 100 percent means no divergence, and anything much below it points to control flow that should be restructured.

See also Warp divergence

Warp execution state

The condition of a resident warp at a given cycle: selected and issuing an instruction, eligible but not selected, or stalled waiting on something. Profilers break stalls down by cause, such as waiting on memory, on a barrier or on a dependent instruction. The distribution of these states across a kernel shows directly why the SM is not issuing every cycle.

Cycle 1Cycle 2Cycle 3Cycle 4Cycle 5Cycle 6Cycle 7Cycle 8Cycle 9Cycle 10Warp slot 1IssuedStalledStalledEligibleIssuedStalledEligibleStalledWarp slot 2StalledIssuedStalledStalledStalledStalledStalledEligibleWarp slot 3EligibleEligibleStalledStalledStalledStalledStalledIssuedWarp slot 4IssuedEligibleStalledIssuedStalledIssuedEligible, not selectedStalledNo warp resident
Each cell is one warp in one cycle: issued, eligible but not selected, stalled, or no warp resident.

See also Scoreboard stall, Issue efficiency, Warp Scheduler

Scoreboard stall

A stall in which a warp cannot issue its next instruction because that instruction depends on a result, usually a memory load, that has not yet arrived. The scoreboard is the hardware structure that tracks these dependencies. Long scoreboard stalls are the signature of a memory-bound kernel with too little latency hiding.

See also Warp execution state, Memory-bound, Latency hiding

Active cycle

A clock cycle in which an SM has at least one warp resident and so is doing or waiting on work, as opposed to a cycle in which it is empty. Counting active cycles against elapsed cycles separates time when the SM had nothing to do from time when it had work but was stalled. The two problems have different fixes.

ActiveActiveActiveActiveActiveActiveActiveActiveIdleIdleWarp slot 1Warp slot 2Warp slot 3Warp slot 4Active cycle: a warp is residentIdle cycle: nothing to run
Eight of the ten cycles have at least one resident warp. The last two are idle, not stalled, and need a different fix.

See also Issue efficiency, Streaming Multiprocessor utilisation

Issue efficiency

The fraction of active cycles in which a warp scheduler actually issued an instruction. It measures how well latency is being hidden: low issue efficiency means the scheduler frequently found every resident warp stalled. Along with pipe utilisation it is the most direct hardware measure of whether a GPU's time is being used.

Cycle 1Cycle 2Cycle 3Cycle 4Cycle 5Cycle 6Cycle 7Cycle 8Cycle 9Cycle 10Warp slot 1IssuedIssuedWarp slot 2IssuedWarp slot 3IssuedWarp slot 4IssuedIssuedInstruction issuedResident, nothing issuedSlot empty
Over the eight active cycles the scheduler issued six instructions. In cycles 3 and 6 every resident warp was stalled, so issue efficiency is 75 percent.

See also Active cycle, Pipe utilisation, Warp execution state

Pipe utilisation

How busy each class of execution unit within the SM is: the Tensor Cores, the CUDA Cores, the load/store units and the special function units, each reported separately. For AI workloads the figure that matters is Tensor Core pipe utilisation, which is routinely far lower than the coarse GPU utilisation number that monitoring tools display. This is the metric closest to what a customer is actually paying for.

See also Tensor Core, Streaming Multiprocessor utilisation, nvidia-smi

Streaming Multiprocessor utilisationSM utilisation

The share of time, across the GPU, that SMs are active. It is a more meaningful figure than the single utilisation percentage from nvidia-smi, which only reports whether any kernel was running on the device at all, but it still does not say how hard active SMs were working. A GPU can show high SM utilisation while its Tensor Cores sit mostly idle. Pipe utilisation, one level down, shows whether the work is productive.

See also Pipe utilisation, nvidia-smi, Active cycle

Where this leads

What Outpace does with this vocabulary.

The performance group describes the gap between what a GPU could do and what it does. Outpace underwrites that gap. The thesis sets out why contracted, productive output matters more than installed capacity.

Build the next infrastructure project with Outpace.

Outpace works with project owners, infrastructure partners, capital partners and enterprise customers.