Skip to content

Commit ab0fbdb

Browse files
maffoorht
authored andcommitted
Deprecate gate_set parameter on engine classes. (quantumlib#5207)
Fixes quantumlib#4995 Review: @verult
1 parent dde0854 commit ab0fbdb

12 files changed

+93
-79
lines changed

cirq-google/cirq_google/calibration/workflow.py

+8-12
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@
4747
LocalXEBPhasedFSimCalibrationRequest,
4848
)
4949
from cirq_google.calibration.xeb_wrapper import run_local_xeb_calibration
50-
from cirq_google.engine import Engine, QuantumEngineSampler
50+
from cirq_google.engine import Engine, QuantumEngineSampler, util
5151
from cirq_google.serialization.serializer import Serializer
5252

5353
_CALIBRATION_IRRELEVANT_GATES = cirq.MeasurementGate, cirq.SingleQubitGate, cirq.WaitGate
@@ -744,7 +744,6 @@ def _run_calibrations_via_engine(
744744
calibration_requests: Sequence[PhasedFSimCalibrationRequest],
745745
engine: Engine,
746746
processor_id: str,
747-
gate_set: Serializer,
748747
max_layers_per_request: int = 1,
749748
progress_func: Optional[Callable[[int, int], None]] = None,
750749
):
@@ -763,7 +762,7 @@ def _run_calibrations_via_engine(
763762
]
764763

