def test_set_backend_with_platform(backend_name): """Check ``set_backend`` with ``platform`` argument.""" original_backend = backends.get_backend() original_platform = K.get_platform() backends.set_backend(backend_name, platform="test") current_platform = K.get_platform() backends.set_backend(original_backend, platform=original_platform)
def assert_gates_equivalent(qibo_gate, cirq_gates, nqubits, ndevices=None, atol=1e-7): """Asserts that QIBO and Cirq gates have equivalent action on a random state. Args: qibo_gate: QIBO gate. cirq_gates: List of tuples (cirq gate, target qubit IDs). nqubits: Total number of qubits in the circuit. atol: Absolute tolerance in state vector comparsion. """ initial_state = random_state(nqubits) target_state, target_depth = execute_cirq(cirq_gates, nqubits, np.copy(initial_state)) accelerators = None if ndevices is not None: accelerators = {"/GPU:0": ndevices} if accelerators: if not K.supports_multigpu: with pytest.raises(NotImplementedError): c = models.Circuit(nqubits, accelerators) elif K.get_platform() == "numba" and len( K.available_platforms) > 1: # pragma: no cover pytest.skip("Skipping distributed cirq test for numba platform.") else: c = models.Circuit(nqubits, accelerators) c.add(qibo_gate) final_state = c(np.copy(initial_state)) assert c.depth == target_depth K.assert_allclose(final_state, target_state, atol=atol)
def test_set_backend(backend_name): """Check ``set_backend`` for switching gate backends.""" original_backend = backends.get_backend() backends.set_backend(backend_name) assert K.name == backend_name if K.platform is None: assert str(K) == backend_name assert repr(K) == backend_name else: platform = K.get_platform() assert str(K) == f"{backend_name} ({platform})" assert repr(K) == f"{backend_name} ({platform})" assert K.executing_eagerly() h = gates.H(0) backends.set_backend(original_backend)