Overview
SQUIN refactor
This release focused on reworking the central SQUIN dialect. There are quite a few breaking changes:
- Operator semantics have been completely removed. The corresponding
opdialect has been removed from the SQUIN dialect group. - The
wiredialect has been removed. - Gates are now applied directly to qubits, without separate definitions. The number of gates that are supported has been reduced to ones mostly relevant for near-term hardware. They are defined within the
squin.gatedialect. - Similar changes have been made to
noise, which was also previously based on operator semantics. Now, noise channels are directly applied to qubits and the number of supported noise channels has been reduced. - All gate and noise statements now apply to list of qubits (in the sense of being "broadcasted") in order to support first-class parallelism.
- Extensive standard libraries have been added to conveniently wrap the statements.
- The
qubitdialect has been refactored and restructured.
Native dialect
- Along with the simplified SQUIN dialect, we have also introduced a
nativedialect, which only consists of statements that are natively supported by hardware. - The gate statements have similar semantics as the
squin.gatedialect, specifically in that they apply to lists of qubits to support parallelism. This also makes it easier to rewrite SQUIN to the native dialect. - The dialect also has an extensive standard library to provide expressions for common gates in terms of the native gate set.
- NOTE: this dialect is not intended to be used directly, but rather for a SQUIN kernel to be rewritten into.
Performance improvements
The simplified SQUIN dialect already allowed for some performance improvements, specifically in the SquinToStim rewriting pass.
All changes
- Fix callgraph issue on kirin 0.17.17 by @david-pl in #463
- site analysis support for squin noise statements by @johnzl-777 in #460
- Implement stdlib shorthands for squin noise by @david-pl in #462
- Move MeasurementResult to top-level types by @david-pl in #465
- Fix the UopToParallel pass for qasm2 constants by @david-pl in #477
- Clearly document the units of angles in wrappers by @david-pl in #472
- Move squin.cirq to cirq_utils to reduce import time by @david-pl in #470
- Implement methods for squin noise statements by @david-pl in #478
- added hintlen for better unrolling by @johnzl-777 in #485
- Remove the custom for loop unroll pass in stim passes by @david-pl in #500
- Native gate + stdlib dialect group. by @weinbe58 in #502
- Ensure no overlapping operations when emitting broadcast to cirq by @david-pl in #491
- multirun methods for pyqrack tasks by @jon-wurtz in #490
- Upgrading PyQrack dependency and workflows. by @weinbe58 in #504
- Add qubit ID and measurement ID statements by @david-pl in #499
- Implement clifford dialect by @david-pl in #503
- Remove cirq tags in parallelize and deal with tags when lowering to squin by @david-pl in #489
- Removing platform specific dependencies for pyqrack by @weinbe58 in #509
- Target Lowering
squin.cliffordtonativedialect group. by @weinbe58 in #511 - relax scf tests so they don't sporadically fail by @johnzl-777 in #514
- Add more detailed AssertionError for non GridQubits in conflict graph… by @tcochran-quera in #519
- Refactor & simplify noise dialect by @david-pl in #512
- Refactor cirq - squin emit and lowering by @david-pl in #520
- Rename clifford to gate and remove gate stdlib by @david-pl in #524
- Inline function invokes when emitting a cirq circuit by @david-pl in #533
- Support ZZPowGate when lowering from cirq by @david-pl in #528
- Add U3 gate statement to squin.gate by @david-pl in #534
- Adding test to make sure all statements are covered in
squin2native.GateRuleby @weinbe58 in #535 - Refactor
QASM2FoldandCanonicalizeIListby @weinbe58 in #536 - Refactor SquinToStimPass for clifford dialect + performance by @johnzl-777 in #510
- Remove op and wire dialects by @david-pl in #548
- correlated loss support by @rafaelha in #526
- Simplyfing
qubit.newby @weinbe58 in #518 - Remove correlated error nonce from stim IR by @rafaelha in #560
- Rafaelha/adjoint gates squin to sim by @rafaelha in #559
- Fix correlated rates <-> error probabilities bug in noise model. by @tcochran-quera in #561
- Add debug dialect to squin and stim by @david-pl in #569
- Restructure and move qubit dialect by @david-pl in #557
- Clean up squin gate generation by @cduck in #564
- updating workflows accidentally deleted from Dependabot. by @weinbe58 in #582
- Fix SquinU3ToClifford Tests with Kirin 0.17.33 by @johnzl-777 in #591
- Stim codegen with annotation by @kaihsin in #570
- Get measure_id tests to work by @johnzl-777 in #587
- Kirin upgrade: fix naming and argument conventions in
native.gatedialect. by @weinbe58 in #590 - New Address Analysis. by @weinbe58 in #563
New Contributors
Full Changelog: v0.7.13...v0.8.0