Revise README with updated benchmark results and clarifications#62
Conversation
Updated performance metrics and clarified benchmarking details in the README.
🤖 Claude Code ReviewReview💡 SuggestionsMarkdown horizontal rule syntax — The diff changes Table reformatting is cosmetic only — The dense no-space column alignment ( New disclaimer paragraph placement — The added note ("A note before reading this table as serving numbers…") appears after the table. Readers will have already drawn conclusions from the table before reaching the caveat. Moving it to immediately before the table header would be more honest and harder to miss. Trailing-whitespace lines — Several unchanged lines in the diff show a trailing space (e.g., the No functional code changes — This diff is documentation-only, so there are no bugs, security issues, performance concerns, or reproducibility risks to report. |
Code Review by Gemini```diff
--- a/benchmarks/README.md
+++ b/benchmarks/README.md
@@ -1,37 +1,37 @@
# We Gave Our Runtime Four GPU Workloads and No Instructions. It Diagnosed Each and Proved Every Fix.
*The trace picks the lever. A gated A/B proves it.*
-**+32.4% on HFT, byte-identical on 400M events. +37% on nuScenes. Up to +427% on KITTI. Zero human tuning, every failed change rolled back.**
+**+32.4% on HFT, byte-identical output on 400 million events. On the edge tracks, up to +427% on KITTI and +37% on nuScenes, where the gate is throughput plus detection equivalence. Zero human tuning, every failed change rolled back.**
*July 2026*
[Reproduce our benchmarks](#try-it-yourself)
----
+-----
We think most GPU fleets run far below the hardware they are paying for, and that the waste is a systems problem, not a kernel problem. The GPU is rarely slow because the math is slow. It is slow because it waits: launching thousands of tiny kernels one at a time, stalling at synchronization points, moving memory it did not need to move, or running work in series that could have overlapped.
Our runtime does one thing: it closes the loop between diagnosis and proof.
- **Observe.** Profile the workload from its own telemetry (CUPTI, NVML). No model-code changes or source access.
- **Diagnose.** Read the dominant bottleneck off the trace: launch-bound, compute-bound, or serialized.
- **Apply.** The candidate intervention selected for that bottleneck.
- **Verify.** A gated A/B on real hardware, best-of-N to suppress jitter.
- **Keep or roll back.** Keep only if the candidate is both faster and output-equivalent. Otherwise revert and report nothing.
Every number in this post is a kept decision, not a guess.
A good engineer can tune one workload once. A fleet is thousands of workloads changing weekly: new models, new request mixes, new kernels, new traffic shapes, new failure modes. That is why this has to be a runtime loop, not a consulting pass. The loop earns its place because it runs continuously, per job, where hand-tuning gives up. Any one result below is useful; the point is that the same loop found all of them automatically, verified each one, and rolled back the ones that failed.
-Two honest notes before the numbers. These are benchmark workloads, not a customer's production fleet, and what they prove is the loop, that the runtime can read what actually limits a workload and apply a safe, verified fix without touching model code. Separately, our commercial wedge is inference serving, and the same loop is now pointed there in a vLLM decode benchmark we describe at the end. We are not pretending these four workloads stand in for that one. They show the loop; the next one runs it on what we sell into.
+Two honest notes before the numbers. These are benchmark workloads, not a customer’s production fleet, and what they prove is the loop, that the runtime can read what actually limits a workload and apply a safe, verified fix without touching model code. Separately, our commercial wedge is inference serving, and the same loop is now pointed there in a vLLM decode benchmark we describe at the end. We are not pretending these four workloads stand in for that one. They show the loop; the next one runs it on what we sell into.
## Where the Waste Actually Lives
Two readings from the trace tell us most of what we need. The first is whether the GPU is **launch-bound** or **compute-bound**: burning time issuing many small kernels, or genuinely busy doing large-matrix arithmetic? The second is **serialized concurrency**, our reading of how much work runs with no overlap.
A serialized concurrency of 1.000 means your GPU is effectively single-threaded at the workload level: thousands of kernels standing in a single-file line, each waiting on the one before it, a piece of hardware built for massive parallelism running its work one at a time.
These two readings decide the lever. A launch-bound workload wants its launches amortized. A compute-bound workload does not care about launch overhead at all, so amortizing launches buys nothing; it wants the arithmetic itself made cheaper. Pick the wrong lever and you do real work for a 0% result.
## Track 1: HFT Limit Order Books (the cleanest proof)
@@ -41,62 +41,64 @@ The strongest result first: **+32.4% throughput with byte-identical output, on 4optimize hft: 400,000,000 events on NVIDIA A100 80GB PCIe baseline : 69,323,880 events/s VERDICT: kept candidate — verified +32.4% faster, identical output Want this run against your own workload? Point us at one GPU job and we will hand back a headroom assessment: its bottleneck classification (launch-bound, compute-bound, or serialized), the serialized-concurrency reading, the levers we tried, which ones passed the gate and which rolled back, and the verified before/after. You give us the workload and read access to run it; we give you a number that is a proven A/B or does not exist. Turnaround is days, not weeks, and it costs you nothing. +----- Thanks to the OpenPCDet and OpenFold projects, and to the KITTI and nuScenes teams, whose open models and datasets made these benchmarks reproducible. |
Updated performance metrics and clarified benchmarking details in the README.