Beispiel #1
0
def test_unsupported_types():
    program = ParentProgram(
        [cirq.Circuit(cirq.X(Q), cirq.measure(Q, key='m'))], None)
    job = SimulatedLocalJob(
        job_id='test_job',
        processor_id='test1',
        parent_program=program,
        repetitions=100,
        sweeps=[],
        simulation_type=LocalSimulationType.ASYNCHRONOUS,
    )
    with pytest.raises(ValueError, match='Unsupported simulation type'):
        job.results()
    with pytest.raises(ValueError, match='Unsupported simulation type'):
        job.batched_results()
Beispiel #2
0
def test_run_batch():
    program = ParentProgram(
        [
            cirq.Circuit(
                cirq.X(Q)**sympy.Symbol('t'), cirq.measure(Q, key='m')),
            cirq.Circuit(
                cirq.X(Q)**sympy.Symbol('x'), cirq.measure(Q, key='m2')),
        ],
        None,
    )
    job = SimulatedLocalJob(
        job_id='test_job',
        processor_id='test1',
        parent_program=program,
        repetitions=100,
        sweeps=[
            cirq.Points(key='t', points=[1, 0]),
            cirq.Points(key='x', points=[0, 1])
        ],
    )
    assert job.execution_status() == quantum.enums.ExecutionStatus.State.READY
    results = job.batched_results()
    assert np.all(results[0][0].measurements['m'] == 1)
    assert np.all(results[0][1].measurements['m'] == 0)
    assert np.all(results[1][0].measurements['m2'] == 0)
    assert np.all(results[1][1].measurements['m2'] == 1)
    assert job.execution_status(
    ) == quantum.enums.ExecutionStatus.State.SUCCESS
Beispiel #3
0
def test_run_batch(simulation_type):
    program = ParentProgram(
        [
            cirq.Circuit(
                cirq.X(Q)**sympy.Symbol('t'), cirq.measure(Q, key='m')),
            cirq.Circuit(
                cirq.X(Q)**sympy.Symbol('x'), cirq.measure(Q, key='m2')),
        ],
        None,
    )
    job = SimulatedLocalJob(
        job_id='test_job',
        processor_id='test1',
        parent_program=program,
        simulation_type=simulation_type,
        repetitions=100,
        sweeps=[
            cirq.Points(key='t', points=[1, 0]),
            cirq.Points(key='x', points=[0, 1])
        ],
    )
    if simulation_type == LocalSimulationType.ASYNCHRONOUS:
        # Note: The simulation could have finished already
        assert (job.execution_status() == quantum.ExecutionStatus.State.RUNNING
                or job.execution_status()
                == quantum.ExecutionStatus.State.SUCCESS)
    else:
        assert job.execution_status() == quantum.ExecutionStatus.State.READY
    results = job.batched_results()
    assert np.all(results[0][0].measurements['m'] == 1)
    assert np.all(results[0][1].measurements['m'] == 0)
    assert np.all(results[1][0].measurements['m2'] == 0)
    assert np.all(results[1][1].measurements['m2'] == 1)
    assert job.execution_status() == quantum.ExecutionStatus.State.SUCCESS
    # Using flattened results
    results = job.results()
    assert np.all(results[0].measurements['m'] == 1)
    assert np.all(results[1].measurements['m'] == 0)
    assert np.all(results[2].measurements['m2'] == 0)
    assert np.all(results[3].measurements['m2'] == 1)

    for result in results:
        assert result.job_id == 'test_job'
        assert result.job_finished_time is not None
    assert results == cirq.read_json(json_text=cirq.to_json(results))
Beispiel #4
0
def test_failure():
    program = ParentProgram(
        [cirq.Circuit(cirq.X(Q)**sympy.Symbol('t'), cirq.measure(Q, key='m'))],
        None)
    job = SimulatedLocalJob(
        job_id='test_job',
        processor_id='test1',
        parent_program=program,
        repetitions=100,
        sweeps=[cirq.Points(key='x', points=[1, 0])],
    )
    try:
        _ = job.results()
    except ValueError:
        code, message = job.failure()
        assert code == '500'
        assert 'Circuit contains ops whose symbols were not specified' in message

    try:
        _ = job.batched_results()
    except ValueError:
        code, message = job.failure()
        assert code == '500'
        assert 'Circuit contains ops whose symbols were not specified' in message