def test_execute(tmpdir, run_id_in, patch_cirq_default_resolvers): assert patch_cirq_default_resolvers rt_config = cg.QuantumRuntimeConfiguration( processor=_MockEngineProcessor(), run_id=run_id_in, qubit_placer=cg.NaiveQubitPlacer(), ) executable_group = cg.QuantumExecutableGroup(_get_quantum_executables()) returned_exegroup_result = cg.execute(rt_config=rt_config, executable_group=executable_group, base_data_dir=tmpdir) run_id = returned_exegroup_result.shared_runtime_info.run_id if run_id_in is not None: assert run_id_in == run_id else: assert isinstance(uuid.UUID(run_id), uuid.UUID) manual_exegroup_result = _load_result_by_hand(tmpdir, run_id) egr_record: cg.ExecutableGroupResultFilesystemRecord = cirq.read_json_gzip( f'{tmpdir}/{run_id}/ExecutableGroupResultFilesystemRecord.json.gz') exegroup_result: cg.ExecutableGroupResult = egr_record.load( base_data_dir=tmpdir) # TODO(gh-4699): Don't null-out device once it's serializable. assert isinstance(returned_exegroup_result.shared_runtime_info.device, cg.SerializableDevice) returned_exegroup_result.shared_runtime_info.device = None assert returned_exegroup_result == exegroup_result assert manual_exegroup_result == exegroup_result
def test_quantum_runtime_configuration_serialization(tmpdir): rt_config = cg.QuantumRuntimeConfiguration( processor_record=cg.SimulatedProcessorWithLocalDeviceRecord('rainbow'), run_id='unit-test', ) cg_assert_equivalent_repr(rt_config) _assert_json_roundtrip(rt_config, tmpdir)
def test_execute(tmpdir, run_id_in): rt_config = cg.QuantumRuntimeConfiguration( processor_record=cg.SimulatedProcessorWithLocalDeviceRecord('rainbow'), run_id=run_id_in, qubit_placer=cg.NaiveQubitPlacer(), ) executable_group = cg.QuantumExecutableGroup(_get_quantum_executables()) returned_exegroup_result = cg.execute(rt_config=rt_config, executable_group=executable_group, base_data_dir=tmpdir) run_id = returned_exegroup_result.shared_runtime_info.run_id if run_id_in is not None: assert run_id_in == run_id else: assert isinstance(uuid.UUID(run_id), uuid.UUID) manual_exegroup_result = _load_result_by_hand(tmpdir, run_id) egr_record: cg.ExecutableGroupResultFilesystemRecord = cirq.read_json_gzip( f'{tmpdir}/{run_id}/ExecutableGroupResultFilesystemRecord.json.gz') exegroup_result: cg.ExecutableGroupResult = egr_record.load( base_data_dir=tmpdir) helper_loaded_result = cg.ExecutableGroupResultFilesystemRecord.from_json( run_id=run_id, base_data_dir=tmpdir).load(base_data_dir=tmpdir) # TODO(gh-4699): Don't null-out device once it's serializable. assert isinstance(returned_exegroup_result.shared_runtime_info.device, cirq.Device) returned_exegroup_result.shared_runtime_info.device = None assert returned_exegroup_result == exegroup_result assert manual_exegroup_result == exegroup_result assert helper_loaded_result == exegroup_result
def test_quantum_runtime_configuration_serialization(tmpdir): rt_config = cg.QuantumRuntimeConfiguration( processor=_MockEngineProcessor(), run_id='unit-test', ) cg_assert_equivalent_repr(rt_config) _assert_json_roundtrip(rt_config, tmpdir)
def rt_config(request): if request.param == 'minimal': return cg.QuantumRuntimeConfiguration( processor_record=cg.SimulatedProcessorWithLocalDeviceRecord('rainbow') ) elif request.param == 'full': return cg.QuantumRuntimeConfiguration( processor_record=cg.SimulatedProcessorWithLocalDeviceRecord('rainbow'), run_id='unit-test', random_seed=52, qubit_placer=cg.RandomDevicePlacer(), target_gateset=cirq.CZTargetGateset(), ) raise ValueError(f"Unknown flavor {request}") # coverage: ignore
def test_quantum_runtime_configuration(): rt_config = cg.QuantumRuntimeConfiguration( processor_record=cg.SimulatedProcessorWithLocalDeviceRecord('rainbow'), run_id='unit-test', ) sampler = rt_config.processor_record.get_sampler() result = sampler.run( cirq.Circuit(cirq.measure(cirq.GridQubit(5, 3), key='z'))) assert isinstance(result, cirq.Result) assert isinstance(rt_config.processor_record.get_device(), cirq.Device)
def test_quantum_runtime_configuration(): rt_config = cg.QuantumRuntimeConfiguration( processor=_MockEngineProcessor(), run_id='unit-test', ) sampler = rt_config.processor.get_sampler() result = sampler.run(cirq.Circuit(cirq.measure(cirq.LineQubit(0), key='z'))) assert isinstance(result, cirq.Result) assert isinstance(rt_config.processor.get_device(), cirq.Device)
def test_executable_group_result(tmpdir): egr = cg.ExecutableGroupResult( runtime_configuration=cg.QuantumRuntimeConfiguration( processor=_MockEngineProcessor(), run_id='unit-test', ), shared_runtime_info=cg.SharedRuntimeInfo(run_id='my run'), executable_results=[ cg.ExecutableResult( spec=_get_example_spec(name=f'test-spec-{i}'), runtime_info=cg.RuntimeInfo(execution_index=i), raw_data=cirq.Result(params=cirq.ParamResolver(), measurements={'z': np.ones((1_000, 4))}), ) for i in range(3) ], )
def test_filesystem_saver(tmpdir, patch_cirq_default_resolvers): assert patch_cirq_default_resolvers run_id = 'asdf' fs_saver = _FilesystemSaver(base_data_dir=tmpdir, run_id=run_id) rt_config = cg.QuantumRuntimeConfiguration( processor=_MockEngineProcessor(), run_id=run_id) shared_rt_info = cg.SharedRuntimeInfo(run_id=run_id) fs_saver.initialize(rt_config, shared_rt_info=shared_rt_info) # Test 1: assert fs_saver.initialize() has worked. rt_config2 = cirq.read_json_gzip( f'{tmpdir}/{run_id}/QuantumRuntimeConfiguration.json.gz') shared_rt_info2 = cirq.read_json_gzip( f'{tmpdir}/{run_id}/SharedRuntimeInfo.json.gz') assert rt_config == rt_config2 assert shared_rt_info == shared_rt_info2 # Test 2: assert `consume_result()` works. # you shouldn't actually mutate run_id in the shared runtime info, but we want to test # updating the shared rt info object: shared_rt_info.run_id = 'updated_run_id' exe_result = cg.ExecutableResult( spec=None, runtime_info=cg.RuntimeInfo(execution_index=0), raw_data=cirq.Result(params=cirq.ParamResolver({}), measurements={'z': np.ones((100, 5))}), ) fs_saver.consume_result(exe_result=exe_result, shared_rt_info=shared_rt_info) shared_rt_info3 = cirq.read_json_gzip( f'{tmpdir}/{run_id}/SharedRuntimeInfo.json.gz') exe_result3 = cirq.read_json_gzip( f'{tmpdir}/{run_id}/ExecutableResult.0.json.gz') assert shared_rt_info == shared_rt_info3 assert exe_result == exe_result3 # Test 3: assert loading egr_record works. egr_record: cg.ExecutableGroupResultFilesystemRecord = cirq.read_json_gzip( f'{fs_saver.data_dir}/ExecutableGroupResultFilesystemRecord.json.gz') assert egr_record == fs_saver.egr_record exegroup_result: cg.ExecutableGroupResult = egr_record.load( base_data_dir=tmpdir) assert exegroup_result.shared_runtime_info == shared_rt_info assert exegroup_result.runtime_configuration == rt_config assert exegroup_result.executable_results[0] == exe_result