-
Notifications
You must be signed in to change notification settings - Fork 2.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
EchoRZXWeylDecomposition Transpiler Pass #6784
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looking good. We can simplify the TwoQubitWeylEchoRZX
a bit by giving it only one argument instead of giving it two arguments that are used to infer one argument. See suggestions.
qiskit/transpiler/passes/optimization/echo_rzx_weyl_decomposition.py
Outdated
Show resolved
Hide resolved
qiskit/transpiler/passes/optimization/echo_rzx_weyl_decomposition.py
Outdated
Show resolved
Hide resolved
Co-authored-by: Daniel Egger <[email protected]>
…ion.py Co-authored-by: Daniel Egger <[email protected]>
…ion.py Co-authored-by: Daniel Egger <[email protected]>
…ion.py Co-authored-by: Daniel Egger <[email protected]>
Co-authored-by: Daniel Egger <[email protected]>
Co-authored-by: Daniel Egger <[email protected]>
Co-authored-by: Daniel Egger <[email protected]>
Co-authored-by: Daniel Egger <[email protected]>
Co-authored-by: Daniel Egger <[email protected]>
Co-authored-by: Daniel Egger <[email protected]>
I left a few comments inline. I didn't get a chance to review the whole thing will write more next week. |
Co-authored-by: Lev Bishop <[email protected]>
Co-authored-by: Lev Bishop <[email protected]>
Co-authored-by: Lev Bishop <[email protected]>
Co-authored-by: Lev Bishop <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I feel pretty OK about this PR. I do think it should be integrated into UnitarySynthesis (even better: into the plug-in interface from #6124), but that's a fair bit of work, and I don't think it's a requirement that that be accomplished before merge.
qiskit/transpiler/passes/optimization/echo_rzx_weyl_decomposition.py
Outdated
Show resolved
Hide resolved
qiskit/transpiler/passes/optimization/echo_rzx_weyl_decomposition.py
Outdated
Show resolved
Hide resolved
qiskit/transpiler/passes/optimization/echo_rzx_weyl_decomposition.py
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM.
Summary
This PR implements a new transpiler pass
EchoRZXWeylDecomposition
that, in combination with other transpiler passes, allows users to transpile circuits to RZX gate-based and pulse-efficient circuits. The circuits typically have shorter pulse schedule durations and higher fidelities in comparison to the standard digital CNOT-based transpired circuits (see Reference https://arxiv.org/pdf/2105.01063.pdf).First, all consecutive two-qubit operations in a circuit need to be consolidated. The new transpiler pass
EchoRZXWeylDecomposition
then leverages Cartan's decomposition of arbitrary two-qubit gates and decomposes the two-qubit gates in terms of echoed RZX gates. Lastly, calibrations can be added to the RZX gates by leveraging theRZXCalibrationBuilderNoEcho
, see PR #6300. Most importantly, no additional calibration is needed.Details and comments
The output of this self-contained code should illustrate the transpilation of a randomly chosen circuit to an RZX gate-based, pulse-efficient circuit.
Output (I removed the ancilla qubits for better readability):