From d3a5160b26f9c60ebf013be3c00d22e9626235f6 Mon Sep 17 00:00:00 2001 From: Tanuj Khattar Date: Wed, 29 Jun 2022 12:06:15 -0700 Subject: [PATCH 1/2] Remove stale TODO --- cirq-core/cirq/contrib/paulistring/optimize_test.py | 1 - 1 file changed, 1 deletion(-) diff --git a/cirq-core/cirq/contrib/paulistring/optimize_test.py b/cirq-core/cirq/contrib/paulistring/optimize_test.py index 7fe17a1aaa6..aacbcaba95c 100644 --- a/cirq-core/cirq/contrib/paulistring/optimize_test.py +++ b/cirq-core/cirq/contrib/paulistring/optimize_test.py @@ -50,7 +50,6 @@ def test_optimize(): cirq.testing.assert_allclose_up_to_global_phase(c_orig.unitary(), c_opt.unitary(), atol=1e-7) - # TODO(#5546) Fix '[Z]^1' (should be 'Z') cirq.testing.assert_has_diagram( c_opt, """ From fe04316986d12600d6e1013e7369ccff5177cd83 Mon Sep 17 00:00:00 2001 From: Tanuj Khattar Date: Wed, 29 Jun 2022 17:38:20 -0700 Subject: [PATCH 2/2] Remove SwapPermutationReplacer --- .../contrib/quantum_volume/quantum_volume.py | 30 +++++++------------ 1 file changed, 10 insertions(+), 20 deletions(-) diff --git a/cirq-core/cirq/contrib/quantum_volume/quantum_volume.py b/cirq-core/cirq/contrib/quantum_volume/quantum_volume.py index 9dd947727e5..c460290433d 100644 --- a/cirq-core/cirq/contrib/quantum_volume/quantum_volume.py +++ b/cirq-core/cirq/contrib/quantum_volume/quantum_volume.py @@ -197,24 +197,6 @@ def process_results( return data -class SwapPermutationReplacer(cirq.PointOptimizer): - """Replaces SwapPermutationGates with their underlying implementation - gate.""" - - def __init__(self): - super().__init__() - - def optimization_at( - self, circuit: cirq.Circuit, index: int, op: cirq.Operation - ) -> Optional[cirq.PointOptimizationSummary]: - if isinstance(op.gate, cirq.contrib.acquaintance.SwapPermutationGate): - new_ops = op.gate.swap_gate.on(*op.qubits) - return cirq.PointOptimizationSummary( - clear_span=1, clear_qubits=op.qubits, new_operations=new_ops - ) - return None # Don't make changes to other gates. - - def compile_circuit( circuit: cirq.Circuit, *, @@ -296,7 +278,15 @@ def compile_circuit( mapping = swap_networks[0].final_mapping() # Replace the PermutationGates with regular gates, so we don't proliferate # the routing implementation details to the compiler and the device itself. - SwapPermutationReplacer().optimize_circuit(routed_circuit) + + def replace_swap_permutation_gate(op: 'cirq.Operation', _): + if isinstance(op.gate, cirq.contrib.acquaintance.SwapPermutationGate): + return [op.gate.swap_gate.on(*op.qubits)] + return op + + routed_circuit = cirq.map_operations_and_unroll( + routed_circuit, map_func=replace_swap_permutation_gate + ) if not compiler: return CompilationResult(circuit=routed_circuit, mapping=mapping, parity_map=parity_map) @@ -307,7 +297,7 @@ def compile_circuit( # as well, we allow this to be passed in. This compiler is not allowed to # change the order of the qubits. return CompilationResult( - circuit=compiler(swap_networks[0].circuit), mapping=mapping, parity_map=parity_map + circuit=compiler(routed_circuit), mapping=mapping, parity_map=parity_map )