-
Notifications
You must be signed in to change notification settings - Fork 2.6k
Closed
Labels
bugSomething isn't workingSomething isn't workingmod: transpilerIssues and PRs related to TranspilerIssues and PRs related to Transpiler
Milestone
Description
Environment
- Qiskit version: 1.3.0rc1, main branch
- Python version: 3.12.7
- Operating system: 15.1
What is happening?
Transpilation with optimization level 2 and 3 result in a deeper circuit than optimization level 1.
The circuit of level 2 is deeper than that of level 1.
The circuit of level 3 is deeper than that of level 2.
This does not happen with Qiskit 1.2.4.
How can we reproduce the issue?
from qiskit import generate_preset_pass_manager, QuantumCircuit
qc = QuantumCircuit(2)
qc.cz(0, 1)
qc.sx([0, 1])
qc.cz(0, 1)
for level in [1, 2, 3]:
pm = generate_preset_pass_manager(optimization_level=level, basis_gates=["rz", "rzz", "sx", "x", "rx"])
qc2 = pm.run(qc)
print('optimization level', level)
print(qc2)
print()
# 1.2.4
optimization level 1
global phase: π
┌─────────┐ ┌─────────┐┌─────────┐
q_0: ┤ Rz(π/2) ├─■─────────┤ Rx(π/2) ├┤ Rz(π/2) ├─■─────────
├─────────┤ │ZZ(-π/2) ├─────────┤├─────────┤ │ZZ(-π/2)
q_1: ┤ Rz(π/2) ├─■─────────┤ Rx(π/2) ├┤ Rz(π/2) ├─■─────────
└─────────┘ └─────────┘└─────────┘
optimization level 2
global phase: π
┌─────────┐ ┌─────────┐┌─────────┐
q_0: ┤ Rz(π/2) ├─■─────────┤ Rx(π/2) ├┤ Rz(π/2) ├─■─────────
├─────────┤ │ZZ(-π/2) ├─────────┤├─────────┤ │ZZ(-π/2)
q_1: ┤ Rz(π/2) ├─■─────────┤ Rx(π/2) ├┤ Rz(π/2) ├─■─────────
└─────────┘ └─────────┘└─────────┘
optimization level 3
global phase: π
┌─────────┐ ┌─────────┐┌─────────┐
q_0: ┤ Rz(π/2) ├─■─────────┤ Rx(π/2) ├┤ Rz(π/2) ├─■─────────
├─────────┤ │ZZ(-π/2) ├─────────┤├─────────┤ │ZZ(-π/2)
q_1: ┤ Rz(π/2) ├─■─────────┤ Rx(π/2) ├┤ Rz(π/2) ├─■─────────
└─────────┘ └─────────┘└─────────┘
# 1.3.0rc1 and main branch
optimization level 1
global phase: 7π/4
┌──────────┐ ┌────┐ ┌──────────┐
q_0: ─■────────┤ Rz(-π/2) ├───┤ √X ├───■────────┤ Rz(-π/2) ├
│ZZ(π/2) ├──────────┤┌──┴────┴─┐ │ZZ(π/2) ├──────────┤
q_1: ─■────────┤ Rz(-π/2) ├┤ Rx(π/2) ├─■────────┤ Rz(-π/2) ├
└──────────┘└─────────┘ └──────────┘
optimization level 2
global phase: 3π/2
┌──────────┐ ┌─────────┐ ┌─────────┐ ┌──────────┐ ┌─────────┐┌─────────┐
q_0: ──────────────────────────────────────■─────────┤ Rz(-π/2) ├─┤ Rx(π/2) ├─┤ Rz(π/2) ├───■──────────┤ Rz(-π/2) ├──┤ Rx(π/2) ├┤ Rz(π/2) ├
┌──────────┐┌─────────┐┌────────────┐ │ZZ(π/2) ┌┴──────────┴┐├─────────┤┌┴─────────┴─┐ │ZZ(π/2) ┌─┴──────────┴─┐└┬───────┬┘└─────────┘
q_1: ┤ Rz(-π/2) ├┤ Rx(π/2) ├┤ Rz(1.6719) ├─■────────┤ Rz(1.4697) ├┤ Rx(π/2) ├┤ Rz(1.6719) ├─■────────┤ Rz(-0.10111) ├─┤ Rx(π) ├────────────
└──────────┘└─────────┘└────────────┘ └────────────┘└─────────┘└────────────┘ └──────────────┘ └───────┘
optimization level 3
global phase: π
┌─────────────┐┌────┐ ┌───────┐ ┌────┐┌────────────┐ ┌──────────┐┌─────────┐ ┌────┐ ┌──────────┐»
q_0: ┤ Rz(-1.9513) ├┤ √X ├──┤ Rz(π) ├───┤ √X ├┤ Rz(11.376) ├─────────────────────────────■────────┤ Rz(-π/2) ├┤ Rz(π/2) ├───┤ √X ├──┤ Rz(3π/2) ├»
└─┬─────────┬─┘├────┤┌─┴───────┴──┐├────┤└┬──────────┬┘┌─────────┐┌────┐┌─────────┐ │ZZ(π/2) ├─────────┬┘└──┬────┬─┘┌──┴────┴─┐├──────────┤»
q_1: ──┤ Rz(π/2) ├──┤ √X ├┤ Rz(3.2427) ├┤ √X ├─┤ Rz(5π/2) ├─┤ Rz(π/2) ├┤ √X ├┤ Rz(π/2) ├─■────────┤ Rz(π/2) ├────┤ √X ├──┤ Rz(π/2) ├┤ Rx(-π/2) ├»
└─────────┘ └────┘└────────────┘└────┘ └──────────┘ └─────────┘└────┘└─────────┘ └─────────┘ └────┘ └─────────┘└──────────┘»
« ┌────┐ ┌────────┐ ┌──────────┐┌─────────┐ ┌────┐ ┌──────────┐»
«q_0: ─────┤ √X ├────┤ Rz(3π) ├───────────────────────────────────────────────────────────────■────────┤ Rz(-π/2) ├┤ Rz(π/2) ├───┤ √X ├──┤ Rz(3π/2) ├»
« ┌────┴────┴───┐└─┬────┬─┘┌────────────┐┌────┐┌────────────┐┌─────────┐┌────┐┌─────────┐ │ZZ(π/2) ├─────────┬┘└──┬────┬─┘┌──┴────┴─┐├──────────┤»
«q_1: ┤ Rz(-3.1314) ├──┤ √X ├──┤ Rz(4.6118) ├┤ √X ├┤ Rz(10.894) ├┤ Rz(π/2) ├┤ √X ├┤ Rz(π/2) ├─■────────┤ Rz(π/2) ├────┤ √X ├──┤ Rz(π/2) ├┤ Rx(-π/2) ├»
« └─────────────┘ └────┘ └────────────┘└────┘└────────────┘└─────────┘└────┘└─────────┘ └─────────┘ └────┘ └─────────┘└──────────┘»
« ┌────┐ ┌────────┐
«q_0: ──┤ √X ├──┤ Rz(2π) ├────────────────────────────────
« ┌─┴────┴─┐└─┬────┬─┘┌──────────┐┌────┐┌────────────┐
«q_1: ┤ Rz(-π) ├──┤ √X ├──┤ Rz(3π/2) ├┤ √X ├┤ Rz(7.7529) ├
« └────────┘ └────┘ └──────────┘└────┘└────────────┘
What should happen?
Circuits of level 2 and 3 should be the same size as that of level 1 to be compatible with 1.2.4.
Any suggestions?
No response
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't workingmod: transpilerIssues and PRs related to TranspilerIssues and PRs related to Transpiler