Port built-in synthesis algorithms to rust
What should we add?
Right now in Qiskit we have a synthesis library that provides numerous methods for synthesizing various high level objects into circuits. As part of our effort to migrate more of Qiskit's code into rust for better runtime performance and efficiency we need to look at migrating these functions to Rust.
Until we have an implementation complete for #12205 the full path for this will be potentially limited. But we can work on this in parallel to #12205 and return a "circuit sequence" like we currently do in 2q unitary synthesis and 1q unitary synthesis (we likely can reuse TwoQubitGateSequence from 2q synthesis for >2q circuits as long as it's composed of just standard library gates) and then construct the circuit or dag in python space until we finish #12205.
This will potentially be a blocker for #12211 as we can't leverage a rust implementation of the pass fully if we need to call out to python to perform the synthesis.
The current list of synthesis methods are:
Tasks
- https://github.com/Qiskit/qiskit/issues/12224
- https://github.com/Qiskit/qiskit/issues/12225
- https://github.com/Qiskit/qiskit/issues/12226
- https://github.com/Qiskit/qiskit/issues/12227
- https://github.com/Qiskit/qiskit/issues/12228
- https://github.com/Qiskit/qiskit/issues/12229
- https://github.com/Qiskit/qiskit/issues/12230
- https://github.com/Qiskit/qiskit/issues/12231
- https://github.com/Qiskit/qiskit/issues/12232
- https://github.com/Qiskit/qiskit/issues/12233
- https://github.com/Qiskit/qiskit/issues/12234
- https://github.com/Qiskit/qiskit/issues/12235
- https://github.com/Qiskit/qiskit/issues/12236
- https://github.com/Qiskit/qiskit/issues/12237
- https://github.com/Qiskit/qiskit/issues/12238
- https://github.com/Qiskit/qiskit/issues/12239
- https://github.com/Qiskit/qiskit/issues/12240
- https://github.com/Qiskit/qiskit/issues/12241
- https://github.com/Qiskit/qiskit/issues/12242
- https://github.com/Qiskit/qiskit/issues/12243
- https://github.com/Qiskit/qiskit/issues/12244
- https://github.com/Qiskit/qiskit/issues/12245
- https://github.com/Qiskit/qiskit/issues/12213
-
aqc? (this one might not be necessary or too difficult for the scope of this issue and isn't critical). - https://github.com/Qiskit/qiskit/issues/12005
- https://github.com/Qiskit/qiskit/issues/12008
- https://github.com/Qiskit/qiskit/issues/12004
- https://github.com/Qiskit/qiskit/pull/9185
- https://github.com/Qiskit/qiskit/issues/12330
- https://github.com/Qiskit/qiskit/issues/12907
- #13930
Source: Qiskit/qiskit