QEC Lab
Decoder results grouped by what they actually measured. Two decoders benchmarked at different code distances, round counts, error rates, noise models, or stopping rules are not competitors, so they never appear in the same table here.
To see what a decoder is given to work with, the syndrome explorer applies a Pauli error to a small code and shows the syndrome it produces, what the decoder infers from it, and whether the correction restored the logical state.
Three independent decoders, one hashed sample
Surface code d=3, 3 rounds, p=0.02, 20,000 shots — one shared Stim sample (SHA-256 2bac07a88b02), which every decoder provably consumed. Execution class SIMULATION; produced by ketqat/ketqat-benchmarks@4b77286a.
| Decoder | Rank | Uncond. risk | Wilson 95% | p50 / p99 (µs) | Batch (shots/s) |
|---|---|---|---|---|---|
| tesseract vunknown | 1 | 0.13020 | [0.1256, 0.1349] | 355 / 2458 | 1,562 |
| beliefmatching vunknown | 2 | 0.13465 | [0.1300, 0.1395] | 148 / 743 | 6,134 |
| pymatching-mwpm v2.4.0 | 3 | 0.14185 | [0.1371, 0.1468] | 4 / 7 | 1,389,754 |
| Pair | Risk diff. | Paired 95% CI | b01 / b10 | McNemar p | Significant |
|---|---|---|---|---|---|
| pymatching-mwpm − beliefmatching | +0.00720 | [0.00487, 0.00953] | 355 / 211 | 1.52e-9 | yes(α=0.0167) |
| pymatching-mwpm − tesseract | +0.01165 | [0.00837, 0.01493] | 679 / 446 | 4.62e-12 | yes(α=0.0167) |
| beliefmatching − tesseract | +0.00445 | [0.00186, 0.00704] | 394 / 305 | 8.61e-4 | yes(α=0.0167) |
The finding is a tradeoff, not a winner: the most accurate decoder here has roughly a thousandth of the fastest one’s batch throughput. Marginal intervals overlap for two of the three pairs at this shot count — the paired test on shared shots is what separates all three, which is why both tables are shown.
Decoder comparison
No comparable decoder runs yet
A comparison needs at least two decoders measured under identical conditions. Run the packaged example to produce one:
ketqat run decoder-comparison --output result.jsonIt benchmarks two decoders against the same syndrome samples at the same seed, which is what makes the comparison fair, then import the result.
Unranked measurements
These runs did not record a comparability key, so they are listed rather than ranked. Placing them in a table alongside runs whose conditions are known would imply a comparison that has not been established.
- pymatching surface-code-mwpm-baseline-d7-p02
- pymatching surface-code-mwpm-baseline-d7-p015
- pymatching surface-code-mwpm-baseline-d7-p01
- pymatching surface-code-mwpm-baseline-d7-p008
- pymatching surface-code-mwpm-baseline-d7-p005
- pymatching surface-code-mwpm-baseline-d7-p003
- pymatching surface-code-mwpm-baseline-d7-p002
- pymatching surface-code-mwpm-baseline-d7-p001
- pymatching surface-code-mwpm-baseline-d5-p02
- pymatching surface-code-mwpm-baseline-d5-p015
- pymatching surface-code-mwpm-baseline-d5-p01
- pymatching surface-code-mwpm-baseline-d5-p008
- pymatching surface-code-mwpm-baseline-d5-p005
- pymatching surface-code-mwpm-baseline-d5-p003
- pymatching surface-code-mwpm-baseline-d5-p002
- pymatching surface-code-mwpm-baseline-d5-p001
- pymatching surface-code-mwpm-baseline-d3-p02
- pymatching surface-code-mwpm-baseline-d3-p015
- pymatching surface-code-mwpm-baseline-d3-p01
- pymatching surface-code-mwpm-baseline-d3-p008
- pymatching surface-code-mwpm-baseline-d3-p005
- pymatching surface-code-mwpm-baseline-d3-p003
- pymatching surface-code-mwpm-baseline-d3-p002
- pymatching surface-code-mwpm-baseline-d3-p001
Codes and hardware
QEC codes and hardware
Each cell is derived from the device snapshot’s capability fields, so the claim can be checked against the snapshot it came from. This is a capability match, not a recommendation and not an experimental result: only a recorded run could raise a pairing to simulated or demonstrated, and none of these are backed by a run.
The devices below are synthetic topologies used for exploring routing, not observations of any physical hardware.
| Code | Line, 5 qubits | Grid, 3x3 | All-to-all, 6 qubits | Line, 5 qubits, no feed-forward |
|---|---|---|---|---|
| Rotated surface code (X memory) STABILIZER CSS TOPOLOGICAL | THEORETICALLY_SUITABLECapabilities match | THEORETICALLY_SUITABLECapabilities match | THEORETICALLY_SUITABLECapabilities match | INCOMPATIBLE_UNDER_ASSUMPTIONSMissing a required capability
|
| Rotated surface code (Z memory) STABILIZER CSS TOPOLOGICAL | THEORETICALLY_SUITABLECapabilities match | THEORETICALLY_SUITABLECapabilities match | THEORETICALLY_SUITABLECapabilities match | INCOMPATIBLE_UNDER_ASSUMPTIONSMissing a required capability
|
| Unrotated surface code (X memory) STABILIZER CSS TOPOLOGICAL | THEORETICALLY_SUITABLECapabilities match | THEORETICALLY_SUITABLECapabilities match | THEORETICALLY_SUITABLECapabilities match | INCOMPATIBLE_UNDER_ASSUMPTIONSMissing a required capability
|
| Repetition code (memory) STABILIZER CSS | THEORETICALLY_SUITABLECapabilities match | THEORETICALLY_SUITABLECapabilities match | THEORETICALLY_SUITABLECapabilities match | INCOMPATIBLE_UNDER_ASSUMPTIONSMissing a required capability
|
| Color code (XYZ memory) STABILIZER CSS TOPOLOGICAL | THEORETICALLY_SUITABLECapabilities match | THEORETICALLY_SUITABLECapabilities match | THEORETICALLY_SUITABLECapabilities match | INCOMPATIBLE_UNDER_ASSUMPTIONSMissing a required capability
|
Code catalog
- Rotated surface code (X memory)STABILIZERCSSTOPOLOGICALSURFACE
Planar topological code on a rotated lattice, preserving one logical qubit through repeated rounds of syndrome extraction.
- Nearest-neighbour connectivity on a two-dimensional grid is sufficient.
Runnable distances: 3, 5, 7, 9 · reference
- Rotated surface code (Z memory)STABILIZERCSSTOPOLOGICALSURFACE
Rotated surface code memory experiment in the Z basis.
Runnable distances: 3, 5, 7, 9 · reference
- Unrotated surface code (X memory)STABILIZERCSSTOPOLOGICALSURFACE
Unrotated surface code memory; uses more physical qubits per distance than the rotated layout.
Runnable distances: 3, 5, 7 · reference
- Repetition code (memory)STABILIZERCSS
One-dimensional classical repetition code protecting against a single error type. Useful as a control: it is not a full quantum code.
- Protects against one error type only, so a low logical error rate here is not evidence of quantum error correction.
Runnable distances: 3, 5, 7, 9, 11 · reference
- Color code (XYZ memory)STABILIZERCSSTOPOLOGICALCOLOR
Triangular color code memory, admitting transversal Clifford gates.
- Syndrome extraction uses weight-six stabilizers on a three-colorable lattice.
Runnable distances: 3, 5, 7 · reference