-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Closed
Labels
Description
Summarize the task
Refactor cirq-google to
- Simplify Quantum Engine
DeviceSpecification
proto and its serialization/deserialization logic. - Implement Devices 2.0 and GateSets APIs in cirq-core.
Acceptance criteria - when is the task considered done?
When all tasks below are complete:
-
DeviceSpecification
proto updates -
GateFamily
tag support -
CompilationTargetGateset
support in GridDeviceMetadata -
GridDevice
shell - Gateset generation
- Gate duration
- Look into refactoring qubit targets
- Remove
valid_targets
in the new GateSpecification - Deprecations
- SerializableDevice
- SerializableGateset
-
gate_set
field in Engine methods. Deprecate gate_set args in various Engine methods #4995
- Handle PhysicalZ in CompilationTargetGatesets used by GridDevice
- Rerouting to GridDevice
- get_device()
- Sycamore example devices
- Virtual engine factory
- cg.workflow ProcessorRecord
- Update example DeviceSpecifications
- Downstream dependency refactors
- cirq_google/workflow - use Gateset validation/compilation (cc @mpharrigan )
- Remove deprecations
- Deprecated create_proto methods in
cirq_google.devices.known_devices.py
(deprecation PR: Deprecate create_device_proto_for_qubits #5592 and 983875e) - SerializableDevice class (deprecation PR: Deprecate SerializableDevice #5522)
- Global SerializableGateSets (
cirq_google/serialization/gate_sets.py
) and the SerializableGateSet class (deprecation PR: SerializableGateSet deprecation #5573) - Common serializers (cirq_google/serialization/common_serializers.py) (deprecation PR: Deprecate common serializers #5611)
- Unused serializer classes (deprecation PR: Serializers deprecation #5589)
- GridDevice.qubits property (deprecation PR: Temporary GridDevice.qubits property #5593)
-
[?] Program.language.gateset proto field (deprecation PR: Deprecate Program.language.gate_set proto field #5591) - Optimized_for_sycamore, optimized_for_xmon [blocked on Google target gateset implementation] (deprecation PR: Deprecate optimize_for_sycamore and optimize_for_xmon #5531)
- Deprecated create_proto methods in
Future improvements:
- Serialize GridDevice back to DeviceSpecification
- Documentation
- Update cirq_google tutorials
- Document how to add/remove gates
- SycamoreTargetGateset additional_gates arg
- Deprecate ASYMMETRIC and SUBSET_PERMUTATION target types.
- Make gate_durations optional (requires protobuf 3.15)
- While the protoc flag
--experimental_allow_proto3_optional
can be used forprotoc
3.12-3.14,protoc-gen-mypy
doesn't support it.
- While the protoc flag
- Removing deprecated fields in
program.proto
anddevice.proto
. Can consider removing few months after Cirq 1.0, or can be left untouched until v3 protos. - More frequent
Device
refreshes [unclear if necessary]- Update devices documentation
Related
Cirq Device 2.0 design
Cirq Gateset design
Related issues: #abc, #xyz, ...