-
Notifications
You must be signed in to change notification settings - Fork 2.6k
Open
Labels
bugSomething isn't workingSomething isn't working
Description
Environment
- Qiskit version: 1.2.4 and 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 that of optimization level 1 for a case with consecutive RZZ gates.
How can we reproduce the issue?
from qiskit import generate_preset_pass_manager, QuantumCircuit
qc = QuantumCircuit(2)
qc.rzz(0.1, 0, 1)
qc.rzz(0.2, 0, 1)
for level in [0, 1, 2, 3]:
pm = generate_preset_pass_manager(optimization_level=level, basis_gates=["rz", "cx", "sx","x"])
qc2 = pm.run(qc)
print('optimization level', level)
print(qc2)
print()
output
# 1.2.4
optimization level 0
q_0: ──■───────────────■────■───────────────■──
┌─┴─┐┌─────────┐┌─┴─┐┌─┴─┐┌─────────┐┌─┴─┐
q_1: ┤ X ├┤ Rz(0.1) ├┤ X ├┤ X ├┤ Rz(0.2) ├┤ X ├
└───┘└─────────┘└───┘└───┘└─────────┘└───┘
optimization level 1
q_0: ──■───────────────■──
┌─┴─┐┌─────────┐┌─┴─┐
q_1: ┤ X ├┤ Rz(0.3) ├┤ X ├
└───┘└─────────┘└───┘
optimization level 2
global phase: 0
┌─────────────┐ ┌───┐ ┌───┐┌────────────┐
q_0: ┤ Rz(-3.1374) ├──■─────┤ X ├─────■──┤ X ├┤ Rz(3.1374) ├
└─┬──────────┬┘┌─┴─┐┌──┴───┴──┐┌─┴─┐├───┤└┬─────────┬─┘
q_1: ──┤ Rz(-π/2) ├─┤ X ├┤ Rz(0.3) ├┤ X ├┤ X ├─┤ Rz(π/2) ├──
└──────────┘ └───┘└─────────┘└───┘└───┘ └─────────┘
optimization level 3
global phase: 0
┌─────────────┐ ┌───┐ ┌───┐┌────────────┐
q_0: ┤ Rz(-3.1374) ├──■─────┤ X ├─────■──┤ X ├┤ Rz(3.1374) ├
└─┬──────────┬┘┌─┴─┐┌──┴───┴──┐┌─┴─┐├───┤└┬─────────┬─┘
q_1: ──┤ Rz(-π/2) ├─┤ X ├┤ Rz(0.3) ├┤ X ├┤ X ├─┤ Rz(π/2) ├──
└──────────┘ └───┘└─────────┘└───┘└───┘ └─────────┘
# main branch
optimization level 0
q_0: ──■───────────────■────■───────────────■──
┌─┴─┐┌─────────┐┌─┴─┐┌─┴─┐┌─────────┐┌─┴─┐
q_1: ┤ X ├┤ Rz(0.1) ├┤ X ├┤ X ├┤ Rz(0.2) ├┤ X ├
└───┘└─────────┘└───┘└───┘└─────────┘└───┘
optimization level 1
global phase: 2π
q_0: ──■───────────────■──
┌─┴─┐┌─────────┐┌─┴─┐
q_1: ┤ X ├┤ Rz(0.3) ├┤ X ├
└───┘└─────────┘└───┘
optimization level 2
┌─────────────┐ ┌───┐ ┌───┐┌────────────┐
q_0: ┤ Rz(-3.1374) ├──■─────┤ X ├─────■──┤ X ├┤ Rz(3.1374) ├
└─┬──────────┬┘┌─┴─┐┌──┴───┴──┐┌─┴─┐├───┤└┬─────────┬─┘
q_1: ──┤ Rz(-π/2) ├─┤ X ├┤ Rz(0.3) ├┤ X ├┤ X ├─┤ Rz(π/2) ├──
└──────────┘ └───┘└─────────┘└───┘└───┘ └─────────┘
optimization level 3
┌─────────────┐ ┌───┐ ┌───┐┌────────────┐
q_0: ┤ Rz(-3.1374) ├──■─────┤ X ├─────■──┤ X ├┤ Rz(3.1374) ├
└─┬──────────┬┘┌─┴─┐┌──┴───┴──┐┌─┴─┐├───┤└┬─────────┬─┘
q_1: ──┤ Rz(-π/2) ├─┤ X ├┤ Rz(0.3) ├┤ X ├┤ X ├─┤ Rz(π/2) ├──
└──────────┘ └───┘└─────────┘└───┘└───┘ └─────────┘
What should happen?
It would be nice to generate the circuit of optimization level 1
Any suggestions?
No response
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working