Skip to content

Commit 46e4483

Browse files
authored
Initialize processor sampler with the default device config key (#6521)
* add default device config key to grid device metadata * Revert "add default device config key to grid device metadata" This reverts commit bcd3533. * initialize sampler with default device config key and add tests * add properties to sampler * dedupe DeviceConfigK, onewas renamed to DeviceConfigSelector * spelling * coverage * address comments * add fake engine context and client for testing * lint * use new FakeEngineContext * typecheck * lint , local env not catching CI errors * signature of fakes match real impls * add logic to initialize default values instead of throwing value error * lint * rm logging and prefer to throw value error
1 parent 4afe4ae commit 46e4483

File tree

9 files changed

+149
-25
lines changed

9 files changed

+149
-25
lines changed

cirq-google/cirq_google/cloud/quantum/__init__.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@
6161
from cirq_google.cloud.quantum_v1alpha1.types.engine import UpdateQuantumJobRequest
6262
from cirq_google.cloud.quantum_v1alpha1.types.engine import UpdateQuantumProgramRequest
6363
from cirq_google.cloud.quantum_v1alpha1.types.engine import UpdateQuantumReservationRequest
64-
from cirq_google.cloud.quantum_v1alpha1.types.quantum import DeviceConfigKey
64+
from cirq_google.cloud.quantum_v1alpha1.types.quantum import DeviceConfigSelector
6565
from cirq_google.cloud.quantum_v1alpha1.types.quantum import ExecutionStatus
6666
from cirq_google.cloud.quantum_v1alpha1.types.quantum import GcsLocation
6767
from cirq_google.cloud.quantum_v1alpha1.types.quantum import InlineData
@@ -77,6 +77,7 @@
7777
from cirq_google.cloud.quantum_v1alpha1.types.quantum import QuantumResult
7878
from cirq_google.cloud.quantum_v1alpha1.types.quantum import QuantumTimeSlot
7979
from cirq_google.cloud.quantum_v1alpha1.types.quantum import SchedulingConfig
80+
from cirq_google.cloud.quantum_v1alpha1.types.quantum import DeviceConfigKey
8081

8182
__all__ = (
8283
'QuantumEngineServiceClient',
@@ -121,7 +122,7 @@
121122
'UpdateQuantumJobRequest',
122123
'UpdateQuantumProgramRequest',
123124
'UpdateQuantumReservationRequest',
124-
'DeviceConfigKey',
125+
'DeviceConfigSelector',
125126
'ExecutionStatus',
126127
'GcsLocation',
127128
'InlineData',
@@ -137,4 +138,5 @@
137138
'QuantumResult',
138139
'QuantumTimeSlot',
139140
'SchedulingConfig',
141+
'DeviceConfigKey',
140142
)

cirq-google/cirq_google/cloud/quantum_v1alpha1/__init__.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@
5757
from .types.engine import UpdateQuantumJobRequest
5858
from .types.engine import UpdateQuantumProgramRequest
5959
from .types.engine import UpdateQuantumReservationRequest
60-
from .types.quantum import DeviceConfigKey
60+
from .types.quantum import DeviceConfigSelector
6161
from .types.quantum import ExecutionStatus
6262
from .types.quantum import GcsLocation
6363
from .types.quantum import InlineData
@@ -73,6 +73,7 @@
7373
from .types.quantum import QuantumResult
7474
from .types.quantum import QuantumTimeSlot
7575
from .types.quantum import SchedulingConfig
76+
from .types.quantum import DeviceConfigKey
7677

7778
__all__ = (
7879
'QuantumEngineServiceAsyncClient',
@@ -85,7 +86,7 @@
8586
'DeleteQuantumJobRequest',
8687
'DeleteQuantumProgramRequest',
8788
'DeleteQuantumReservationRequest',
88-
'DeviceConfigKey',
89+
'DeviceConfigSelector',
8990
'ExecutionStatus',
9091
'GcsLocation',
9192
'GetQuantumCalibrationRequest',
@@ -133,4 +134,5 @@
133134
'UpdateQuantumJobRequest',
134135
'UpdateQuantumProgramRequest',
135136
'UpdateQuantumReservationRequest',
137+
'DeviceConfigKey',
136138
)

cirq-google/cirq_google/cloud/quantum_v1alpha1/types/__init__.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@
5757
)
5858
from .quantum import (
5959
DeviceConfigKey,
60+
DeviceConfigSelector,
6061
ExecutionStatus,
6162
GcsLocation,
6263
InlineData,
@@ -115,7 +116,7 @@
115116
'UpdateQuantumJobRequest',
116117
'UpdateQuantumProgramRequest',
117118
'UpdateQuantumReservationRequest',
118-
'DeviceConfigKey',
119+
'DeviceConfigSelector',
119120
'ExecutionStatus',
120121
'GcsLocation',
121122
'InlineData',
@@ -131,4 +132,5 @@
131132
'QuantumResult',
132133
'QuantumTimeSlot',
133134
'SchedulingConfig',
135+
'DeviceConfigKey',
134136
)

