← all papers

Muzzle the Shuttle

Abdullah Ash Saki, Rasit Onur Topaloglu, Swaroop Ghosh. Muzzle the Shuttle: Efficient Compilation for Multi-Trap Trapped-Ion Quantum Computers. DATE 2022. arXiv:2111.07961 · their code: ashsaki/MTS-QCCD-Compiler (Apache-2.0)

QCCDSim's six-trap line (L6): six traps in a row, each with a capacity of 17 ions -- the 15 the compiler places in it at the start, and 2 places kept free for ions passing through. Five benchmarks; the metric is the number of shuttles (moves of one ion from a trap to the next).

T0T1T2T3T4T5J0J1J2J3J4
L6: six traps of capacity 17 (15 placed at the start, 2 kept free for passing ions)
configurationshuttles: their codeour replaythe paperthe paper's rules
Supremacy-64: the QCCDSim baseline
▶ watch it in the Studio
365 shuttles = ours365 shuttles365 shuttles equalTable II, [murali-ti] columnall 11 rules hold
QAOA MaxCut-64: the QCCDSim baseline
▶ watch it in the Studio
1,552 shuttles = ours1,552 shuttles1,552 shuttles equalTable II, [murali-ti] columnall 11 rules hold
SquareRoot-78: the QCCDSim baseline
▶ watch it in the Studio
727 shuttles = ours727 shuttles717 shuttles differsTable II, [murali-ti] columnall 11 rules hold
QFT-64: the QCCDSim baseline
▶ watch it in the Studio
241 shuttles = ours241 shuttles241 shuttles equalTable II, [murali-ti] columnall 11 rules hold
QuadraticForm-64: the QCCDSim baseline
▶ watch it in the Studio
228 shuttles = ours228 shuttles228 shuttles equalTable II, [murali-ti] columnall 11 rules hold
Supremacy-64: Muzzle the Shuttle
▶ watch it in the Studio
261 shuttles = ours261 shuttles223 shuttles differsTable II, This Work columnR1 fails 10 others hold
fidelity0.579 = ours0.579–
QAOA MaxCut-64: Muzzle the Shuttle
▶ watch it in the Studio
994 shuttles = ours994 shuttles957 shuttles differsTable II, This Work columnR1 fails 10 others hold
fidelity0.0285 = ours0.0285–
SquareRoot-78: Muzzle the Shuttle
▶ watch it in the Studio
339 shuttles = ours339 shuttles355 shuttles differsTable II, This Work columnR1 fails 10 others hold
fidelity0.4042 = ours0.4042–
QFT-64: Muzzle the Shuttle
▶ watch it in the Studio
196 shuttles = ours196 shuttles196 shuttles equalTable II, This Work columnR1 fails 10 others hold
fidelity0.1827 = ours0.1827–
QuadraticForm-64: Muzzle the Shuttle
▶ watch it in the Studio
164 shuttles = ours164 shuttles164 shuttles equalTable II, This Work columnR1 fails 10 others hold
fidelity0.2151 = ours0.2151–
The published code and the paper's tableThe compiler's public repository dates from 2023, after the paper. Run on the paper's five benchmarks (L6, 15 ions placed per trap) it reproduces the paper's own shuttle counts for QFT (196) and QuadraticForm (164). For Supremacy it gives 261 against the printed 223 and for SquareRoot 339 against 355, the same for all ten seeds we ran; for QAOA its result depends on an unseeded shuffle and ranges from 903 to 1,021 across ten seeds, against 957.
How the fidelity is computedThe fidelity under each Muzzle run is the estimate its code prints, recomputed by our replay with the same model. It is the product, over every two-qubit gate, of max(0.0001, 1 - t/1,000,000 - A(N)(2n + 1)). Here t = 172 us is the gate's duration (QCCDSim's law for a trap of capacity 17: 13.33 x 17 - 54, rounded down); N is the number of ions in the gate's trap when it starts, and A(N) = max(0.0001, 0.0001 N / ln N - 0.00053) is the error that grows with the chain; n is the motional energy of that trap, in quanta. An ion leaving a trap after a reorder takes its share of the trap's energy plus 0.01, every move from one rail to the next adds 0.001 to what it carries, and arriving adds what it carries plus 0.01 to the trap it joins. A gate swap counts as three gates. Nothing else is in the model: no single-qubit gate, measurement, idle time or cooling. The paper's table prints no fidelity, so the paper's column shows a dash.
The baseline columnQCCDSim reproduces the paper's baseline column exactly for four benchmarks. For SquareRoot it gives 727 shuttles where the table prints 717; the table's own reduction (372 shuttles, 51.17 %) implies 727.
Passing through a full trapEvery one of the compiler's five schedules routes an ion through a trap that is already full (it holds its capacity, 17 ions): once each for Supremacy, SquareRoot and QFT, twice for QAOA (seed 0) and three times for QuadraticForm. In SquareRoot, for example, trap T1 holds 18 ions for 676 µs while ion 17 passes through; the compiler's own record of the chain shows the 18th ion. The shuttle counts are not affected.
Our schedule on the same machine, under the same rules

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.

The same scheduler as for QCCDSim, on the paper's device. It minimises time, not shuttles, so it is compared on 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.

