Skip to content

Commit 972b6d4

Browse files
Remove use of .device from cirq-aqt (#4812)
Second part of #4744 As far as I can tell there was just one use of `.device` in cirq-aqt in the form of an assertion that the attached device to a circuit was in fact a `cirq.IonDevice` where no call to validate ever took place. Also somewhat confusingly the number of qubits used in simulation would be dictated by the device qubit count instead of the circuit qubit count which could lead to some confusion on the users end. I've gone ahead and just removed the use of device to revert this confusing behavior (which does make this a breaking change).
1 parent ca391ca commit 972b6d4

File tree

3 files changed

+31
-18
lines changed

3 files changed

+31
-18
lines changed

cirq-aqt/cirq_aqt/aqt_sampler.py

+1-2
Original file line numberDiff line numberDiff line change
@@ -198,11 +198,10 @@ def run_sweep(
198198
# TODO: Use measurement name from circuit.
199199
# Github issue: https://github.com/quantumlib/Cirq/issues/2199
200200
meas_name = 'm'
201-
assert isinstance(program.device, cirq.IonDevice)
202201
trial_results: List[cirq.Result] = []
203202
for param_resolver in cirq.to_resolvers(params):
204203
id_str = uuid.uuid1()
205-
num_qubits = len(program.device.qubits)
204+
num_qubits = len(program.all_qubits())
206205
json_str = self._generate_json(circuit=program, param_resolver=param_resolver)
207206
results = self._send_json(
208207
json_str=json_str, id_str=id_str, repetitions=repetitions, num_qubits=num_qubits

cirq-aqt/cirq_aqt/aqt_sampler_test.py

+26-12
Original file line numberDiff line numberDiff line change
@@ -105,8 +105,8 @@ def test_aqt_sampler_error_handling():
105105
max_angle = np.pi
106106
repetitions = 10
107107
sampler = AQTSampler(remote_host="http://localhost:5000", access_token='testkey')
108-
device, qubits = get_aqt_device(1)
109-
circuit = cirq.Circuit(cirq.X(qubits[0]) ** theta, device=device)
108+
_, qubits = get_aqt_device(1)
109+
circuit = cirq.Circuit(cirq.X(qubits[0]) ** theta)
110110
sweep = cirq.Linspace(key='theta', start=0.1, stop=max_angle / np.pi, length=num_points)
111111
with pytest.raises(RuntimeError):
112112
_results = sampler.run_sweep(circuit, params=sweep, repetitions=repetitions)
@@ -117,10 +117,10 @@ def test_aqt_sampler_empty_circuit():
117117
max_angle = np.pi
118118
repetitions = 1000
119119
num_qubits = 4
120-
device, _qubits = get_aqt_device(num_qubits)
120+
_, _qubits = get_aqt_device(num_qubits)
121121
sampler = AQTSamplerLocalSimulator()
122122
sampler.simulate_ideal = True
123-
circuit = cirq.Circuit(device=device)
123+
circuit = cirq.Circuit()
124124
sweep = cirq.Linspace(key='theta', start=0.1, stop=max_angle / np.pi, length=num_points)
125125
with pytest.raises(RuntimeError):
126126
_results = sampler.run_sweep(circuit, params=sweep, repetitions=repetitions)
@@ -141,8 +141,8 @@ def test_aqt_sampler():
141141
max_angle = np.pi
142142
repetitions = 10
143143
sampler = AQTSampler(remote_host="http://localhost:5000", access_token='testkey')
144-
device, qubits = get_aqt_device(1)
145-
circuit = cirq.Circuit(cirq.X(qubits[0]) ** theta, device=device)
144+
_, qubits = get_aqt_device(1)
145+
circuit = cirq.Circuit(cirq.X(qubits[0]) ** theta)
146146
sweep = cirq.Linspace(key='theta', start=0.1, stop=max_angle / np.pi, length=num_points)
147147
results = sampler.run_sweep(circuit, params=sweep, repetitions=repetitions)
148148
excited_state_probs = np.zeros(num_points)
@@ -160,10 +160,18 @@ def test_aqt_sampler_sim():
160160
max_angle = np.pi
161161
repetitions = 1000
162162
num_qubits = 4
163-
device, qubits = get_aqt_device(num_qubits)
163+
_, qubits = get_aqt_device(num_qubits)
164164
sampler = AQTSamplerLocalSimulator()
165165
sampler.simulate_ideal = True
166-
circuit = cirq.Circuit(cirq.X(qubits[3]) ** theta, device=device)
166+
circuit = cirq.Circuit(
167+
cirq.X(qubits[3]) ** theta,
168+
cirq.X(qubits[0]),
169+
cirq.X(qubits[0]),
170+
cirq.X(qubits[1]),
171+
cirq.X(qubits[1]),
172+
cirq.X(qubits[2]),
173+
cirq.X(qubits[2]),
174+
)
167175
circuit.append(cirq.PhasedXPowGate(phase_exponent=0.5, exponent=-0.5).on(qubits[0]))
168176
circuit.append(cirq.PhasedXPowGate(phase_exponent=0.5, exponent=0.5).on(qubits[0]))
169177
sweep = cirq.Linspace(key='theta', start=0.1, stop=max_angle / np.pi, length=num_points)
@@ -179,20 +187,26 @@ def test_aqt_sampler_sim_xtalk():
179187
max_angle = np.pi
180188
repetitions = 100
181189
num_qubits = 4
182-
device, qubits = get_aqt_device(num_qubits)
190+
_, qubits = get_aqt_device(num_qubits)
183191
sampler = AQTSamplerLocalSimulator()
184192
sampler.simulate_ideal = False
185-
circuit = cirq.Circuit(cirq.X(qubits[0]), cirq.X(qubits[3]), cirq.X(qubits[2]), device=device)
193+
circuit = cirq.Circuit(
194+
cirq.X(qubits[0]),
195+
cirq.X(qubits[1]),
196+
cirq.X(qubits[1]),
197+
cirq.X(qubits[3]),
198+
cirq.X(qubits[2]),
199+
)
186200
sweep = cirq.Linspace(key='theta', start=0.1, stop=max_angle / np.pi, length=num_points)
187201
_results = sampler.run_sweep(circuit, params=sweep, repetitions=repetitions)
188202

189203

190204
def test_aqt_sampler_ms():
191205
repetitions = 1000
192206
num_qubits = 4
193-
device, qubits = get_aqt_device(num_qubits)
207+
_, qubits = get_aqt_device(num_qubits)
194208
sampler = AQTSamplerLocalSimulator()
195-
circuit = cirq.Circuit(device=device)
209+
circuit = cirq.Circuit(cirq.Z.on_each(*qubits), cirq.Z.on_each(*qubits))
196210
for _dummy in range(9):
197211
circuit.append(cirq.XX(qubits[0], qubits[1]) ** 0.5)
198212
circuit.append(cirq.Z(qubits[0]) ** 0.5)

cirq-aqt/cirq_aqt/aqt_simulator_test.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ def test_simulator_no_circ():
3030
def test_ms_crosstalk_n_noise():
3131
num_qubits = 4
3232
noise_mod = AQTNoiseModel()
33-
device, qubits = get_aqt_device(num_qubits)
34-
circuit = cirq.Circuit(device=device)
33+
_, qubits = get_aqt_device(num_qubits)
34+
circuit = cirq.Circuit()
3535
circuit.append(cirq.XX(qubits[1], qubits[2]) ** 0.5)
3636
for moment in circuit.moments:
3737
noisy_moment = noise_mod.noisy_moment(moment, qubits)
@@ -49,8 +49,8 @@ def test_ms_crosstalk_n_noise():
4949
def test_x_crosstalk_n_noise():
5050
num_qubits = 4
5151
noise_mod = AQTNoiseModel()
52-
device, qubits = get_aqt_device(num_qubits)
53-
circuit = cirq.Circuit(device=device)
52+
_, qubits = get_aqt_device(num_qubits)
53+
circuit = cirq.Circuit()
5454
circuit.append(cirq.Y(qubits[1]) ** 0.5)
5555
circuit.append(cirq.Z(qubits[1]) ** 0.5)
5656
circuit.append(cirq.X(qubits[1]) ** 0.5)

0 commit comments

Comments
 (0)