Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Benchmark A — Clifford point

Manual: Validating a result

The one point in the suite where the exact answer is an integer. At a Clifford kick angle a single Pauli string evolves into a single Pauli string with coefficient ±1, so stim can be asked for the truth and the engine has nowhere to hide.

Setup

127-qubit heavy-hex kicked Ising, 5 Trotter steps, θ_h = π/2 — the Clifford point of the utility experiment — timing the Heisenberg propagation of the published weight-10 and weight-17 observables against |0…0⟩. One pytest-benchmark group per observable. min_abs_coeff = 1e-8, single-threaded, seeded fixtures built outside the timed region.

The cutoff is 1e-8, not a dyadic value. This engine drops |c| <= eps while PauliPropagation.jl keeps |c| == eps — a genuine, measured cross-engine divergence. Clifford angles produce exact dyadic coefficients, so a dyadic cutoff is exactly where that boundary is likely to be hit bit-for-bit. 1e-8 is far from any dyadic value, so it changes nothing about which branch survives.

Oracle

stim, at the Clifford point, exact: the tableau simulation gives the ±1 integer directly. Every paulistrings entry also asserts the Clifford invariant on its own result — a single term with coefficient exactly ±1.0 — so a correctness regression fails the benchmark run too, not only the dedicated test file.

Result

The timing numbers for this benchmark live in benchmarks/results/bench_a.json, which is gitignored — the repository commits no timing table for A, so this page quotes none. What is committed, and what this benchmark actually establishes, is correctness and parity:

  • The exact integers are reproduced bit-exactly. Benchmark B scores the same Clifford endpoints across a full eight-point coefficient sweep and finds a worst deviation of 0 for every observable at both endpoints: +1 for weight-10 and −1 for weight-17 at θ_h = π/2, matching A. See Benchmark B.
  • Cross-engine parity is required before either engine’s timed entry runs: both are run once, untimed, and every one of the 1355 per-layer term counts must be identical. The schema-v1 task JSON handed to PauliPropagation.jl is built from the same recorded gate list the paulistrings side runs, so neither engine gets a transcription of the other’s circuit.

Regenerate the timings with:

RAYON_NUM_THREADS=1 pytest benchmarks/python/bench_a_clifford.py \
    --benchmark-only --benchmark-json=benchmarks/results/bench_a.json

The correctness gate

The CI-safe half lives in benchmarks/python/tests/test_benchmark_a_clifford.py and importorskips stim, so the numpy-only CI job stays green without it:

pytest benchmarks/python/tests/test_benchmark_a_clifford.py

Sources: benchmarks/README.md, the driver’s own module docstring in benchmarks/python/bench_a_clifford.py, and, for the reproduced integers, benchmarks/python/theta_sweep/README.md.