cirq-google/cirq_google/cloud/quantum_v1alpha1/types/quantum.py

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@
3939
'QuantumReservationBudget',
4040
'QuantumTimeSlot',
4141
'QuantumReservation',
42+
'DeviceConfigSelector',
43+
'DeviceConfigKey',
4244
},
4345
)
4446

@@ -152,7 +154,7 @@ class QuantumJob(proto.Message):
152154
run_context = proto.Field(proto.MESSAGE, number=11, message=any_pb2.Any)
153155

154156

155-
class DeviceConfigKey(proto.Message):
157+
class DeviceConfigSelector(proto.Message):
156158
r"""-
157159
Attributes:
158160
run_name (str):
@@ -185,13 +187,13 @@ class ProcessorSelector(proto.Message):
185187
-
186188
processor (str):
187189
-
188-
device_config_key ((google.cloud.quantum_v1alpha1.types.DeviceConfigKey):
190+
device_config_selector ((google.cloud.quantum_v1alpha1.types.DeviceConfigSelector):
189191
-
190192
"""
191193

192194
processor_names = proto.RepeatedField(proto.STRING, number=1)
193195
processor = proto.Field(proto.STRING, number=2)
194-
device_config_key = proto.Field(proto.MESSAGE, number=3, message=DeviceConfigKey)
196+
device_config_selector = proto.Field(proto.MESSAGE, number=3, message=DeviceConfigSelector)
195197

