Add the pytest function for MPS in cuquantum.
This commit is contained in:
@@ -1,33 +1,34 @@
|
||||
from qibotn.QiboCircuitConvertor import QiboCircuitToEinsum
|
||||
from cuquantum import contract
|
||||
from MpsHelper import MPSHelper
|
||||
import cuquantum
|
||||
from cuquantum import cutensornet as cutn
|
||||
import cupy as cp
|
||||
import numpy as np
|
||||
from qibo.models import QFT
|
||||
from QiboCircuitToMPS import QiboCircuitToMPS
|
||||
from MPSContractionHelper import MPSContractionHelper
|
||||
from qibotn.QiboCircuitToMPS import QiboCircuitToMPS
|
||||
from qibotn.MPSContractionHelper import MPSContractionHelper
|
||||
|
||||
|
||||
def eval(qibo_circ, datatype):
|
||||
myconvertor = QiboCircuitToEinsum(qibo_circ, dtype=datatype)
|
||||
return contract(*myconvertor.state_vector_operands())
|
||||
|
||||
|
||||
def eval_mps(qibo_circ, gate_algo, datatype):
|
||||
myconvertor = QiboCircuitToMPS(qibo_circ, gate_algo, datatype)
|
||||
myconvertor = QiboCircuitToMPS(qibo_circ, gate_algo, dtype=datatype)
|
||||
mps_helper = MPSContractionHelper(myconvertor.num_qubits)
|
||||
sv_mps = mps_helper.contract_state_vector(myconvertor.mps_tensors,myconvertor.options)
|
||||
sv_mps = mps_helper.contract_state_vector(
|
||||
myconvertor.mps_tensors, myconvertor.options)
|
||||
return sv_mps
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
num_qubits = 25
|
||||
num_qubits = 25
|
||||
swaps = True
|
||||
circ_qibo = QFT(num_qubits, swaps)
|
||||
|
||||
exact_gate_algorithm = {'qr_method': False,
|
||||
'svd_method':{'partition': 'UV', 'abs_cutoff':1e-12}}
|
||||
dtype="complex128"
|
||||
|
||||
exact_gate_algorithm = {'qr_method': False,
|
||||
'svd_method': {'partition': 'UV', 'abs_cutoff': 1e-12}}
|
||||
dtype = "complex128"
|
||||
sv_mps = eval_mps(circ_qibo, exact_gate_algorithm, dtype)
|
||||
sv_reference = eval(circ_qibo, dtype)
|
||||
state_vec = np.array(circ_qibo())
|
||||
|
||||
Reference in New Issue
Block a user