Skip to content

Commit 6b225ad

Browse files
authored
Deprecate random circuits in experiments (quantumlib#5334)
* Deprecate random circuits in experiments - Moved to ReCirq and can now remove them in Cirq. - Fix MPS simulator tests to use random_circuits. Fixes: quantumlib#3327
1 parent 461ab04 commit 6b225ad

File tree

3 files changed

+43
-52
lines changed

3 files changed

+43
-52
lines changed

cirq/contrib/quimb/mps_simulator_test.py

Lines changed: 5 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88

99
import cirq
1010
import cirq.contrib.quimb as ccq
11-
import cirq.experiments.google_v2_supremacy_circuit as supremacy_v2
1211
import cirq.testing
1312
from cirq import value
1413

@@ -353,17 +352,17 @@ def test_state_equal():
353352
assert state1a != state1b
354353

355354

356-
def test_supremacy_equal_more_rows():
357-
circuit = supremacy_v2.generate_boixo_2018_supremacy_circuits_v2_grid(
358-
n_rows=3, n_cols=2, cz_depth=3, seed=0
355+
def test_random_circuits_equal_more_rows():
356+
circuit = cirq.testing.random_circuit(
357+
qubits=cirq.GridQubit.rect(3, 2), n_moments=6, op_density=1.0
359358
)
360359
qubits = circuit.all_qubits()
361360
assert_same_output_as_dense(circuit, qubits)
362361

363362

364363
def test_supremacy_equal_more_cols():
365-
circuit = supremacy_v2.generate_boixo_2018_supremacy_circuits_v2_grid(
366-
n_rows=2, n_cols=3, cz_depth=3, seed=0
364+
circuit = cirq.testing.random_circuit(
365+
qubits=cirq.GridQubit.rect(2, 3), n_moments=6, op_density=1.0
367366
)
368367
qubits = circuit.all_qubits()
369368
assert_same_output_as_dense(circuit, qubits)
@@ -380,39 +379,6 @@ def test_tensor_index_names():
380379
assert state.mu_str(3, 0) == "mu_0_3"
381380

382381

383-
def test_supremacy_big():
384-
circuit = supremacy_v2.generate_boixo_2018_supremacy_circuits_v2_grid(
385-
n_rows=7, n_cols=7, cz_depth=6, seed=0
386-
)
387-
qubit_order = circuit.all_qubits()
388-
q0 = next(iter(qubit_order))
389-
circuit.append(cirq.measure(q0))
390-
391-
mps_simulator_1 = ccq.mps_simulator.MPSSimulator(
392-
simulation_options=ccq.mps_simulator.MPSOptions(cutoff=5e-5)
393-
)
394-
result_1 = mps_simulator_1.simulate(circuit, qubit_order=qubit_order, initial_state=0)
395-
396-
assert result_1.final_state.estimation_stats() == {
397-
'estimated_fidelity': 0.997,
398-
'memory_bytes': 11008,
399-
'num_coefs_used': 688,
400-
}
401-
402-
mps_simulator_2 = ccq.mps_simulator.MPSSimulator(
403-
simulation_options=ccq.mps_simulator.MPSOptions(
404-
method='isvd', max_bond=1, cutoff_mode='sum2'
405-
)
406-
)
407-
result_2 = mps_simulator_2.simulate(circuit, qubit_order=qubit_order, initial_state=0)
408-
409-
assert result_2.final_state.estimation_stats() == {
410-
'estimated_fidelity': 1.0,
411-
'memory_bytes': 1568,
412-
'num_coefs_used': 98,
413-
}
414-
415-
416382
def test_simulate_moment_steps_sample():
417383
q0, q1 = cirq.LineQubit.range(2)
418384
circuit = cirq.Circuit(cirq.H(q0), cirq.CNOT(q0, q1))

cirq/experiments/google_v2_supremacy_circuit.py

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,15 @@
1616
from typing import Callable, Iterable, TypeVar, cast, Sequence
1717

1818
from cirq.circuits import InsertStrategy
19-
from cirq import circuits, devices, ops
19+
from cirq import _compat, circuits, devices, ops
2020

2121

22+
@_compat.deprecated(
23+
deadline='v0.16',
24+
fix=(
25+
'Install ReCirq and use ' 'recirq.beyond_classical.generate_boixo_2018_beyond_classical_v2'
26+
),
27+
)
2228
def generate_boixo_2018_supremacy_circuits_v2(
2329
qubits: Iterable[devices.GridQubit], cz_depth: int, seed: int
2430
) -> circuits.Circuit:
@@ -81,6 +87,13 @@ def generate_boixo_2018_supremacy_circuits_v2(
8187
return circuit
8288

8389

90+
@_compat.deprecated(
91+
deadline='v0.16',
92+
fix=(
93+
'Install ReCirq and use '
94+
'recirq.beyond_classical.generate_boixo_2018_beyond_classical_v2_grid'
95+
),
96+
)
8497
def generate_boixo_2018_supremacy_circuits_v2_grid(
8598
n_rows: int, n_cols: int, cz_depth: int, seed: int
8699
) -> circuits.Circuit:
@@ -183,6 +196,13 @@ def generate_boixo_2018_supremacy_circuits_v2_grid(
183196
)
184197

185198

199+
@_compat.deprecated(
200+
deadline='v0.16',
201+
fix=(
202+
'Install ReCirq and use '
203+
'recirq.beyond_classical.generate_boixo_2018_beyond_classical_v2_bristlecone'
204+
),
205+
)
186206
def generate_boixo_2018_supremacy_circuits_v2_bristlecone(
187207
n_rows: int, cz_depth: int, seed: int
188208
) -> circuits.Circuit:

cirq/experiments/google_v2_supremacy_circuit_test.py

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,17 @@
1414

1515
import pytest
1616

17+
import cirq
1718
from cirq import GridQubit
1819
from cirq import ops
1920
import cirq.experiments.google_v2_supremacy_circuit as supremacy_v2
2021

2122

2223
def test_google_v2_supremacy_circuit():
23-
circuit = supremacy_v2.generate_boixo_2018_supremacy_circuits_v2_grid(
24-
n_rows=4, n_cols=5, cz_depth=9, seed=0
25-
)
24+
with cirq.testing.assert_deprecated('_beyond_classical_', deadline='v0.16', count=2):
25+
circuit = supremacy_v2.generate_boixo_2018_supremacy_circuits_v2_grid(
26+
n_rows=4, n_cols=5, cz_depth=9, seed=0
27+
)
2628
# We check that is exactly circuit inst_4x5_10_0
2729
# in github.com/sboixo/GRCS cz_v2
2830
assert len(circuit) == 11
@@ -47,9 +49,10 @@ def test_google_v2_supremacy_circuit():
4749
def test_google_v2_supremacy_bristlecone():
4850
pytest.importorskip("cirq_google")
4951
# Check instance consistency
50-
c = supremacy_v2.generate_boixo_2018_supremacy_circuits_v2_bristlecone(
51-
n_rows=11, cz_depth=8, seed=0
52-
)
52+
with cirq.testing.assert_deprecated('_beyond_classical_', deadline='v0.16', count=2):
53+
c = supremacy_v2.generate_boixo_2018_supremacy_circuits_v2_bristlecone(
54+
n_rows=11, cz_depth=8, seed=0
55+
)
5356
assert len(c) == 10
5457
assert len(c.all_qubits()) == 70
5558
assert len(list(c.findall_operations_with_gate_type(ops.CZPowGate))) == 119
@@ -59,9 +62,10 @@ def test_google_v2_supremacy_bristlecone():
5962
assert isinstance(c.operation_at(GridQubit(3, 2), 2).gate, ops.XPowGate)
6063
assert isinstance(c.operation_at(GridQubit(1, 6), 3).gate, ops.XPowGate)
6164
# test smaller subgraph
62-
c = supremacy_v2.generate_boixo_2018_supremacy_circuits_v2_bristlecone(
63-
n_rows=9, cz_depth=8, seed=0
64-
)
65+
with cirq.testing.assert_deprecated('_beyond_classical_', deadline='v0.16', count=2):
66+
c = supremacy_v2.generate_boixo_2018_supremacy_circuits_v2_bristlecone(
67+
n_rows=9, cz_depth=8, seed=0
68+
)
6569
qubits = list(c.all_qubits())
6670
qubits.sort()
6771
assert len(qubits) == 48
@@ -74,6 +78,7 @@ def test_google_v2_supremacy_bristlecone():
7478
def test_n_rows_less_than_2():
7579
pytest.importorskip("cirq_google")
7680
with pytest.raises(AssertionError):
77-
supremacy_v2.generate_boixo_2018_supremacy_circuits_v2_bristlecone(
78-
n_rows=1, cz_depth=0, seed=0
79-
)
81+
with cirq.testing.assert_deprecated('_beyond_classical_', deadline='v0.16'):
82+
supremacy_v2.generate_boixo_2018_supremacy_circuits_v2_bristlecone(
83+
n_rows=1, cz_depth=0, seed=0
84+
)

0 commit comments

Comments
 (0)