refactor: constructing an abstract QiboTN backend and adapt quimb and cutensornet

This commit is contained in:
MatteoRobbiati
2025-01-27 12:26:30 +01:00
parent b28260289e
commit 773196fb2f
2 changed files with 6 additions and 27 deletions

View File

@@ -1,12 +1,13 @@
import numpy as np
from qibo.backends.numpy import NumpyBackend
from qibo.config import raise_error
from qibo.result import QuantumState
from qibotn.backends.abstract import QibotnBackend
CUDA_TYPES = {}
class CuTensorNet(NumpyBackend): # pragma: no cover
class CuTensorNet(QibotnBackend): # pragma: no cover
# CI does not test for GPU
"""Creates CuQuantum backend for QiboTN."""
@@ -77,22 +78,10 @@ class CuTensorNet(NumpyBackend): # pragma: no cover
),
}
def apply_gate(self, gate, state, nqubits): # pragma: no cover
raise_error(NotImplementedError, "QiboTN cannot apply gates directly.")
def apply_gate_density_matrix(self, gate, state, nqubits): # pragma: no cover
raise_error(NotImplementedError, "QiboTN cannot apply gates directly.")
def assign_measurements(self, measurement_map, circuit_result):
raise_error(NotImplementedError, "Not implemented in QiboTN.")
def __del__(self):
if hasattr(self, "cutn"):
self.cutn.destroy(self.handle)
def set_precision(self, precision):
if precision != self.precision:
super().set_precision(precision)
def cuda_type(self, dtype="complex64"):
"""Get CUDA Type.

View File

@@ -2,8 +2,10 @@ from qibo.backends.numpy import NumpyBackend
from qibo.config import raise_error
from qibo.result import QuantumState
from qibotn.backends.abstract import QibotnBackend
class QuimbBackend(NumpyBackend):
class QuimbBackend(QibotnBackend):
def __init__(self, runcard):
super().__init__()
@@ -36,18 +38,6 @@ class QuimbBackend(NumpyBackend):
self.platform = "QuimbBackend"
self.versions["quimb"] = self.quimb.__version__
def apply_gate(self, gate, state, nqubits): # pragma: no cover
raise_error(NotImplementedError, "QiboTN cannot apply gates directly.")
def apply_gate_density_matrix(self, gate, state, nqubits): # pragma: no cover
raise_error(NotImplementedError, "QiboTN cannot apply gates directly.")
def assign_measurements(self, measurement_map, circuit_result):
raise_error(NotImplementedError, "Not implemented in QiboTN.")
def set_precision(self, precision):
if precision != self.precision:
super().set_precision(precision)
def execute_circuit(
self, circuit, initial_state=None, nshots=None, return_array=False