765764
for cal_layers in nested_calibration_layers:
766-
job = engine.run_calibration(cal_layers, processor_id=processor_id, gate_set=gate_set)
765+
job = engine.run_calibration(cal_layers, processor_id=processor_id)
767766
request_results = job.calibration_results()
768767
results += [
769768
calibration.parse_result(result, job)
@@ -787,6 +786,7 @@ def _run_local_calibrations_via_sampler(
787786
]
788787

789788

789+
@util.deprecated_gate_set_parameter
790790
def run_calibrations(
791791
calibrations: Sequence[PhasedFSimCalibrationRequest],
792792
sampler: Union[Engine, cirq.Sampler],
@@ -842,25 +842,21 @@ def run_calibrations(
842842
elif isinstance(sampler, QuantumEngineSampler):
843843
engine = sampler.engine
844844
(processor_id,) = sampler._processor_ids
845-
gate_set = sampler._gate_set
846845
else:
847846
engine = None
848847

849848
if engine is not None:
850849
if processor_id is None:
851-
raise ValueError('processor_id must be provided.')
852-
if gate_set is None:
853-
raise ValueError('gate_set must be provided.')
850+
raise ValueError('processor_id must be provided.') # coverage: ignore
854851

855852
if calibration_request_type == LocalXEBPhasedFSimCalibrationRequest:
856-
sampler = engine.get_sampler(processor_id=processor_id, gate_set=gate_set)
857-
return _run_local_calibrations_via_sampler(calibrations, sampler)
853+
engine_sampler = engine.get_sampler(processor_id=processor_id)
854+
return _run_local_calibrations_via_sampler(calibrations, engine_sampler)
858855

859856
return _run_calibrations_via_engine(
860857
calibrations,
861858
engine,
862859
processor_id,
863-
gate_set,
864860
max_layers_per_request,
865861
progress_func,
866862
)
@@ -1186,6 +1182,7 @@ def as_circuit(self) -> cirq.Circuit:
11861182
return cirq.Circuit(self.operations)
11871183

11881184

1185+
@util.deprecated_gate_set_parameter
11891186
def run_floquet_characterization_for_moments(
11901187
circuit: cirq.Circuit,
11911188
sampler: Union[Engine, cirq.Sampler],
@@ -1250,13 +1247,13 @@ def run_floquet_characterization_for_moments(
12501247
requests,
12511248
sampler,
12521249
processor_id,
1253-
gate_set,
12541250
max_layers_per_request=max_layers_per_request,
12551251
progress_func=progress_func,
12561252
)
12571253
return circuit_calibration, results
12581254

12591255

1256+
@util.deprecated_gate_set_parameter
12601257
def run_zeta_chi_gamma_compensation_for_moments(
12611258
circuit: cirq.Circuit,
12621259
sampler: Union[Engine, cirq.Sampler],
@@ -1325,7 +1322,6 @@ def run_zeta_chi_gamma_compensation_for_moments(
13251322
calibrations=requests,
13261323
sampler=sampler,
13271324
processor_id=processor_id,
1328-
gate_set=gate_set,
13291325
max_layers_per_request=max_layers_per_request,
13301326
progress_func=progress_func,
13311327
)

cirq-google/cirq_google/calibration/workflow_test.py

+5-10
Original file line numberDiff line numberDiff line change
@@ -1021,9 +1021,7 @@ def test_run_calibrations():
10211021
engine = mock.MagicMock(spec=cirq_google.Engine)
10221022
engine.run_calibration.return_value = job
10231023

1024-
sampler = cirq_google.QuantumEngineSampler(
1025-
engine=engine, processor_id='qproc', gate_set=cirq_google.FSIM_GATESET
1026-
)
1024+
sampler = cirq_google.QuantumEngineSampler(engine=engine, processor_id='qproc')
10271025

10281026
progress_calls = []
10291027

@@ -1127,9 +1125,7 @@ def test_run_characterization_with_engine():
11271125
def progress(step: int, steps: int) -> None:
11281126
progress_calls.append((step, steps))
11291127

1130-
actual = workflow.run_calibrations(
1131-
[request], engine, 'qproc', cirq_google.FSIM_GATESET, progress_func=progress
1132-
)
1128+
actual = workflow.run_calibrations([request], engine, 'qproc', progress_func=progress)
11331129

11341130
expected = [
11351131
PhasedFSimCalibrationResult(
@@ -1160,7 +1156,7 @@ def progress(step: int, steps: int) -> None:
11601156

11611157

11621158
def test_run_calibrations_empty():
1163-
assert workflow.run_calibrations([], None, 'qproc', cirq_google.FSIM_GATESET) == []
1159+
assert workflow.run_calibrations([], None, 'qproc') == []
11641160

11651161

11661162
def test_run_calibrations_fails_when_invalid_arguments():
@@ -1289,7 +1285,7 @@ def test_run_floquet_characterization_for_moments():
12891285
engine.run_calibration.return_value = job
12901286

12911287
circuit_with_calibration, requests = workflow.run_floquet_characterization_for_moments(
1292-
circuit, engine, 'qproc', cirq_google.FSIM_GATESET, options=options
1288+
circuit, engine, 'qproc', options=options
12931289
)
12941290

12951291
assert requests == [
@@ -1630,7 +1626,6 @@ def test_run_zeta_chi_gamma_calibration_for_moments() -> None:
16301626
circuit,
16311627
engine_simulator,
16321628
processor_id=None,
1633-
gate_set=cirq_google.FSIM_GATESET,
16341629
options=options,
16351630
)
16361631

@@ -1671,7 +1666,7 @@ def test_run_zeta_chi_gamma_calibration_for_moments_no_chi() -> None:
16711666
)
16721667

16731668
calibrated_circuit, *_ = workflow.run_zeta_chi_gamma_compensation_for_moments(
1674-
circuit, engine_simulator, processor_id=None, gate_set=cirq_google.SQRT_ISWAP_GATESET
1669+
circuit, engine_simulator, processor_id=None
16751670
)
16761671

16771672
assert cirq.allclose_up_to_global_phase(

cirq-google/cirq_google/engine/abstract_engine.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323

2424
import cirq
2525
from cirq_google.cloud import quantum
26-
from cirq_google.engine import abstract_job, abstract_program, abstract_processor
26+
from cirq_google.engine import abstract_job, abstract_program, abstract_processor, util
2727
from cirq_google.serialization import Serializer
2828

2929
VALID_DATE_TYPE = Union[datetime.datetime, datetime.date]
@@ -125,6 +125,7 @@ def get_processor(self, processor_id: str) -> abstract_processor.AbstractProcess
125125
"""
126126

127127
@abc.abstractmethod
128+
@util.deprecated_gate_set_parameter
128129
def get_sampler(
129130
self, processor_id: Union[str, List[str]], gate_set: Optional[Serializer] = None
130131
) -> cirq.Sampler:

cirq-google/cirq_google/engine/abstract_local_engine.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
from typing import Dict, List, Optional, Sequence, Set, Union, TYPE_CHECKING
1616

1717
import cirq
18+
from cirq_google.engine import util
1819
from cirq_google.engine.abstract_job import AbstractJob
1920
from cirq_google.engine.abstract_program import AbstractProgram
2021
from cirq_google.engine.abstract_local_processor import AbstractLocalProcessor
@@ -164,6 +165,7 @@ def get_processor(self, processor_id: str) -> AbstractLocalProcessor:
164165
"""
165166
return self._processors[processor_id]
166167

168+
@util.deprecated_gate_set_parameter
167169
def get_sampler(
168170
self, processor_id: Union[str, List[str]], gate_set: Optional[Serializer] = None
169171
) -> cirq.Sampler:
@@ -180,4 +182,4 @@ def get_sampler(
180182
"""
181183
if not isinstance(processor_id, str):
182184
raise ValueError(f'Invalid processor {processor_id}')
183-
return self._processors[processor_id].get_sampler(gate_set=gate_set)
185+
return self._processors[processor_id].get_sampler()

cirq-google/cirq_google/engine/abstract_processor.py

+6-1
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@
2626
import cirq
2727

2828
from cirq_google.api import v2
29-
from cirq_google.engine import calibration
3029
from cirq_google.cloud import quantum
30+
from cirq_google.engine import calibration, util
3131

3232
if TYPE_CHECKING:
3333
import cirq_google
@@ -53,6 +53,7 @@ class AbstractProcessor(abc.ABC):
5353
This is an abstract class. Inheritors should implement abstract methods.
5454
"""
5555

56+
@util.deprecated_gate_set_parameter
5657
def run(
5758
self,
5859
program: cirq.Circuit,
@@ -93,6 +94,7 @@ def run(
9394
"""
9495

9596
@abc.abstractmethod
97+
@util.deprecated_gate_set_parameter
9698
def run_sweep(
9799
self,
98100
program: cirq.Circuit,
@@ -136,6 +138,7 @@ def run_sweep(
136138
"""
137139

138140
@abc.abstractmethod
141+
@util.deprecated_gate_set_parameter
139142
def run_batch(
140143
self,
141144
programs: Sequence[cirq.AbstractCircuit],
@@ -190,6 +193,7 @@ def run_batch(
190193
"""
191194

192195
@abc.abstractmethod
196+
@util.deprecated_gate_set_parameter
193197
def run_calibration(
194198
self,
195199
layers: List['cirq_google.CalibrationLayer'],
@@ -236,6 +240,7 @@ def run_calibration(
236240
"""
237241

238242
@abc.abstractmethod
243+
@util.deprecated_gate_set_parameter
239244
def get_sampler(self, gate_set: Optional['serializer.Serializer'] = None) -> cirq.Sampler:
240245
"""Returns a sampler backed by the processor.
241246

cirq-google/cirq_google/engine/engine.py

+15-9
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,7 @@ def __init__(
208208
def __str__(self) -> str:
209209
return f'Engine(project_id={self.project_id!r})'
210210

211+
@util.deprecated_gate_set_parameter
211212
def run(
212213
self,
213214
program: cirq.AbstractCircuit,
@@ -216,7 +217,7 @@ def run(
216217
param_resolver: cirq.ParamResolver = cirq.ParamResolver({}),
217218
repetitions: int = 1,
218219
processor_ids: Sequence[str] = ('xmonsim',),
219-
gate_set: Serializer = None,
220+
gate_set: Optional[Serializer] = None,
220221
program_description: Optional[str] = None,
221222
program_labels: Optional[Dict[str, str]] = None,
222223
job_description: Optional[str] = None,
@@ -262,14 +263,14 @@ def run(
262263
params=[param_resolver],
263264
repetitions=repetitions,
264265
processor_ids=processor_ids,
265-
gate_set=gate_set,
266266
program_description=program_description,
267267
program_labels=program_labels,
268268
job_description=job_description,
269269
job_labels=job_labels,
270270
)
271271
)[0]
272272

273+
@util.deprecated_gate_set_parameter
273274
def run_sweep(
274275
self,
275276
program: cirq.AbstractCircuit,
@@ -321,7 +322,7 @@ def run_sweep(
321322
ValueError: If no gate set is provided.
322323
"""
323324
engine_program = self.create_program(
324-
program, program_id, gate_set, program_description, program_labels
325+
program, program_id, description=program_description, labels=program_labels
325326
)
326327
return engine_program.run_sweep(
327328
job_id=job_id,
@@ -332,6 +333,7 @@ def run_sweep(
332333
labels=job_labels,
333334
)
334335

336+
@util.deprecated_gate_set_parameter
335337
def run_batch(
336338
self,
337339
programs: Sequence[cirq.AbstractCircuit],
@@ -402,7 +404,7 @@ def run_batch(
402404
if not processor_ids:
403405
raise ValueError('Processor id must be specified.')
404406
engine_program = self.create_batch_program(
405-
programs, program_id, gate_set, program_description, program_labels
407+
programs, program_id, description=program_description, labels=program_labels
406408
)
407409
return engine_program.run_batch(
408410
job_id=job_id,
@@ -413,6 +415,7 @@ def run_batch(
413415
labels=job_labels,
414416
)
415417

418+
@util.deprecated_gate_set_parameter
416419
def run_calibration(
417420
self,
418421
layers: List['cirq_google.CalibrationLayer'],
@@ -481,7 +484,7 @@ def run_calibration(
481484
if job_labels is None:
482485
job_labels = {'calibration': ''}
483486
engine_program = self.create_calibration_program(
484-
layers, program_id, gate_set, program_description, program_labels
487+
layers, program_id, description=program_description, labels=program_labels
485488
)
486489
return engine_program.run_calibration(
487490
job_id=job_id,
@@ -490,6 +493,7 @@ def run_calibration(
490493
labels=job_labels,
491494
)
492495

496+
@util.deprecated_gate_set_parameter
493497
def create_program(
494498
self,
495499
program: cirq.AbstractCircuit,
@@ -533,6 +537,7 @@ def create_program(
533537
self.project_id, new_program_id, self.context, new_program
534538
)
535539

540+
@util.deprecated_gate_set_parameter
536541
def create_batch_program(
537542
self,
538543
programs: Sequence[cirq.AbstractCircuit],
@@ -582,6 +587,7 @@ def create_batch_program(
582587
self.project_id, new_program_id, self.context, new_program, result_type=ResultType.Batch
583588
)
584589

590+
@util.deprecated_gate_set_parameter
585591
def create_calibration_program(
586592
self,
587593
layers: List['cirq_google.CalibrationLayer'],
@@ -773,6 +779,7 @@ def get_processor(self, processor_id: str) -> engine_processor.EngineProcessor:
773779
return engine_processor.EngineProcessor(self.project_id, processor_id, self.context)
774780

775781
@deprecated(deadline="v1.0", fix="Use get_sampler instead.")
782+
@util.deprecated_gate_set_parameter
776783
def sampler(
777784
self, processor_id: Union[str, List[str]], gate_set: Optional[Serializer] = None
778785
) -> engine_sampler.QuantumEngineSampler:
@@ -789,8 +796,9 @@ def sampler(
789796
that will send circuits to the Quantum Computing Service
790797
when sampled.
791798
"""
792-
return self.get_sampler(processor_id, gate_set)
799+
return self.get_sampler(processor_id)
793800

801+
@util.deprecated_gate_set_parameter
794802
def get_sampler(
795803
self, processor_id: Union[str, List[str]], gate_set: Optional[Serializer] = None
796804
) -> engine_sampler.QuantumEngineSampler:
@@ -807,9 +815,7 @@ def get_sampler(
807815
that will send circuits to the Quantum Computing Service
808816
when sampled.
809817
"""
810-
return engine_sampler.QuantumEngineSampler(
811-
engine=self, processor_id=processor_id, gate_set=gate_set
812-
)
818+
return engine_sampler.QuantumEngineSampler(engine=self, processor_id=processor_id)
813819

814820

815821
def get_engine(project_id: Optional[str] = None) -> Engine:

0 commit comments

Comments
 (0)