Open ShellyGarion opened 3 months ago
Regarding naming: Since there could be multiple methods that use no ancillas, would it make sense to use unique names for the methods, like in e.g. the linear function synthesis?
Regarding MCRX/Y/Z classes: I'd say no, since that opens the door to having a class for each multi-controlled gate. Instead I think we should just have AnnotatedOperation
s that the high-level synthesis calls the correct synthesis function for.
Since there could be multiple methods that use no ancillas, would it make sense to use unique names for the methods, like in e.g. the linear function synthesis?
Yes. we could add the initials of the author names to the synthesis methods (also relevant for methods that use ancillas)
Regarding the mcrx
, mcry
and mcrz
methods (copying the relevant paragraph of #12048):
ParameterValueType
(not only float
).MCXGate
or mcx
method).rx
, ry
and rz
gates, should call the relevant synthesis methods of mcrx
, mcry
and mcrz
.
What should we add?
Currently the synthesis methods of the multi-controlled gates are part of their definition. We would like to have a single
MCXGate()
class, and an HLS plugin that checks the number of clean or dirty ancillas, and chooses the optimal synthesis method (see https://github.com/Qiskit/qiskit/pull/12729).The synthesis library will therefore include a new section Multi-controlled gates synthesis which will include the following functions:
synth_mcx_no_ancillas
- the current definition of theMCXGate
synth_mcx_one_clean_ancilla
- the current definition of theMCXRecursiveGate
synth_mcx_n_dirty_ancillas
- the current definition of theMCVChainGate
synth_mcx_graysynth_no_ancillas
- the current definition of theMCXGrayCode
(and the internalMCU1Gate
). Note that the number of CX gates grows exponentially in the number of qubits.synth_mcp_no_ancillas
- the current definition if theMCPhaseGate
synth_mcp_graysynth_no_ancillas
- the current definition of theMCXGrayCode
(and the internalMCU1Gate
). Only for parametrized gates. Note that the number of CX gates grows exponentially in the number of qubits.synth_mcmt_no_ancillas
- the current definition of theMCMTGate
synth_mcmt_n_clean_ancillas
- the current definition of theMCMTVChainGate
synth_mcrx_no_ancillas
- the current synthesis of the mcrx methodsynth_mcry_no_ancillas
- the current synthesis of the mcrx methodsynth_mcrz_no_ancillas
- the current synthesis of the mcrz methodThe following classes will be deprecated in Qiskit 2.0:
MCMTVChain
MCXGrayCode
MCXRecursive
MCXVChain
The following classes will remain in the circuit library (including synthesis methods with ancillas when applicable):
MCXGate
MCMTGate
MCPhaseGate
Question: Should we add the gates MCRX, MCRY and MCRZ to the circuit library? See the discussion in https://github.com/Qiskit/qiskit/issues/12048