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.3k stars 2.37k forks source link

rethink unitary synthesis plugin #7986

Open ajavadia opened 2 years ago

ajavadia commented 2 years ago

What should we add?

Currently there is a unitary_synthesis_method argument to transpile() which switches the decomposition method when unitaries are encountered in the circuit.

But I think we need to split 1q vs. 2q vs. generic unitary synthesis. This may lead to too many args. So I'm fine dropping the arg and allowing alternative way to specify desired methods, as I explain below.

But basically 1q and 2q and generic unitary synthesis have been studied separately and they have very different methods. In qiskit currently:

Generally decompositions of higher-order unitaries use smaller-unitary synthesis methods within them, so setting them separately has the advantage of signaling which method should be internally used when recursing on unitaries during synthesis.

In terms of how the user can select between these, I think there are 3 options (not necessarily mutually exclusive).

[^1]: we currently refer to this as isometry but really the name should be ccd (column-by-colum decomposition). The isometry paper this is based on has two methods (ccd and csd (cosine-sine decomposition)) and only the first one is implemented in qiskit).

SamD-1998 commented 5 months ago

Hi, I'm interested in working on this. Can you assign it to me?