Roofline is a steady-state throughput bound. It says nothing about latency, tails, synchronization or queueing.
Workload | Roofline says | Reality | Right tool |
|---|---|---|---|
Pointer chase, dependent misses | High reuse looks fine | Each load waits on the last | Critical-path and overlap analysis |
Barrier-heavy parallel loop | Slopes look healthy | Threads idle at the barrier | Imbalance and sync analysis |
A proposal to widen SIMD for a latency problem needs a latency argument. Roofline can reject wider SIMD for a memory-bound throughput kernel, and nothing more.
Shared bandwidth lowers the slope each kernel sees. Two kernels splitting 20 GB/s face 10 GB/s each, so both caps halve.
Power caps add a third roof below both. A kernel under a power limit sits under a ceiling that neither intensity nor bandwidth moves.
Amdahl's law bounds the speedup from improving only part of a workload. The untouched fraction caps the whole, exactly as a binding roof does.
Here p is the fraction of runtime improved, and s is that part's speedup. The formula takes runtime shares, not operation counts.
Workload with p = 0.8 improvable by s = 4:
S = 1 / (0.2 + 0.8 / 4) = 1 / (0.2 + 0.2) = 1 / 0.4 = 2.5x
Even unbounded s: S = 1 / 0.2 = 5x, the serial fifth dominates
Roofline pairing: 60% of time memory-bound, 40% compute-bound, peak doubles:
S = 1 / (0.6 + 0.4 / 2) = 1 / (0.6 + 0.2) = 1 / 0.8 = 1.25xThe senior move is naming the boundary of the model. Latency, imbalance and power questions get a different analysis, not a bigger roofline.
Speedup is 1 / 0.4 = 2.5x. The serial 20% caps it at 1 / 0.2 = 5x no matter how fast the parallel part gets.
Its slope halves to 10 GB/s. The cap falls from 0.5 x 20 = 10 to 0.5 x 10 = 5 GFLOP/s.