Port built-in synthesis algorithms to rust #12212
Labels
mod: transpiler
Issues and PRs related to Transpiler
performance
Rust
This PR or issue is related to Rust code in the repository
synthesis
type: epic
A theme of work that contain sub-tasks
type: feature request
New feature or request
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
synth_permutation_depth_lnn_kms
to Rust #12224synth_permutation_basic
to Rust #12225synth_permutation_acg
to Rust #12226synth_cnot_count_full_pmh
to Rust #12227synth_cnot_depth_line_kms
to Rust #12228synth_cz_depth_line_mr
to Rust #12229synth_cnot_phase_aam
to Rust #12230synth_cx_cz_depth_line_my
to Rust #12231synth_clifford_full
to Rust #12232synth_clifford_ag
to Rust #12233synth_clifford_bm
to Rust #12234synth_clifford_greedy
to Rust #12235synth_clifford_layers
to Rust #12236synth_clifford_depth_lnn
to Rust #12237synth_cnotdihedral_full
to Rust #12238synth_cnotdihedral_two_qubits
to Rust #12239synth_cnotdihedral_general
to Rust #12240synth_stabilizer_layers
to Rust #12241synth_stabilizer_depth_lnn
to Rust #12242synth_circuit_from_stabilizers
to Rust #12243SolovayKitaevDecomposition
to Rust #12244synth_qft_line
to Rust #12245qs_decomposition
to Rust #12213TwoQubitControlledUDecomposer
to rust #12907The text was updated successfully, but these errors were encountered: