예제 #1
0
def test_run_engine_program():
    engine = mock.Mock()
    sampler = cg.QuantumEngineSampler(engine=engine, processor_id='tmp', gate_set=cg.XMON)
    program = mock.Mock(spec=cg.EngineProgram)
    params = [cirq.ParamResolver({'a': 1})]
    sampler.run_sweep(program, params, 5)
    program.run_sweep.assert_called_with(params=params, processor_ids=['tmp'], repetitions=5)
    engine.run_sweep.assert_not_called()
예제 #2
0
def test_run_circuit(circuit):
    engine = mock.Mock()
    sampler = cg.QuantumEngineSampler(engine=engine, processor_id='tmp')
    params = [cirq.ParamResolver({'a': 1})]
    sampler.run_sweep(circuit, params, 5)
    engine.run_sweep.assert_called_with(params=params,
                                        processor_ids=['tmp'],
                                        program=circuit,
                                        repetitions=5)
예제 #3
0
def test_run_circuit(circuit):
    engine = mock.Mock()
    with cirq.testing.assert_deprecated(
            'Use cirq_google.ProcessorSampler instead.', deadline='v0.16'):
        sampler = cg.QuantumEngineSampler(engine=engine, processor_id='tmp')
    params = [cirq.ParamResolver({'a': 1})]
    sampler.run_sweep(circuit, params, 5)
    engine.run_sweep.assert_called_with(params=params,
                                        processor_ids=['tmp'],
                                        program=circuit,
                                        repetitions=5)
예제 #4
0
def test_run_batch_bad_number_of_repetitions():
    engine = mock.Mock()
    sampler = cg.QuantumEngineSampler(engine=engine, processor_id='tmp')
    a = cirq.LineQubit(0)
    circuit1 = cirq.Circuit(cirq.X(a))
    circuit2 = cirq.Circuit(cirq.Y(a))
    params1 = [cirq.ParamResolver({'t': 1})]
    params2 = [cirq.ParamResolver({'t': 2})]
    circuits = [circuit1, circuit2]
    params_list = [params1, params2]
    with pytest.raises(ValueError, match='2 and 3'):
        sampler.run_batch(circuits, params_list, [5, 5, 5])
예제 #5
0
def test_run_batch_bad_number_of_repetitions():
    engine = mock.Mock()
    with cirq.testing.assert_deprecated(
            'Use cirq_google.ProcessorSampler instead.', deadline='v0.16'):
        sampler = cg.QuantumEngineSampler(engine=engine, processor_id='tmp')
    a = cirq.LineQubit(0)
    circuit1 = cirq.Circuit(cirq.X(a))
    circuit2 = cirq.Circuit(cirq.Y(a))
    params1 = [cirq.ParamResolver({'t': 1})]
    params2 = [cirq.ParamResolver({'t': 2})]
    circuits = [circuit1, circuit2]
    params_list = [params1, params2]
    with pytest.raises(ValueError, match='2 and 3'):
        sampler.run_batch(circuits, params_list, [5, 5, 5])
예제 #6
0
def test_run_batch_identical_repetitions():
    engine = mock.Mock()
    sampler = cg.QuantumEngineSampler(engine=engine, processor_id='tmp')
    a = cirq.LineQubit(0)
    circuit1 = cirq.Circuit(cirq.X(a))
    circuit2 = cirq.Circuit(cirq.Y(a))
    params1 = [cirq.ParamResolver({'t': 1})]
    params2 = [cirq.ParamResolver({'t': 2})]
    circuits = [circuit1, circuit2]
    params_list = [params1, params2]
    sampler.run_batch(circuits, params_list, [5, 5])
    engine.run_batch.assert_called_with(params_list=params_list,
                                        processor_ids=['tmp'],
                                        programs=circuits,
                                        repetitions=5)
예제 #7
0
def test_run_batch_identical_repetitions():
    engine = mock.Mock()
    with cirq.testing.assert_deprecated(
            'Use cirq_google.ProcessorSampler instead.', deadline='v0.16'):
        sampler = cg.QuantumEngineSampler(engine=engine, processor_id='tmp')
    a = cirq.LineQubit(0)
    circuit1 = cirq.Circuit(cirq.X(a))
    circuit2 = cirq.Circuit(cirq.Y(a))
    params1 = [cirq.ParamResolver({'t': 1})]
    params2 = [cirq.ParamResolver({'t': 2})]
    circuits = [circuit1, circuit2]
    params_list = [params1, params2]
    sampler.run_batch(circuits, params_list, [5, 5])
    engine.run_batch.assert_called_with(params_list=params_list,
                                        processor_ids=['tmp'],
                                        programs=circuits,
                                        repetitions=5)
예제 #8
0
def test_run_batch_differing_repetitions():
    engine = mock.Mock()
    job = mock.Mock()
    job.results.return_value = []
    engine.run_sweep.return_value = job
    sampler = cg.QuantumEngineSampler(engine=engine, processor_id='tmp', gate_set=cg.XMON)
    a = cirq.LineQubit(0)
    circuit1 = cirq.Circuit(cirq.X(a))
    circuit2 = cirq.Circuit(cirq.Y(a))
    params1 = [cirq.ParamResolver({'t': 1})]
    params2 = [cirq.ParamResolver({'t': 2})]
    circuits = [circuit1, circuit2]
    params_list = [params1, params2]
    repetitions = [1, 2]
    sampler.run_batch(circuits, params_list, repetitions)
    engine.run_sweep.assert_called_with(
        gate_set=cg.XMON, params=params2, processor_ids=['tmp'], program=circuit2, repetitions=2
    )
    engine.run_batch.assert_not_called()
예제 #9
0
def test_run_batch_differing_repetitions():
    engine = mock.Mock()
    job = mock.Mock()
    job.results.return_value = []
    engine.run_sweep.return_value = job
    with cirq.testing.assert_deprecated(
            'Use cirq_google.ProcessorSampler instead.', deadline='v0.16'):
        sampler = cg.QuantumEngineSampler(engine=engine, processor_id='tmp')
    a = cirq.LineQubit(0)
    circuit1 = cirq.Circuit(cirq.X(a))
    circuit2 = cirq.Circuit(cirq.Y(a))
    params1 = [cirq.ParamResolver({'t': 1})]
    params2 = [cirq.ParamResolver({'t': 2})]
    circuits = [circuit1, circuit2]
    params_list = [params1, params2]
    repetitions = [1, 2]
    sampler.run_batch(circuits, params_list, repetitions)
    engine.run_sweep.assert_called_with(params=params2,
                                        processor_ids=['tmp'],
                                        program=circuit2,
                                        repetitions=2)
    engine.run_batch.assert_not_called()
예제 #10
0
def test_engine_sampler_engine_property():
    engine = mock.Mock()
    sampler = cg.QuantumEngineSampler(engine=engine,
                                      processor_id='tmp',
                                      gate_set=cg.XMON)
    assert sampler.engine is engine
예제 #11
0
def test_engine_sampler_engine_property():
    engine = mock.Mock()
    with cirq.testing.assert_deprecated(
            'Use cirq_google.ProcessorSampler instead.', deadline='v0.16'):
        sampler = cg.QuantumEngineSampler(engine=engine, processor_id='tmp')
    assert sampler.engine is engine