How to read a quantum hardware spec sheet
Qubit count is the least informative number on the page. A short guide to the figures that actually predict whether your circuit will return anything.
Vendor announcements lead with qubit count because it is the one number a general audience can rank. It is also close to useless on its own. A 1,000-qubit device with a 2% two-qubit error rate will not run your 400-gate circuit; a 56-qubit device with all-to-all connectivity very well might.
The numbers that matter, in order
Two-qubit gate error. This dominates everything. A circuit with 400 two-qubit gates at
0.3% error per gate retains roughly 0.997^400 ≈ 0.30 of its signal before any mitigation. At
1% error you are at 0.018 — noise. Single-qubit errors are typically an order of magnitude
smaller and rarely decide the outcome.
Connectivity. On a fixed-coupling lattice, a logical two-qubit operation between distant qubits becomes a chain of SWAPs, each costing three CNOTs. An all-to-all device can run the same abstract circuit at a fraction of the physical depth. Always ask for the gate count after transpilation to the target topology — not the textbook count.
T₁ and T₂ against circuit duration. Coherence time only means something relative to how long your circuit takes. The ratio to watch is total circuit duration over T₂, not T₂ alone.
Layer fidelity or mirror-circuit benchmarks. These measure the device running something shaped like a real workload, across many qubits at once, rather than one gate in isolation. Isolated gate fidelities are measured under favourable conditions and do not compose.
A back-of-envelope filter
Before booking device time, we run this and throw out anything that cannot clear a signal threshold:
def surviving_signal(two_q_gates: int, err_2q: float,
duration_us: float, t2_us: float) -> float:
"""Crude upper bound on retained signal. Optimistic by design —
if a circuit fails here, it has no chance on real hardware."""
gate_term = (1.0 - err_2q) ** two_q_gates
decoherence = 2.718281828 ** (-duration_us / t2_us)
return gate_term * decoherence
for name, gates, err, dur, t2 in [
("ansatz L=4, lattice", 412, 0.0030, 180.0, 120.0),
("ansatz L=4, all-to-all", 96, 0.0020, 95.0, 1000.0),
]:
print(f"{name:26s} {surviving_signal(gates, err, dur, t2):.4f}")
The same abstract ansatz, transpiled to two different topologies, differs here by more than an order of magnitude. The qubit count was identical in both cases and told you nothing.
What we ask vendors for
- Two-qubit error distribution across the device, not the median and not the best pair
- Transpiled depth and gate count for our circuit on their topology
- Layer fidelity or mirror-circuit results at the width we intend to use
- Calibration drift over a 24-hour window
- Queue times and the actual cost of the shot budget
A vendor who will give you all six is a vendor worth benchmarking. We publish the comparison with the method attached, so the numbers can be argued with.