Skip to content

Commit 1a1af6e

Browse files
committed
docs: reconcile the remaining performance claims with the corrected artifacts
Sweep of every public .md for bare throughput/latency figures. Most were already handled correctly and are left alone: docs/METHODOLOGY.md and docs/REPRODUCIBILITY_CHECKLIST.md list their claims under "not allowed" / "reject", docs/PLATFORM_ARTIFACT_ROADMAP.md lists its under "Unsafe:", and RELEASE_NOTES.md's Performance Highlights table already carries a withdrawal note. Two things did not line up. RELEASE_NOTES.md contradicted itself. "4.1M dec/s d=5" and "14.6M dec/s @ d=5, batch=10000" were stated as plain fact in the decoder-status table and the GPU section, while the *same* figures sat forty lines below under a header saying no surviving artifact backs them and they must not be cited. Point both at that note. The GPU path has not been re-measured under the circuit-level pipeline - official_benchmark_results.* covers the CPU decoders, PyMatching and ldpc only - so nothing is asserted in its place. The README needed to say *which* Union-Find. The measured rows use the weighted variant, which is what ler._dem_observable_decoder resolves; docs/BENCHMARK_COMPETITIVE.md benchmarks the unweighted one and reports it beating PyMatching on latency at d=3. Both are real and they do not conflict - unweighted UF is faster because it discards the log((1-p)/p) weights, which is also why that document records it above threshold from d=5 up. Stated explicitly so the two documents cannot be read as contradicting each other, with the instruction to quote speed and accuracy together or not at all. Re-verified after editing: all 14 cited rows still match the CSV, no broken relative links.
1 parent 0ab806e commit 1a1af6e

2 files changed

Lines changed: 22 additions & 9 deletions

File tree

README.md

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -454,12 +454,21 @@ Two findings, stated per-cell and not generalised (see
454454
returned *the same number of logical failures on the same 100,000 samples*
455455
1891 and 1596 respectively, identical to the digit. On this workload the two
456456
agree exactly, which is a checkable claim rather than a rounded one.
457-
- **Throughput.** PyMatching was faster than every QECTOR decoder at every
458-
distance measured here — roughly 3× at `d = 3` against `qector_unionfind`,
459-
and two orders of magnitude against `qector_blossom` by `d = 11`. That is
460-
consistent with the long-standing note elsewhere in this project that
461-
PyMatching leads on plain MWPM. It is not a regression, and the artifacts do
462-
not hide it.
457+
- **Throughput.** PyMatching was faster than every QECTOR decoder measured here,
458+
at every distance — roughly 3× at `d = 3` against `qector_unionfind`, and two
459+
orders of magnitude against `qector_blossom` by `d = 11`. That is consistent
460+
with the long-standing note elsewhere in this project that PyMatching leads on
461+
plain MWPM. It is not a regression, and the artifacts do not hide it.
462+
463+
Note which Union-Find this is. `qector_unionfind` above is the **weighted**
464+
variant, which is what `ler._dem_observable_decoder` resolves and what the
465+
accuracy column reflects. `docs/BENCHMARK_COMPETITIVE.md` benchmarks the
466+
**unweighted** one (`qector_unionfind_unweighted`) and reports it beating
467+
PyMatching on latency at `d = 3` — both results are real, and they are not in
468+
conflict: unweighted UF is faster precisely because it discards the
469+
`log((1-p)/p)` edge weights, which is also why that document records it as
470+
above threshold at circuit level from `d = 5` upward. Speed and accuracy are
471+
being traded, so quote the two numbers together or neither.
463472

464473
Neither finding generalises beyond the cells above. Regenerate on quiesced
465474
hardware, and state the noise model, before any number here is used in a claim.

RELEASE_NOTES.md

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -393,8 +393,8 @@ This release delivers the complete QECTOR v3 decoder suite with 4 algorithmic ba
393393
| `GNNPredecoder` | Experimental | Message-passing + edge readout, forward pass OK |
394394
| `LookupTableDecoder` | Stable | Exact d=3,5,7 precomputed, SIMD fallback |
395395
| `HybridDecoder` | Stable | Auto-selection per syndrome difficulty |
396-
| `StreamingDecoder` | Stable | Sliding window, 1.6 µs real-time |
397-
| `BatchDecoder` / `CPUBatchDecoder` | Stable | SIMD, parallel, pooled — 4.1M dec/s d=5 |
396+
| `StreamingDecoder` | Stable | Sliding window; latency figure withdrawn, see below |
397+
| `BatchDecoder` / `CPUBatchDecoder` | Stable | SIMD, parallel, pooled; throughput figure withdrawn, see below |
398398
| `OpenCLBatchDecoder` | Stable | GPU dual-kernel, transparent fallback, resilience |
399399

400400
### GPU Acceleration (OpenCL)
@@ -403,7 +403,11 @@ This release delivers the complete QECTOR v3 decoder suite with 4 algorithmic ba
403403
- Transparent CPU fallback on GPU failure
404404
- Auto-recovery: exits degraded mode after 10 successful calls
405405
- Observability: `consecutive_failures`, `total_failures`, `gpu_recoveries`, `degraded_calls`
406-
- Performance: 14.6M dec/s @ d=5, batch=10000
406+
- Performance: the "14.6M dec/s @ d=5, batch=10000" figure is **withdrawn** — it
407+
is one of the rows under *Performance Highlights* below, which no surviving
408+
artifact backs and which must not be cited. The GPU path has not been
409+
re-measured under the circuit-level pipeline; `official_benchmark_results.*`
410+
covers the CPU decoders, PyMatching and ldpc only.
407411

408412
### Production Infrastructure
409413

0 commit comments

Comments
 (0)