ML Systems & Infrastructure

memory-bandwidth bound

A kernel is memory-bandwidth bound when it spends most of its time waiting for data to arrive from memory rather than doing arithmetic — the compute units sit idle, drumming their fingers, because the pipes feeding them are full. Adding more FLOPs of capability does nothing; only moving fewer bytes, or moving them faster, helps.

Formally, a kernel is bandwidth-bound when its arithmetic intensity sits to the left of the roofline's ridge point, so its achievable rate equals intensity times memory bandwidth and falls short of peak FLOP/s. The classic ML case is autoregressive LLM decoding: each generated token must read the entire weight matrix, plus the growing KV cache, out of HBM, yet does only a vector-matrix multiply at batch one, so the FLOPs-per-byte ratio is tiny. Throughput is then set by how fast weights and cache stream out of HBM, not by the GPU's tensor-core peak.

This regime explains why so much LLM systems work targets bytes rather than flops: weight and KV-cache quantization, paged and shared KV caches, speculative decoding, and large request batching that amortizes each weight read over many sequences to push intensity back toward the compute roof.

Also called
bandwidth-boundmemory-bound記憶體受限頻寬受限