configurationshuttles: QCCDSimMuzzleourstime: QCCDSimMuzzleoursthe paper's rules
Supremacy
against: Supremacy-64: the QCCDSim baseline
▶ watch ours in the Studio
365261 *326278,346 µs191,444 µs *69,824 µsall 11 rules hold
all 11 rules hold
under QCCDSim's chain bookkeeping and the physical one, each qubit's order kept
SquareRoot
against: SquareRoot-78: the QCCDSim baseline
▶ watch ours in the Studio
727339 *620595,972 µs340,978 µs *370,588 µsall 11 rules hold
all 11 rules hold
under QCCDSim's chain bookkeeping and the physical one, each qubit's order kept
QAOA
against: QAOA MaxCut-64: the QCCDSim baseline
▶ watch ours in the Studio
1,552994 *2,2551,021,860 µs736,476 µs *729,126 µsall 11 rules hold
all 11 rules hold
under QCCDSim's chain bookkeeping and the physical one, each qubit's order kept
QFT
against: QFT-64: the QCCDSim baseline
▶ watch ours in the Studio
241196 *2,452356,442 µs430,816 µs *1,104,132 µsall 11 rules hold
all 11 rules hold
under QCCDSim's chain bookkeeping and the physical one, each qubit's order kept
QuadForm
against: QuadraticForm-64: the QCCDSim baseline
▶ watch ours in the Studio
228164 *2,236363,152 µs397,668 µs *1,134,040 µsall 11 rules hold
all 11 rules hold
under QCCDSim's chain bookkeeping and the physical one, each qubit's order kept

* Muzzle's own schedule breaks trap capacity (see the note above); its numbers are shown as its code printed them.

On the paper's own measure, the number of shuttles, Muzzle's compiler stays ahead of ours on every benchmark; ours is faster where it is faster.

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.

runR0R1R2R3R6bR8R14R24R25R27R29
Supremacy-64: the QCCDSim baseline · QCCDSim's rules✓✓✓✓✓✓✓✓✓✓✓
QAOA MaxCut-64: the QCCDSim baseline · QCCDSim's rules✓✓✓✓✓✓✓✓✓✓✓
SquareRoot-78: the QCCDSim baseline · QCCDSim's rules✓✓✓✓✓✓✓✓✓✓✓
QFT-64: the QCCDSim baseline · QCCDSim's rules✓✓✓✓✓✓✓✓✓✓✓
QuadraticForm-64: the QCCDSim baseline · QCCDSim's rules✓✓✓✓✓✓✓✓✓✓✓
Supremacy-64: Muzzle the Shuttle · QCCDSim's rules, with a physical gate swap✓✗ 2✓✓✓✓✓✓✓✓✓
QAOA MaxCut-64: Muzzle the Shuttle · QCCDSim's rules, with a physical gate swap✓✗ 3✓✓✓✓✓✓✓✓✓
SquareRoot-78: Muzzle the Shuttle · QCCDSim's rules, with a physical gate swap✓✗ 2✓✓✓✓✓✓✓✓✓
QFT-64: Muzzle the Shuttle · QCCDSim's rules, with a physical gate swap✓✗ 1✓✓✓✓✓✓✓✓✓
QuadraticForm-64: Muzzle the Shuttle · QCCDSim's rules, with a physical gate swap✓✗ 4✓✓✓✓✓✓✓✓✓
ours: Supremacy · QCCDSim's rules✓✓✓✓✓✓✓✓✓✓✓
ours: Supremacy · QCCDSim's rules, with a physical gate swap✓✓✓✓✓✓✓✓✓✓✓
ours: SquareRoot · QCCDSim's rules✓✓✓✓✓✓✓✓✓✓✓
ours: SquareRoot · QCCDSim's rules, with a physical gate swap✓✓✓✓✓✓✓✓✓✓✓
ours: QAOA · QCCDSim's rules✓✓✓✓✓✓✓✓✓✓✓
ours: QAOA · QCCDSim's rules, with a physical gate swap✓✓✓✓✓✓✓✓✓✓✓
ours: QFT · QCCDSim's rules✓✓✓✓✓✓✓✓✓✓✓
ours: QFT · QCCDSim's rules, with a physical gate swap✓✓✓✓✓✓✓✓✓✓✓
ours: QuadForm · QCCDSim's rules✓✓✓✓✓✓✓✓✓✓✓
ours: QuadForm · 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
R0 Every operation finds its ions where it says they are
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.
R1 A site holds at most its capacity
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.
R2 A junction holds one ion at a time
for all j in junctions, t in instants:
  occupancy(j, t) <= 1
Where three or more rails meet, only one ion may be at any moment, resting or passing through.
R3 A rail carries at most its capacity
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).
R6b A two-ion gate acts on two ions standing in one site
(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.
R8 An ion does one thing at a time
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.
R14 A split takes the ion at the end of its chain, or pays to reorder
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.
R24 Every two-qubit gate of the circuit is performed, and no other
(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.
R25 Each qubit's operations keep the circuit's order
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.
R27 One operation at a time in a trap
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.
R29 Every operation lasts what the clock says
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.

How a paper is checked · all papers