LLM INFERENCE SCORE000000 CLEARED00/11

REFERENCE

HARDWARE TABLE

Bandwidth, dense FLOPs, and the ridge point for the accelerators you will actually meet. Keep this open from Level 04 onward.

How to read this table

Two columns matter more than the rest.

Bandwidth sets your decode speed. Time per token at batch 1 is approximately weight_bytes / bandwidth, and nothing else in the spec sheet enters that calculation.

Ridge point is dense FLOP/s ÷ bandwidth — the arithmetic intensity at which the machine stops being memory-bound. Since decode intensity equals your batch size, the ridge point is the batch size you would need to saturate the machine's arithmetic. A lower ridge is easier to saturate, and therefore better for decode.

All compute figures below are dense BF16. Vendors usually headline the 2:4 structured sparsity number, which is double and does not apply to production LLMs.

Datacenter GPUs

GPUmemorybandwidthdense BF16dense FP8ridge point
A100 40GB SXM40 GB HBM2e1.56 TB/s312 TFLOP/s200
A100 80GB SXM80 GB HBM2e2.04 TB/s312 TFLOP/s153
H100 SXM80 GB HBM33.35 TB/s989 TFLOP/s1979 TFLOP/s295
H100 PCIe80 GB HBM32.0 TB/s756 TFLOP/s1513 TFLOP/s378
H200 SXM141 GB HBM3e4.8 TB/s989 TFLOP/s1979 TFLOP/s206
B200192 GB HBM3e~8 TB/s~2.25 PFLOP/s~4.5 PFLOP/s~281
L40S48 GB GDDR60.86 TB/s362 TFLOP/s733 TFLOP/s419
AMD MI300X192 GB HBM35.3 TB/s~1.31 PFLOP/s~2.61 PFLOP/s~247

Consumer

GPUmemorybandwidthdense BF16ridge point
RTX 409024 GB GDDR6X1.01 TB/s165 TFLOP/s164
RTX 309024 GB GDDR6X0.94 TB/s71 TFLOP/s76

Verify before you rely on these. Vendors quote compute under varying assumptions and revise specifications between silicon revisions. Blackwell and MI300X figures in particular should be checked against a current datasheet — they are given here as working estimates, not authoritative values. Bandwidth figures are the most stable and the most important.

The trend that explains the whole field

A100 (2020)H100 (2022)H200 (2023)B200 (2024)
bandwidth2.04 TB/s3.35 TB/s4.8 TB/s~8 TB/s
dense BF16312 TF/s989 TF/s989 TF/s~2250 TF/s
ridge point153295206~281

Between the A100 and the H100, compute grew 3.2× while bandwidth grew 1.6×. The ridge point nearly doubled, meaning it takes twice the batch size to keep the machine busy. This is the memory wall, and it has been widening for a decade — which is why an entire subfield exists to work around it.

The H200 is the interesting counterexample: identical compute to the H100 with 43% more bandwidth, which pushes the ridge back down to 206. It is a part designed for decode.

Memory hierarchy (H100, approximate)

The roofline above concerns HBM traffic. Inside the chip there are faster tiers, and exploiting them is what Level 07 is about.

levelcapacitybandwidthlatency
registers256 KB per SM~100 TB/s~1 cycle
shared memory / L1228 KB per SM~20 TB/s~30 cycles
L2 cache50 MB~10 TB/s~200 cycles
HBM380 GB3.35 TB/s~500 cycles
NVLink to peer GPU900 GB/s~2 µs
PCIe Gen5 x16~64 GB/s~10 µs
host DRAMTBs~200 GB/s~1 µs

Shared memory is roughly 6× the bandwidth of HBM and about 16× lower latency. FlashAttention is, in one sentence, the observation that if you can keep a tile of the computation in that tier you never pay for the N×N matrix at all.

Note also the NVLink-to-PCIe gap: 14×. Tensor parallelism does two all-reduces per layer, so running TP across a PCIe link rather than NVLink is usually a mistake.

Quick calculations

TPOT_floor  = weight_bytes / bandwidth
max_batch   = (memory - weights - workspace) / (kv_per_token * seq_len)
ridge       = dense_flops / bandwidth
saturated?  = max_batch > ridge          # almost always "no"
kv_per_token = 2 * n_layers * n_kv_heads * head_dim * dtype_bytes

  Llama-3-8B  fp16:  2 x 32 x 8 x 128 x 2 = 131,072 B = 128 KiB
  Llama-3-70B fp16:  2 x 80 x 8 x 128 x 2 = 327,680 B = 320 KiB