Пример #1
0
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)
Пример #2
0
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)
Пример #3
0
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)