196198
target_route = proto.Field(proto.STRING, number=1)
197199
processor_selector = proto.Field(proto.MESSAGE, number=3, message=ProcessorSelector)
@@ -378,6 +380,9 @@ class QuantumProcessor(proto.Message):
378380
Output only. -
379381
activity_stats (google.cloud.quantum_v1alpha1.types.QuantumProcessor.ActivityStats):
380382
-
383+
default_device_config_key (google.cloud.quantum_v1alpha1.types.DeviceConfigKey):
384+
-
385+
381386
"""
382387

383388
class Health(proto.Enum):
@@ -413,6 +418,7 @@ class ActivityStats(proto.Message):
413418
current_calibration = proto.Field(proto.STRING, number=10)
414419
active_time_slot = proto.Field(proto.MESSAGE, number=11, message='QuantumTimeSlot')
415420
activity_stats = proto.Field(proto.MESSAGE, number=12, message=ActivityStats)
421+
default_device_config_key = proto.Field(proto.MESSAGE, number=13, message='DeviceConfigKey')
416422

417423

418424
class QuantumCalibration(proto.Message):
@@ -605,4 +611,18 @@ class QuantumReservation(proto.Message):
605611
whitelisted_users = proto.RepeatedField(proto.STRING, number=5)
606612

607613

614+
class DeviceConfigKey(proto.Message):
615+
r"""-
616+
617+
Attributes:
618+
run (str):
619+
-
620+
config_alias (str):
621+
-
622+
"""
623+
624+
run = proto.Field(proto.STRING, number=1)
625+
config_alias = proto.Field(proto.STRING, number=2)
626+
627+
608628
__all__ = tuple(sorted(__protobuf__.manifest))

cirq-google/cirq_google/engine/engine_client.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -455,7 +455,7 @@ async def create_job_async(
455455
scheduling_config=quantum.SchedulingConfig(
456456
processor_selector=quantum.SchedulingConfig.ProcessorSelector(
457457
processor=_processor_name_from_ids(project_id, processor_id),
458-
device_config_key=quantum.DeviceConfigKey(
458+
device_config_selector=quantum.DeviceConfigSelector(
459459
run_name=run_name, config_alias=device_config_name
460460
),
461461
)
@@ -816,7 +816,7 @@ def run_job_over_stream(
816816
scheduling_config=quantum.SchedulingConfig(
817817
processor_selector=quantum.SchedulingConfig.ProcessorSelector(
818818
processor=_processor_name_from_ids(project_id, processor_id),
819-
device_config_key=quantum.DeviceConfigKey(
819+
device_config_selector=quantum.DeviceConfigSelector(
820820
run_name=run_name, config_alias=device_config_name
821821
),
822822
)

cirq-google/cirq_google/engine/engine_client_test.py

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -373,7 +373,9 @@ def test_create_job(client_constructor):
373373
priority=10,
374374
processor_selector=quantum.SchedulingConfig.ProcessorSelector(
375375
processor='projects/proj/processors/processor0',
376-
device_config_key=quantum.DeviceConfigKey(run_name="", config_alias=""),
376+
device_config_selector=quantum.DeviceConfigSelector(
377+
run_name="", config_alias=""
378+
),
377379
),
378380
),
379381
description='A job',
@@ -396,7 +398,9 @@ def test_create_job(client_constructor):
396398
priority=10,
397399
processor_selector=quantum.SchedulingConfig.ProcessorSelector(
398400
processor='projects/proj/processors/processor0',
399-
device_config_key=quantum.DeviceConfigKey(run_name="", config_alias=""),
401+
device_config_selector=quantum.DeviceConfigSelector(
402+
run_name="", config_alias=""
403+
),
400404
),
401405
),
402406
description='A job',
@@ -417,7 +421,9 @@ def test_create_job(client_constructor):
417421
priority=10,
418422
processor_selector=quantum.SchedulingConfig.ProcessorSelector(
419423
processor='projects/proj/processors/processor0',
420-
device_config_key=quantum.DeviceConfigKey(run_name="", config_alias=""),
424+
device_config_selector=quantum.DeviceConfigSelector(
425+
run_name="", config_alias=""
426+
),
421427
),
422428
),
423429
labels=labels,
@@ -439,7 +445,9 @@ def test_create_job(client_constructor):
439445
priority=10,
440446
processor_selector=quantum.SchedulingConfig.ProcessorSelector(
441447
processor='projects/proj/processors/processor0',
442-
device_config_key=quantum.DeviceConfigKey(run_name="", config_alias=""),
448+
device_config_selector=quantum.DeviceConfigSelector(
449+
run_name="", config_alias=""
450+
),
443451
),
444452
),
445453
),
@@ -463,7 +471,9 @@ def test_create_job(client_constructor):
463471
priority=10,
464472
processor_selector=quantum.SchedulingConfig.ProcessorSelector(
465473
processor='projects/proj/processors/processor0',
466-
device_config_key=quantum.DeviceConfigKey(run_name="", config_alias=""),
474+
device_config_selector=quantum.DeviceConfigSelector(
475+
run_name="", config_alias=""
476+
),
467477
),
468478
),
469479
),
@@ -573,7 +583,7 @@ def test_create_job_with_run_name_and_device_config_name(
573583
priority=10,
574584
processor_selector=quantum.SchedulingConfig.ProcessorSelector(
575585
processor='projects/proj/processors/processor0',
576-
device_config_key=quantum.DeviceConfigKey(
586+
device_config_selector=quantum.DeviceConfigSelector(
577587
run_name=run_name, config_alias=device_config_name
578588
),
579589
),
@@ -615,7 +625,7 @@ def test_create_job_with_run_name_and_device_config_name(
615625
priority=10,
616626
processor_selector=quantum.SchedulingConfig.ProcessorSelector(
617627
processor='projects/proj/processors/processor0',
618-
device_config_key=quantum.DeviceConfigKey(),
628+
device_config_selector=quantum.DeviceConfigSelector(),
619629
),
620630
),
621631
description='A job',
@@ -649,7 +659,7 @@ def test_create_job_with_run_name_and_device_config_name(
649659
priority=10,
650660
processor_selector=quantum.SchedulingConfig.ProcessorSelector(
651661
processor='projects/proj/processors/processor0',
652-
device_config_key=quantum.DeviceConfigKey(),
662+
device_config_selector=quantum.DeviceConfigSelector(),
653663
),
654664
),
655665
description='A job',
@@ -680,7 +690,7 @@ def test_create_job_with_run_name_and_device_config_name(
680690
priority=10,
681691
processor_selector=quantum.SchedulingConfig.ProcessorSelector(
682692
processor='projects/proj/processors/processor0',
683-
device_config_key=quantum.DeviceConfigKey(),
693+
device_config_selector=quantum.DeviceConfigSelector(),
684694
),
685695
),
686696
description='A job',
@@ -717,7 +727,7 @@ def test_create_job_with_run_name_and_device_config_name(
717727
priority=10,
718728
processor_selector=quantum.SchedulingConfig.ProcessorSelector(
719729
processor='projects/proj/processors/processor0',
720-
device_config_key=quantum.DeviceConfigKey(),
730+
device_config_selector=quantum.DeviceConfigSelector(),
721731
),
722732
),
723733
description='A job',
@@ -752,7 +762,7 @@ def test_create_job_with_run_name_and_device_config_name(
752762
priority=10,
753763
processor_selector=quantum.SchedulingConfig.ProcessorSelector(
754764
processor='projects/proj/processors/processor0',
755-
device_config_key=quantum.DeviceConfigKey(),
765+
device_config_selector=quantum.DeviceConfigSelector(),
756766
),
757767
),
758768
),
@@ -784,7 +794,7 @@ def test_create_job_with_run_name_and_device_config_name(
784794
scheduling_config=quantum.SchedulingConfig(
785795
processor_selector=quantum.SchedulingConfig.ProcessorSelector(
786796
processor='projects/proj/processors/processor0',
787-
device_config_key=quantum.DeviceConfigKey(),
797+
device_config_selector=quantum.DeviceConfigSelector(),
788798
)
789799
),
790800
),

cirq-google/cirq_google/engine/engine_processor.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@
1919
from google.protobuf import any_pb2
2020

2121
import cirq
22-
from cirq_google.cloud import quantum
2322
from cirq_google.api import v2
23+
from cirq_google.cloud import quantum
2424
from cirq_google.devices import grid_device
2525
from cirq_google.engine import abstract_processor, calibration, processor_sampler, util
2626

@@ -110,8 +110,14 @@ def get_sampler(
110110
Returns:
111111
A `cirq.Sampler` instance (specifically a `engine_sampler.ProcessorSampler`
112112
that will send circuits to the Quantum Computing Service
113-
when sampled.1
113+
when sampled.
114114
"""
115+
processor = self._inner_processor()
116+
# If a run_name or config_alias is not provided, initialize them
117+
# to the Processor's default values.
118+
if not run_name and not device_config_name:
119+
run_name = processor.default_device_config_key.run
120+
device_config_name = processor.default_device_config_key.config_alias
115121
return processor_sampler.ProcessorSampler(
116122
processor=self, run_name=run_name, device_config_name=device_config_name
117123
)

0 commit comments

Comments
 (0)