Added MPS codes

This commit is contained in:
tankya2
2023-07-14 09:51:06 +08:00
parent 76f61bc9fe
commit 3cb0fec99c
4 changed files with 278 additions and 57 deletions

View File

@@ -0,0 +1,24 @@
import cupy as cp
import numpy as np
from cuquantum import cutensornet as cutn
from QiboCircuitConvertor import QiboCircuitToEinsum
from MPSUtils import get_initial_mps, apply_gate
class QiboCircuitToMPS:
def __init__(self,circ_qibo, gate_algo, dtype = 'complex128',rand_seed=0,):
np.random.seed(rand_seed)
cp.random.seed(rand_seed)
self.num_qubits = circ_qibo.nqubits
self.handle = cutn.create()
self.options = {'handle': self.handle}
self.dtype = dtype
self.mps_tensors = get_initial_mps(self.num_qubits, dtype=dtype)
circuitconvertor = QiboCircuitToEinsum(circ_qibo)
for (gate, qubits) in circuitconvertor.gate_tensors:
# mapping from qubits to qubit indices
# apply the gate in-place
apply_gate(self.mps_tensors, gate, qubits, algorithm=gate_algo, options=self.options)