Qiskit / qiskit

Qiskit is an open-source SDK for working with quantum computers at the level of extended quantum circuits, operators, and primitives.
https://www.ibm.com/quantum/qiskit
Apache License 2.0
5.11k stars 2.35k forks source link

Structure of the synthesis library #9667

Closed ShellyGarion closed 8 months ago

ShellyGarion commented 1 year ago

What should we add?

This issue discusses the structure and algorithms to be moved or added to qiskit/synthesis. See also previous discussions in #4311 and #4699.

This issue includes the following:

The starting point of this discussion is copied from https://github.com/Qiskit/qiskit-terra/pull/9375#discussion_r1115906034

### Tasks
ShellyGarion commented 1 year ago
qiskit.synthesis
 |--- su2
    |--- euler
    |--- nonorthogonal
 |--- su4
    |--- supercontrolled
    |--- controlled
    |--- siswap
    |--- b
 |--- unitary
    |--- aqc (approximate quantum compiling)
    |--- qsd (quantum shannon decomposition)
    |--- ccd (column-by-column)
 |--- state
    |
 |--- clifford
    |--- ag
    |--- bm
    |--- full
    |--- greedy
    |--- layers
    |--- lnn
 |--- linear
    |--- graysynth
    |--- depth_lnn
    |--- pmh
 |--- permutation  * use method/paper names here
    |--- lnn
    |--- full
 |--- cnotdihedral
    |--- full
    |--- general
    |--- two_qubits
 |--- discrete_basis
    |--- solovay-kitaev
 |--- evolution
    |--- lie_trotter
    |--- suzuki-trotter
    |--- product_formula
    |--- qdrift
 |--- povm
ShellyGarion commented 1 year ago

I would suggest to split linear into two folders: linear (for CNOT circuits) and linear_phase for (CNOT-Phase) circuits:

 |--- linear
    |--- depth_lnn (kms)
    |--- pmh
 |--- linear_phase
    |--- graysynth
    |--- cz_depth_lnn
    |--- cz_cx_depth_lnn (planned)
ShellyGarion commented 1 year ago

Should we split all the existing algorithms in qiskit/quantum_info_synthesis between su2 and su4 ?

|--- su2
    |--- OneQubitEulerDecomposer
    |--- Quaternion 
 |--- su4
    |--- TwoQubitBasisDecomposer
    |--- XXDecomposer
    |--- ion_decompose
    |--- local
prakharb10 commented 11 months ago

Hi. The first step (moving code and deprecation) looks straightforward. Are contributions welcome on this?

ShellyGarion commented 11 months ago

Thanks @prakharb10 - your contribution is very welcome and I've assigned you to this issue. Please follow Qiskit deprecation guidelines: https://qiskit.org/documentation/deprecation_policy.html