Skip to content

Commit 98e5024

Browse files
tanujkhattarrht
authored andcommitted
Deprecate MergeNQubitGates optimizer (quantumlib#5653)
Part of quantumlib#5028
1 parent 2f083f6 commit 98e5024

File tree

2 files changed

+13
-12
lines changed

2 files changed

+13
-12
lines changed

cirq-core/cirq/contrib/quimb/Contract-a-Grid-Circuit.ipynb

+2-2
Original file line numberDiff line numberDiff line change
@@ -206,8 +206,8 @@
206206
"metadata": {},
207207
"outputs": [],
208208
"source": [
209-
"ccq.MergeNQubitGates(n_qubits=2).optimize_circuit(compressed_c)\n",
210-
"ccq.MergeNQubitGates(n_qubits=1).optimize_circuit(compressed_c)\n",
209+
"compressed_c= cirq.merge_k_qubit_unitaries(compressed_c, k=2)\n",
210+
"compressed_c = cirq.merge_k_qubit_unitaries(compressed_c, k=1)\n",
211211
"\n",
212212
"compressed_c = cirq.drop_negligible_operations(compressed_c, atol=1e-6)\n",
213213
"compressed_c = cirq.drop_empty_moments(compressed_c)\n",

cirq-core/cirq/contrib/quimb/grid_circuits.py

+11-10
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ def _interaction(
8989
)
9090

9191

92+
@cirq._compat.deprecated_class(deadline='v0.16', fix="Use cirq.merge_k_qubit_unitaries")
9293
class MergeNQubitGates(cirq.PointOptimizer):
9394
"""Optimizes runs of adjacent unitary n-qubit operations."""
9495

@@ -131,14 +132,14 @@ def simplify_expectation_value_circuit(circuit_sand: cirq.Circuit):
131132
things for you.
132133
"""
133134
n_op = sum(1 for _ in circuit_sand.all_operations())
135+
circuit = circuit_sand.copy()
134136
while True:
135-
MergeNQubitGates(n_qubits=1).optimize_circuit(circuit_sand)
136-
circuit_sand = cirq.drop_negligible_operations(circuit_sand, atol=1e-6)
137-
MergeNQubitGates(n_qubits=2).optimize_circuit(circuit_sand)
138-
circuit_sand = cirq.drop_empty_moments(circuit_sand)
139-
new_n_op = sum(1 for _ in circuit_sand.all_operations())
140-
141-
if new_n_op < n_op:
142-
n_op = new_n_op
143-
else:
144-
return
137+
circuit = cirq.merge_k_qubit_unitaries(circuit, k=1)
138+
circuit = cirq.drop_negligible_operations(circuit, atol=1e-6)
139+
circuit = cirq.merge_k_qubit_unitaries(circuit, k=2)
140+
circuit = cirq.drop_empty_moments(circuit)
141+
new_n_op = sum(1 for _ in circuit.all_operations())
142+
if new_n_op >= n_op:
143+
break
144+
n_op = new_n_op
145+
circuit_sand._moments = circuit._moments

0 commit comments

Comments
 (0)