def test_compiling_twice_exception(backend): """Check that compiling a circuit a second time raises error.""" c = Circuit(2) c.add([gates.H(0), gates.H(1)]) c.compile() with pytest.raises(RuntimeError): c.compile()
def test_compiled_circuit(backend): """Check that compiling with `Circuit.compile` does not break results.""" original_backend = qibo.get_backend() qibo.set_backend(backend) def create_circuit(theta = 0.1234): c = Circuit(2) c.add(gates.X(0)) c.add(gates.X(1)) c.add(gates.CZPow(0, 1, theta)) return c # Try to compile circuit without gates empty_c = Circuit(2) with pytest.raises(RuntimeError): empty_c.compile() # Run eager circuit c1 = create_circuit() r1 = c1.execute().numpy() # Run compiled circuit c2 = create_circuit() if backend == "custom": with pytest.raises(RuntimeError): c2.compile() else: c2.compile() r2 = c2.execute().numpy() init_state = c2._default_initial_state() r3, _ = c2._execute_for_compile(init_state.numpy().reshape((2, 2))) r3 = r3.numpy().ravel() np.testing.assert_allclose(r1, r2) np.testing.assert_allclose(r1, r3) qibo.set_backend(original_backend)
def test_compiled_execute(backend): original_backend = qibo.get_backend() qibo.set_backend(backend) def create_circuit(theta=0.1234): c = Circuit(2) c.add(gates.X(0)) c.add(gates.X(1)) c.add(gates.CU1(0, 1, theta)) return c # Try to compile circuit without gates empty_c = Circuit(2) with pytest.raises(RuntimeError): empty_c.compile() # Run eager circuit c1 = create_circuit() r1 = c1.execute() # Run compiled circuit c2 = create_circuit() if backend == "custom": with pytest.raises(RuntimeError): c2.compile() else: c2.compile() r2 = c2() init_state = c2.get_initial_state() r3, _ = c2._execute_for_compile(np.reshape(init_state, (2, 2))) r3 = np.reshape(r3, (4, )) np.testing.assert_allclose(r1, r2) np.testing.assert_allclose(r1, r3) qibo.set_backend(original_backend)
def test_compiling_twice_exception(): """Check that compiling a circuit a second time raises error.""" original_backend = qibo.get_backend() qibo.set_backend("matmuleinsum") c = Circuit(2) c.add([gates.H(0), gates.H(1)]) c.compile() with pytest.raises(RuntimeError): c.compile() qibo.set_backend(original_backend)
def test_entropy_in_compiled_circuit(backend): """Check that entropy calculation works when circuit is compiled.""" from qibo import get_backend entropy = callbacks.EntanglementEntropy([0]) c = Circuit(2) c.add(gates.CallbackGate(entropy)) c.add(gates.H(0)) c.add(gates.CallbackGate(entropy)) c.add(gates.CNOT(0, 1)) c.add(gates.CallbackGate(entropy)) c.compile() final_state = c() K.assert_allclose(entropy[:], [0, 0, 1.0], atol=_atol)
def test_entropy_in_compiled_circuit(): """Check that entropy calculation works when circuit is compiled.""" import qibo original_backend = qibo.get_backend() qibo.set_backend("matmuleinsum") entropy = callbacks.EntanglementEntropy([0]) c = Circuit(2) c.add(gates.CallbackGate(entropy)) c.add(gates.H(0)) c.add(gates.CallbackGate(entropy)) c.add(gates.CNOT(0, 1)) c.add(gates.CallbackGate(entropy)) c.compile() state = c() qibo.set_backend("custom") target = [0, 0, 1.0] np.testing.assert_allclose(entropy[:].numpy(), target, atol=_atol) qibo.set_backend(original_backend)
def test_entropy_in_compiled_circuit(backend): """Check that entropy calculation works when circuit is compiled.""" original_backend = qibo.get_backend() qibo.set_backend(backend) entropy = callbacks.EntanglementEntropy([0]) c = Circuit(2) c.add(gates.CallbackGate(entropy)) c.add(gates.H(0)) c.add(gates.CallbackGate(entropy)) c.add(gates.CNOT(0, 1)) c.add(gates.CallbackGate(entropy)) if backend == "custom": with pytest.raises(RuntimeError): c.compile() else: c.compile() final_state = c() np.testing.assert_allclose(entropy[:], [0, 0, 1.0], atol=_atol) qibo.set_backend(original_backend)
def test_compiled_execute(backend): def create_circuit(theta = 0.1234): c = Circuit(2) c.add(gates.X(0)) c.add(gates.X(1)) c.add(gates.CU1(0, 1, theta)) return c # Try to compile circuit without gates empty_c = Circuit(2) with pytest.raises(RuntimeError): empty_c.compile() # Run eager circuit c1 = create_circuit() r1 = c1.execute() # Run compiled circuit c2 = create_circuit() c2.compile() r2 = c2() init_state = c2.get_initial_state() np.testing.assert_allclose(r1, r2)