Updated with pytest script for testing

This commit is contained in:
tankya2
2023-03-21 15:17:29 +08:00
parent b200aed968
commit c05fe12e46
3 changed files with 53 additions and 0 deletions

View File

@@ -42,6 +42,11 @@ setup(
"qibo>=0.1.10", "qibo>=0.1.10",
"qibojit>=0.0.7", "qibojit>=0.0.7",
"quimb[tensor]>=1.4.0", "quimb[tensor]>=1.4.0",
"cupy>=11.6.0",
"cuquantum-python-cu11>=22.11.0.1",
"custatevec-cu11>=1.2.0",
"cutensor-cu11>=1.6.2",
"cutensornet-cu11>=2.0.0",
], ],
extras_require={ extras_require={
"docs": [], "docs": [],

10
src/qibotn/cutn.py Normal file
View File

@@ -0,0 +1,10 @@
# from qibotn import quimb as qiboquimb
from QiboCircuitConvertor import QiboCircuitToEinsum
from cuquantum import contract
def eval(qibo_circ):
myconvertor = QiboCircuitToEinsum(qibo_circ, dtype="complex128")
operands_expression = myconvertor.state_vector()
results = contract(*operands_expression)
return results.flatten()

View File

@@ -0,0 +1,38 @@
import copy
import os
from timeit import default_timer as timer
import config
import numpy as np
import pytest
import qibo
from qibo.models import QFT
def qibo_qft(nqubits, swaps):
circ_qibo = QFT(nqubits, swaps)
state_vec = np.array(circ_qibo())
return circ_qibo, state_vec
def time(func):
start = timer()
res = func()
end = timer()
time = end - start
return time, res
@pytest.mark.parametrize("nqubits", [1, 2, 5, 10])
def test_eval(nqubits: int):
import qibotn.cutn
# Test qibo
qibo.set_backend(backend=config.qibo.backend, platform=config.qibo.platform)
qibo_time, (qibo_circ, result_sv) = time(lambda: qibo_qft(nqubits, swaps=True))
# Test Cuquantum
cutn_time, result_tn = time(lambda: qibotn.cutn.eval(qibo_circ))
assert 1e-2 * qibo_time < cutn_time < 1e2 * qibo_time
assert np.allclose(result_sv, result_tn), "Resulting dense vectors do not match"