Skip to content

Commit

Permalink
Ignore operations on more than 10 qubits in drop_negligible_operation…
Browse files Browse the repository at this point in the history
…s transformer (quantumlib#5386)

* Ignore operations on more than 10 qubits in drop_negligible_operations transformer

* Assert same circuits

Co-authored-by: Cirq Bot <craiggidney+github+cirqbot@google.com>
  • Loading branch information
2 people authored and rht committed May 1, 2023
1 parent d41757a commit 40ca48e
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 1 deletion.
6 changes: 5 additions & 1 deletion cirq-core/cirq/transformers/drop_negligible_operations.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,11 @@ def drop_negligible_operations(

def map_func(op: 'cirq.Operation', _: int) -> 'cirq.OP_TREE':
return (
op if protocols.is_measurement(op) or protocols.trace_distance_bound(op) > atol else []
op
if protocols.num_qubits(op) > 10
or protocols.is_measurement(op)
or protocols.trace_distance_bound(op) > atol
else []
)

return transformer_primitives.map_operations(
Expand Down
13 changes: 13 additions & 0 deletions cirq-core/cirq/transformers/drop_negligible_operations_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -94,3 +94,16 @@ def test_recursively_runs_inside_circuit_ops_deep():
cirq.testing.assert_same_circuits(
cirq.drop_negligible_operations(c_orig, context=context, atol=0.001), c_expected
)


def test_ignores_large_ops():
qnum = 20
qubits = cirq.LineQubit.range(qnum)
subcircuit = cirq.FrozenCircuit(cirq.X.on_each(*qubits))
circuit = cirq.Circuit(
cirq.CircuitOperation(subcircuit).repeat(10), cirq.measure(*qubits, key='out')
)
cirq.testing.assert_same_circuits(
circuit,
cirq.drop_negligible_operations(circuit, context=cirq.TransformerContext(deep=True)),
)

0 comments on commit 40ca48e

Please sign in to comment.