Every PENNANT kernel sits far left of the ridge — pinned to the sloped bandwidth ceiling, nowhere near the flat compute ceiling. That single picture predicts the entire campaign: compute and occupancy levers can't help; only bandwidth and traffic reduction can.
The same picture on every vendor
MI300X (HBM3, 5.3 TB/s peak). Named kernels — cornerDiv, setForce, calcSurfVecs — plotted against the measured ceiling.
Same diagnosis as T4 / H100: bandwidth-bound
So the speedup should scale with HBM bandwidth — and it does, to within ~2% across all three GPUs
The roofline is a predictive model, not a post-hoc diagram
The honest number behind the headline
~2M zones
the crossover. Only above this does the GPU beat a real 14-core EPYC server. Below it, the CPU wins.
"38.5× vs one CPU thread" is the easy, flattering baseline
vs a competent CPU server, the GPU only pays off past a problem-size threshold
We publish the crossover — clients need to know when the accelerator is worth it, not just that it can be
Phase 8 — launch configuration is free performance
One launch-configuration change — zero kernel arithmetic touched:
Routing one zone-kernel to the CPU (hybrid dispatch). The same flag helps on one GPU and hurts on the other:
Config
H100 PCIe
MI300X
SETVELDIFFNORM → CPU
−21% (preferred)
+1.3% (avoid)
all four zone-kernels → CPU
mixed
+12.3%
H100 is host/PCIe-coupled — offloading hides transfer. MI300X is HBM-saturated and resident — offloading just adds traffic. The fastest build differs per architecture; we ship per-arch defaults.
Phase 9 — knowing when not to flip a flag
MI300X: fast-math, unsafe-fp-atomics — every compiler flag a no-op, bit-identical output. The "primary lever" did nothing because ROCm already emits the hardware f64 atomic by default. We proved the ceiling was already reached — and saved the client from a placebo flag.
Phase 9 on H100 — a 6.9% "win" that wasn't
A single sequential A/B showed fast-math−6.9%. The per-kernel trace said the GPU was flat — so the win had no device source. A round-robin re-measure erased it: +3.6% slower. The −6.9% was a cold-base phantom — the first run on a fresh box runs slow.
The discipline that catches the artifact
The phantom was large (−6.9%), directional, and survived a bit-identical correctness check
Correctness gates can't catch a measurement error — only repeated, interleaved timing can
The tell: a wall-time delta with no matching device delta
Cost of the check: ~3 minutes of GPU time vs a published wrong number
cold A/B: fast-math −6.9% ✗ phantom
round-robin: fast-math +3.6% ✓ truth
rule: cloud-GPU wall-time A/B
MUST be round-robin
(sequential = cold vs warm)
One codebase, three vendors, two profilers
Backends: CUDA · HIP/ROCm · OpenMP-target — selected at build, one source tree