-
Notifications
You must be signed in to change notification settings - Fork 2.6k
Closed
Labels
RustThis PR or issue is related to Rust code in the repositoryThis PR or issue is related to Rust code in the repositorymod: circuitRelated to the core of the `QuantumCircuit` class or the circuit libraryRelated to the core of the `QuantumCircuit` class or the circuit librarytype: epicA theme of work that contain sub-tasksA theme of work that contain sub-tasks
Milestone
Description
Summary
Modernize the circuit library to improve compiler quality and construction speed. The library circuits are classified in two categories:
- Abstract blocks Operations defined by an action they perform (e.g. mathematical transformation), but can be synthesized in different fashions. These will be
Instruction/Gate
objects with a detached synthesis, that the compiler can reason about.
Examples: QFT, Pauli evolutions, arithmetic circuits, MCX gates. - Structural circuits Circuit defined by their structure (the circuit is unique and cannot be built another way). These will be Python functions returning a
QuantumCircuit
.
Examples: n-local circuits, quantum volume
Changes are to be pending-deprecated for 1.3, deprecated for 1.4 and finalized for 2.0.
Examples
The move to abstract blocks allows the compiler to reason about the circuit building blocks, where previously there was an eager construction:
circuit = ...
circuit.append(MCXGate(n), range(n - 1), [n]) # compiler can now allocate auxiliary qubits for efficient synthesis
circuit.append(QFTGate(2 * n), range(2 * n)) # compiler can choose optimal method based on topology or following measurements
circuit.measure_all()
Python functions can be used as drop-in replacement,
circuit = two_local(num_qubits, ["rx", "ry"], "cx", entanglement="pairwise")
but can enable performance-improvements, e.g. by directly composing onto output circuits.
#### Abstract blocks
- [x] HLS with ancillas
- [x] `MCXGate`: synthesize via HLS & pending-deprecate MCX gate classes other than `MCXGate` (#12961)
- [x] `MCMTGate`: synthesize with HLS synthesis & pending-deprecate `MCMT` and `MCMTVChain` (#13150)
- [x] Pending deprecate circuits with existing gates: `QFT`, `Permutation`, `Diagonal`, `GMS` (@Cryoris) (#13232)
- [x] `PhaseOracle`: additionally needs a tweedledum-free synthesis method (@gadial #13769)
- [x] `library.boolean_logic`: straightforward porting to `Gate` (@alexanderivrii) #13333
- [x] `library.arithmetic` (partially done by #13354)
- [x] `GraphState` (#13353)
- [x] Functional Pauli Rotations (#13371)
#### Structural circuits
- [x] `n_local` & friends @Cryoris (#13310)
- [x] `pauli_feature_map` & friends (#13045)
- [x] `quantum_volume` @mtreinish (#13238)
- [x] `fourier_checking` (#13353)
- [x] `iqp` (#13241)
- [x] `unitary_overlap` (#13353)
- [x] `hidden_linear_function` (#13353)
- [x] `phase_estimation` (#13353)
- [x] `grover_operator` (https://github.com/Qiskit/qiskit/pull/13365)
- [x] `qaoa_ansatz` (#13361)
#### Performance
- [x] Entanglement logic to Rust (#12950)
- [x] Oxidize `n_local` & friends (@Cryoris) #13310
- [x] Oxidize `pauli_feature_map` & friends (#13045)
- [x] Oxidize MCMT v-chain synthesis (@Cryoris) (#13150)
- [ ] In-place composition of functions, e.g. `n_local(..., out=circuit)`
- [ ] https://github.com/Qiskit/qiskit/pull/13295
Metadata
Metadata
Assignees
Labels
RustThis PR or issue is related to Rust code in the repositoryThis PR or issue is related to Rust code in the repositorymod: circuitRelated to the core of the `QuantumCircuit` class or the circuit libraryRelated to the core of the `QuantumCircuit` class or the circuit librarytype: epicA theme of work that contain sub-tasksA theme of work that contain sub-tasks