diff --git a/src/qibotn/backends/abstract.py b/src/qibotn/backends/abstract.py new file mode 100644 index 0000000..6e8088d --- /dev/null +++ b/src/qibotn/backends/abstract.py @@ -0,0 +1,41 @@ +from abc import abstractmethod +from qibo.backends.numpy import NumpyBackend +from qibo.config import raise_error + + +DEFAULT_CONFIGURATION = { + "MPI_enabled": False, # TODO: cutensornet specific, TBRemoved + "NCCL_enabled": False, # TODO: cutensornet specific, TBRemoved + "expectation_enabled": False, + "pauli_string_pattern": None, + "MPS_enabled": False, + "gate_algo": None, + "mps_opts": None, +} + + + +class QibotnBackend(NumpyBackend): + + def __init__(self, runcard:dict = DEFAULT_CONFIGURATION): + super().__init__() + + 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) + + @abstractmethod + def configure_tn_simulation(self, **config): + """Configure the TN simulation that will be performed.""" + pass + +