Inspiration
BlueQubit's challenge: estimate $\langle Z_q \rangle$ after out-of-time-order correlator (OTOC) circuits $U \, X \, U^\dagger \, Z_q \, U \, X \, U^\dagger$ on up to 38 qubits, too big to simulate exactly. Each circuit is scored by Pearson $r^2$ against the exact values. We wanted to find out which classical simulation methods actually work on these circuits, and why.
What it does
A resumable, budget-capped pipeline that runs every qubit of a circuit on BlueQubit (statevector, MPS, or Pauli-path), caches every result and its cost, and writes a submission CSV. A per-qubit search (pp_finest.py) finds the finest Pauli-path truncation threshold the server will accept.
| Circuit | Qubits | Layout | Method | Score |
|---|---|---|---|---|
| S1 / S2 / S3 | 4 / 16 / 30 | – / chain / 5×6 grid | exact statevector | 300 / 300 |
| G1 | 30 | chain | exact statevector (BlueQubit CPU) | 300 / 300 |
| G2 | 36 | chain | Pauli-path GPU, level 3, finest threshold | 591 / 600 |
| G3 | 36 | 6×6 grid | Pauli-path GPU, level 1, finest threshold | 800 / 800 |
| G4 | 38 | 2D | Pauli-path GPU, level 3, finest threshold | 207 / 1000 |
Total: 2,198 / 3,000
How we built it
Python with the BlueQubit SDK. We solved every circuit up to 30 qubits exactly, then used those answers as ground truth to test approximate methods before spending credits on the hidden circuits. With one GPU job allowed at a time per account, four teammates split long runs across their own accounts, and a merge script combined the results, keeping the finest threshold per qubit.
Challenges we ran into
- MPS fails in 2D. On G2 (a chain), MPS improved with bond dimension $\chi = 64 \to 128 \to 256$ (426 → 497 → 547) but never settled. On G4, MPS scored 0. Running MPS with $\chi = 512$ on S3, a grid with known answers, showed why: some qubits were badly wrong (q27: +0.10 vs exact +0.96).
- Pauli-path collapsed to ≈ 0 at coarse thresholds. The server rejects thresholds it predicts would run out of memory, and we found that which thresholds it accepts depends on the circuit transpilation level (0–3).
- Error is not monotonic in threshold, so a finer setting isn't automatically better. We checked settings on samples with exact answers before trusting them.
- A limited GPU budget (about $30 per person) meant we tested on a few qubits before every full run.
Accomplishments that we're proud of
- G3 (36-qubit 6×6 grid) went from 0 to a perfect 800 / 800.
- G2 improved from 426 to 591 / 600.
- Every run, cost, and dead end is recorded in
NOTES.md, so the results are reproducible.
What we learned
Match the method to the circuit's layout: MPS for 1D chains, Pauli-path for 2D grids. Look for hidden knobs (the transpilation level mattered as much as the threshold). Always validate against an exact answer before scaling up.
What's next for BlueQubit Challenge: CABA
G4 (38 qubits) is our biggest gap at 207/1000. Pauli-path recovers only its strongest signals (q36/37 ≈ +0.15, q28/29 ≈ +0.13), and the rest come out ≈ 0. These circuits were designed with Haar-random blocks to resist Pauli-path, so closing the gap needs a different approach, such as hybrid tensor-network/Pauli methods or exploiting the light-cone structure.
Log in or sign up for Devpost to join the conversation.