Skip to content
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

make commutative_cancellation basis aware #5672

Merged
merged 20 commits into from
Mar 3, 2021
Merged

Conversation

ewinston
Copy link
Contributor

@ewinston ewinston commented Jan 21, 2021

Summary

This makes optionally possible to tell the commutative_cancellation pass about the target basis. Currently the pass automatically replaces gates which commute with Z with U1. This change makes it possible to optionally specify a target basis.

This pr also updates the pass to preserve global phase.

Details and comments

Functionally the target basis will be the union of the gates in the circuit with the target basis, prioritizing gates in the circuit. If the effective basis does not include a variable z_rotation gate no commutative cancellation will occur, therefore one should now be explicit about target basis when using this pass.

@ewinston ewinston requested a review from a team as a code owner January 21, 2021 19:48
@kdk kdk added the stable backport potential The bug might be minimal and/or import enough to be port to stable label Feb 18, 2021
Co-authored-by: Kevin Krsulich <kevin@krsulich.net>
@kdk kdk added the Changelog: Bugfix Include in the "Fixed" section of the changelog label Mar 2, 2021
@kdk kdk added this to the 0.17 milestone Mar 2, 2021
kdk
kdk previously approved these changes Mar 2, 2021
@kdk kdk added the automerge label Mar 2, 2021
@mergify mergify bot merged commit 0d85759 into Qiskit:master Mar 3, 2021
mergify bot pushed a commit that referenced this pull request Mar 3, 2021
* fixes #5644

* move change to commutation analysis to new pr.

* Update qiskit/transpiler/passes/optimization/commutative_cancellation.py

Co-authored-by: Kevin Krsulich <kevin@krsulich.net>

* Update qiskit/transpiler/passes/optimization/commutative_cancellation.py

Co-authored-by: Kevin Krsulich <kevin@krsulich.net>

* Update qiskit/transpiler/passes/optimization/commutative_cancellation.py

Co-authored-by: Kevin Krsulich <kevin@krsulich.net>

* Update qiskit/transpiler/passes/optimization/commutative_cancellation.py

Co-authored-by: Kevin Krsulich <kevin@krsulich.net>

* check global phase

* minor fix

* preserve global phase in commutative_cancellation

* Update test/python/transpiler/test_commutative_cancellation.py

Co-authored-by: Kevin Krsulich <kevin@krsulich.net>

* add blank line

* add release note

Co-authored-by: Kevin Krsulich <kevin@krsulich.net>
Co-authored-by: Luciano Bello <bel@zurich.ibm.com>
Co-authored-by: Kevin Krsulich <kevin.krsulich@ibm.com>
(cherry picked from commit 0d85759)

# Conflicts:
#	qiskit/transpiler/passes/optimization/commutative_cancellation.py
#	qiskit/transpiler/preset_passmanagers/level2.py
mergify bot added a commit that referenced this pull request Mar 4, 2021
* make commutative_cancellation basis aware (#5672)

* fixes #5644

* move change to commutation analysis to new pr.

* Update qiskit/transpiler/passes/optimization/commutative_cancellation.py

Co-authored-by: Kevin Krsulich <kevin@krsulich.net>

* Update qiskit/transpiler/passes/optimization/commutative_cancellation.py

Co-authored-by: Kevin Krsulich <kevin@krsulich.net>

* Update qiskit/transpiler/passes/optimization/commutative_cancellation.py

Co-authored-by: Kevin Krsulich <kevin@krsulich.net>

* Update qiskit/transpiler/passes/optimization/commutative_cancellation.py

Co-authored-by: Kevin Krsulich <kevin@krsulich.net>

* check global phase

* minor fix

* preserve global phase in commutative_cancellation

* Update test/python/transpiler/test_commutative_cancellation.py

Co-authored-by: Kevin Krsulich <kevin@krsulich.net>

* add blank line

* add release note

Co-authored-by: Kevin Krsulich <kevin@krsulich.net>
Co-authored-by: Luciano Bello <bel@zurich.ibm.com>
Co-authored-by: Kevin Krsulich <kevin.krsulich@ibm.com>
(cherry picked from commit 0d85759)

# Conflicts:
#	qiskit/transpiler/passes/optimization/commutative_cancellation.py
#	qiskit/transpiler/preset_passmanagers/level2.py

* Fix merge conflicts

* Fix typo

Co-authored-by: ewinston <ewinston@us.ibm.com>
Co-authored-by: Matthew Treinish <mtreinish@kortar.org>
Co-authored-by: Kevin Krsulich <kevin.krsulich@ibm.com>
@ewinston ewinston deleted the issue/5644 branch April 8, 2022 14:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Changelog: Bugfix Include in the "Fixed" section of the changelog stable backport potential The bug might be minimal and/or import enough to be port to stable
Projects
None yet
3 participants