QCCDSim
Prakash Murali, Dripto M. Debroy, Kenneth R. Brown, Margaret Martonosi. Architecting Noisy Intermediate-Scale Trapped Ion Quantum Computers. ISCA 2020. arXiv:2004.04706 · their code: prakashmurali/QCCDSim (no license)
Two six-trap devices, a line (L6) and a two-by-three grid (G2x3), trap capacity swept from 14 to 34 ions, six NISQ benchmarks; the simulator every later paper in this list builds on.
- Rules R1, R12, R13 cite it as a source.
- The transport times of the default timing table: shuttle 5 µs, split and merge 80 µs, junction crossing 100 µs and X-junction 120 µs are QCCDSim's, which Jones and Murali carry over; the table is named qccdsim_jones after both.
- The two-qubit gate's error growing with the chain length N in the gate zone as N/ln N, in the default device and the noise model.
- The grid generator and the grid baseline device, a QCCDSim-style grid.
No license file: we ran it locally and publish only the schedules it produced, never its code.
| configuration | time: their code | our replay | the paper | the paper's rules |
|---|---|---|---|---|
| BV-64 on L6, capacity 14, Greedy mapper ▶ watch it in the Studio | 13,274 µs = ours | 13,274 µs | 13,270 µs matchesFig. 6(a), plotted (vector data in the source) | all 11 rules hold |
| fidelity | 0.9776 = ours | 0.9776 | 0.9776 matchesFig. 6(c), plotted | |
| BV-64 on L6, capacity 20, Greedy mapper ▶ watch it in the Studio | 18,297 µs = ours | 18,297 µs | 18,300 µs matchesFig. 6(a) | all 11 rules hold |
| fidelity | 0.9697 = ours | 0.9697 | 0.9697 matchesFig. 6(c) | |
| BV-64 on G2x3, capacity 14, Greedy mapper ▶ watch it in the Studio | 14,354 µs = ours | 14,354 µs | 14,350 µs matchesFig. 7(b) | all 11 rules hold |
| fidelity | 0.9775 = ours | 0.9775 | 0.9775 matchesFig. 7(b) | |
| QAOA-64 (20 layers) on L6, capacity 14, program-order mapper ▶ watch it in the Studio | 162,360 µs = ours | 162,360 µs | 162,400 µs matchesFig. 6(a) | all 11 rules hold |
| fidelity | 0.4758 = ours | 0.4758 | 0.4758 matchesFig. 6(d) | |
| QAOA-64 (20 layers) on L6, capacity 20, program-order mapper ▶ watch it in the Studio | 254,144 µs = ours | 254,144 µs | 254,100 µs matchesFig. 6(a) | all 11 rules hold |
| fidelity | 0.3827 = ours | 0.3827 | 0.3827 matchesFig. 6(d) | |
| QAOA-64 (20 layers) on G2x3, capacity 14, program-order mapper ▶ watch it in the Studio | 191,807 µs = ours | 191,807 µs | 191,800 µs matchesFig. 7(d) | all 11 rules hold |
| fidelity | 0.4004 = ours | 0.4004 | 0.4004 matchesFig. 7(d) | |
| Adder (32-bit) on L6, capacity 14, program-order mapper ▶ watch it in the Studio | 90,135 µs = ours | 90,135 µs | 90,130 µs matchesFig. 6(a) | all 11 rules hold |
| fidelity | 0.803 = ours | 0.803 | 0.803 matchesFig. 6(c) | |
| Adder (32-bit) on L6, capacity 20, program-order mapper ▶ watch it in the Studio | 126,477 µs = ours | 126,477 µs | 126,500 µs matchesFig. 6(a) | all 11 rules hold |
| fidelity | 0.7648 = ours | 0.7648 | 0.7648 matchesFig. 6(c) | |
| QFT-64 on L6, capacity 14, Greedy mapper ▶ watch it in the Studio | 333,074 µs = ours | 333,074 µs | 333,100 µs matchesFig. 6(a) | all 11 rules hold |
| fidelity | 9.701e-04 = ours | 9.701e-04 | 9.701e-04 matchesFig. 6(e) | |
| QFT-64 on L6, capacity 20, Greedy mapper ▶ watch it in the Studio | 550,560 µs = ours | 550,560 µs | 550,600 µs matchesFig. 6(a) | all 11 rules hold |
| fidelity | 0.001295 = ours | 0.001295 | 0.001295 matchesFig. 6(e) | |
| Supremacy-64 on L6, capacity 20, program-order mapper ▶ watch it in the Studio | 223,295 µs = ours | 223,295 µs | 223,300 µs matchesFig. 6(a) | all 11 rules hold |
| fidelity | 0.1563 = ours | 0.1563 | 0.1563 matchesFig. 6(d) | |
| BV-64 on L6, capacity 14, Greedy mapper, ion swaps ▶ watch it in the Studio | 21,634 µs = ours | 21,634 µs | 21,630 µs matchesFig. 8(h), ion swap | all 11 rules hold |
| fidelity | 0.9813 = ours | 0.9813 | 0.9813 matchesFig. 8(b) |
Made by sched, a list scheduler we wrote for the QCCDSim family's model; it is not the compiler that compiles this website's leaderboard entries.
A list scheduler of our own over QCCDSim's primitives: every candidate step is timed exactly before it is chosen, with look-ahead; the qubits are spread over all six traps; a gate swap is used only where the chain bookkeeping of QCCDSim and of the physical machine agree, so the schedule passes under both. Each schedule below is replayed by the same checker as the paper's, with the same timing law and circuit; an operation the paper's law does not price is refused.
| configuration | their code | ours | fidelity: theirs | ours | the paper's rules | |
|---|---|---|---|---|---|---|
| BV-64 on L6, capacity 14 against: BV-64 on L6, capacity 14, Greedy mapper ▶ watch ours in the Studio | 13,274 µs | 12,287 µs | 1.08× faster | 0.9776 | 0.9824 1.00× higher | all 11 rules hold all 11 rules hold under QCCDSim's chain bookkeeping and the physical one, each qubit's order kept |
| BV-64 on L6, capacity 20 against: BV-64 on L6, capacity 20, Greedy mapper ▶ watch ours in the Studio | 18,297 µs | 17,240 µs | 1.06× faster | 0.9697 | 0.9775 1.01× higher | all 11 rules hold all 11 rules hold under QCCDSim's chain bookkeeping and the physical one, each qubit's order kept |
| Adder on L6, capacity 14 against: Adder (32-bit) on L6, capacity 14, program-order mapper ▶ watch ours in the Studio | 90,135 µs | 68,480 µs | 1.32× faster | 0.803 | 0.856 1.07× higher | all 11 rules hold all 11 rules hold under QCCDSim's chain bookkeeping and the physical one, each qubit's order kept |
| Adder on L6, capacity 20 against: Adder (32-bit) on L6, capacity 20, program-order mapper ▶ watch ours in the Studio | 126,477 µs | 102,080 µs | 1.24× faster | 0.7648 | 0.8195 1.07× higher | all 11 rules hold all 11 rules hold under QCCDSim's chain bookkeeping and the physical one, each qubit's order kept |
| QAOA-64 on L6, capacity 14 against: QAOA-64 (20 layers) on L6, capacity 14, program-order mapper ▶ watch ours in the Studio | 162,360 µs | 55,139 µs | 2.94× faster | 0.4758 | 0.458 1.04× lower | all 11 rules hold all 11 rules hold under QCCDSim's chain bookkeeping and the physical one, each qubit's order kept |
| QAOA-64 on L6, capacity 20 against: QAOA-64 (20 layers) on L6, capacity 20, program-order mapper ▶ watch ours in the Studio | 254,144 µs | 80,491 µs | 3.16× faster | 0.3827 | 0.412 1.08× higher | all 11 rules hold all 11 rules hold under QCCDSim's chain bookkeeping and the physical one, each qubit's order kept |
| Supremacy-64 on L6, capacity 20 against: Supremacy-64 on L6, capacity 20, program-order mapper ▶ watch ours in the Studio | 223,295 µs | 108,864 µs | 2.05× faster | 0.1563 | 0.3792 2.43× higher | all 11 rules hold all 11 rules hold under QCCDSim's chain bookkeeping and the physical one, each qubit's order kept |
| QFT-64 on L6, capacity 14 against: QFT-64 on L6, capacity 14, Greedy mapper ▶ watch ours in the Studio | 333,074 µs | 770,215 µs | 2.31× slower | 9.701e-04 | 1.558e-15 622735025495.33× lower | all 11 rules hold all 11 rules hold under QCCDSim's chain bookkeeping and the physical one, each qubit's order kept |
| QFT-64 on L6, capacity 20 against: QFT-64 on L6, capacity 20, Greedy mapper ▶ watch ours in the Studio | 550,560 µs | 699,806 µs | 1.27× slower | 0.001295 | 0.002331 1.80× higher | all 11 rules hold all 11 rules hold under QCCDSim's chain bookkeeping and the physical one, each qubit's order kept |
QFT-64 is a loss: every trap crossing costs two gate swaps under both bookkeepings, only one travelling ion fits in a trap at a time, and finished ions have nowhere to go at these capacities.
The rules each run is judged by
This paper's model is written as the rule sets QCCDSim's rules, QCCDSim's rules, with a physical gate swap. Every run above was replayed and each rule of the set evaluated on it. Our schedules are held to the same rules, and also keep each qubit's gates in the circuit's exact order (R25): we may not reorder a circuit, even where its gates commute.
| run | R0 | R1 | R2 | R3 | R6b | R8 | R14 | R24 | R25 | R27 | R29 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| BV-64 on L6, capacity 14, Greedy mapper · QCCDSim's rules | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| BV-64 on L6, capacity 20, Greedy mapper · QCCDSim's rules | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| BV-64 on G2x3, capacity 14, Greedy mapper · QCCDSim's rules | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| QAOA-64 (20 layers) on L6, capacity 14, program-order mapper · QCCDSim's rules | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| QAOA-64 (20 layers) on L6, capacity 20, program-order mapper · QCCDSim's rules | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| QAOA-64 (20 layers) on G2x3, capacity 14, program-order mapper · QCCDSim's rules | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Adder (32-bit) on L6, capacity 14, program-order mapper · QCCDSim's rules | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Adder (32-bit) on L6, capacity 20, program-order mapper · QCCDSim's rules | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| QFT-64 on L6, capacity 14, Greedy mapper · QCCDSim's rules | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| QFT-64 on L6, capacity 20, Greedy mapper · QCCDSim's rules | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Supremacy-64 on L6, capacity 20, program-order mapper · QCCDSim's rules | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| BV-64 on L6, capacity 14, Greedy mapper, ion swaps · QCCDSim's rules | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| ours: BV-64 on L6, capacity 14 · QCCDSim's rules | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| ours: BV-64 on L6, capacity 14 · QCCDSim's rules, with a physical gate swap | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| ours: BV-64 on L6, capacity 20 · QCCDSim's rules | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| ours: BV-64 on L6, capacity 20 · QCCDSim's rules, with a physical gate swap | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| ours: Adder on L6, capacity 14 · QCCDSim's rules | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| ours: Adder on L6, capacity 14 · QCCDSim's rules, with a physical gate swap | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| ours: Adder on L6, capacity 20 · QCCDSim's rules | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| ours: Adder on L6, capacity 20 · QCCDSim's rules, with a physical gate swap | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| ours: QAOA-64 on L6, capacity 14 · QCCDSim's rules | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| ours: QAOA-64 on L6, capacity 14 · QCCDSim's rules, with a physical gate swap | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| ours: QAOA-64 on L6, capacity 20 · QCCDSim's rules | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| ours: QAOA-64 on L6, capacity 20 · QCCDSim's rules, with a physical gate swap | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| ours: Supremacy-64 on L6, capacity 20 · QCCDSim's rules | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| ours: Supremacy-64 on L6, capacity 20 · QCCDSim's rules, with a physical gate swap | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| ours: QFT-64 on L6, capacity 14 · QCCDSim's rules | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| ours: QFT-64 on L6, capacity 14 · QCCDSim's rules, with a physical gate swap | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| ours: QFT-64 on L6, capacity 20 · QCCDSim's rules | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| ours: QFT-64 on L6, capacity 20 · QCCDSim's rules, with a physical gate swap | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
✓ the rule holds on that run; ✗ it fails, with the number of counterexamples (hover for the first); – it does not apply to that run (hover for why); · the rule is not in that run's rule set.
what each rule says
setup_ok() and (for all o in operations: well_formed(o) and found(o)) and (for all i in ions: position(i, final()) != none)Each operation names its ions and where they are; replaying the execution from the start must find them there, and every ion must end it standing in a site.
for all s in sites, t in instants: occupancy(s, t) <= capacity(s)An ion standing in a site, or passing through it, takes one of its places.
for all j in junctions, t in instants: occupancy(j, t) <= 1Where three or more rails meet, only one ion may be at any moment, resting or passing through.
for all r in rails, t in instants: occupancy(r, t) <= capacity(r)No more ions travel along one rail at once than the rail is built for (one, on most devices).
(for all g in two_qubit_gates, i in ions(g): position(i, start(g)) = site(g)) and (for all g in two_qubit_gates where size(declared_sites(g)) > 0: site(g) in declared_sites(g))Both ions of a two-qubit gate are in the same trap when it starts, and in the trap the programme names for it, if it names one.
for all a, b in operations where a != b and simultaneous(a, b): disjoint(ions(a), ions(b))No ion takes part in two operations at once: it cannot be gated in one place while it is carried to another.
for all m in splits: at_chain_end(m) or swap_paid(m)An ion leaves its chain from the end that faces the rail; an ion further in must first be swapped to that end, which costs gates.
(for all c in circuit_ops where needs_gate(c): gate_count(c) >= 1) and (for all g in two_qubit_gates: serves_circuit(g))Each two-qubit gate of the input circuit is carried out, and the execution performs no two-qubit gate the circuit does not ask for.
for all c1, c2 in circuit_ops where next_on_qubit(c1, c2) and performed(c1) and performed(c2): end(last(c1)) <= start(first(c2))On every qubit, each operation is over before the next one on that qubit begins, in the order the circuit is written -- even where two of them would commute.
for all a, b in operations where a != b and kind(a) in serial_kinds and kind(b) in serial_kinds and site(a) = site(b) and site(a) != none: not simultaneous(a, b)The operations of the kinds listed in serial_kinds hold their trap: two of them in one trap never overlap in time.
for all o in operations where clocked(o): approx(duration(o), clock(o))Each operation's duration is the one the model's duration law gives it.