Add condition to trigger expectation calculation
This commit is contained in:
@@ -8,7 +8,7 @@ from qibo.config import raise_error
|
|||||||
class CuTensorNet(NumpyBackend): # pragma: no cover
|
class CuTensorNet(NumpyBackend): # pragma: no cover
|
||||||
# CI does not test for GPU
|
# CI does not test for GPU
|
||||||
|
|
||||||
def __init__(self, MPI_enabled=False, MPS_enabled=False, NCCL_enabled=False):
|
def __init__(self, MPI_enabled=False, MPS_enabled=False, NCCL_enabled=False, expectation_enabled=False):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
import cuquantum # pylint: disable=import-error
|
import cuquantum # pylint: disable=import-error
|
||||||
from cuquantum import cutensornet as cutn # pylint: disable=import-error
|
from cuquantum import cutensornet as cutn # pylint: disable=import-error
|
||||||
@@ -22,6 +22,7 @@ class CuTensorNet(NumpyBackend): # pragma: no cover
|
|||||||
self.MPI_enabled = MPI_enabled
|
self.MPI_enabled = MPI_enabled
|
||||||
self.MPS_enabled = MPS_enabled
|
self.MPS_enabled = MPS_enabled
|
||||||
self.NCCL_enabled = NCCL_enabled
|
self.NCCL_enabled = NCCL_enabled
|
||||||
|
self.expectation_enabled = expectation_enabled
|
||||||
self.handle = self.cutn.create()
|
self.handle = self.cutn.create()
|
||||||
|
|
||||||
def apply_gate(self, gate, state, nqubits): # pragma: no cover
|
def apply_gate(self, gate, state, nqubits): # pragma: no cover
|
||||||
@@ -76,11 +77,13 @@ class CuTensorNet(NumpyBackend): # pragma: no cover
|
|||||||
MPI_enabled = self.MPI_enabled
|
MPI_enabled = self.MPI_enabled
|
||||||
MPS_enabled = self.MPS_enabled
|
MPS_enabled = self.MPS_enabled
|
||||||
NCCL_enabled = self.NCCL_enabled
|
NCCL_enabled = self.NCCL_enabled
|
||||||
|
expectation_enabled = self.expectation_enabled
|
||||||
|
|
||||||
if (
|
if (
|
||||||
MPI_enabled == False
|
MPI_enabled == False
|
||||||
and MPS_enabled == False
|
and MPS_enabled == False
|
||||||
and NCCL_enabled == False
|
and NCCL_enabled == False
|
||||||
|
and expectation_enabled == False
|
||||||
):
|
):
|
||||||
if initial_state is not None:
|
if initial_state is not None:
|
||||||
raise_error(NotImplementedError,
|
raise_error(NotImplementedError,
|
||||||
@@ -92,6 +95,7 @@ class CuTensorNet(NumpyBackend): # pragma: no cover
|
|||||||
MPI_enabled == False
|
MPI_enabled == False
|
||||||
and MPS_enabled == True
|
and MPS_enabled == True
|
||||||
and NCCL_enabled == False
|
and NCCL_enabled == False
|
||||||
|
and expectation_enabled == False
|
||||||
):
|
):
|
||||||
if initial_state is not None:
|
if initial_state is not None:
|
||||||
raise_error(NotImplementedError,
|
raise_error(NotImplementedError,
|
||||||
@@ -110,6 +114,7 @@ class CuTensorNet(NumpyBackend): # pragma: no cover
|
|||||||
MPI_enabled == True
|
MPI_enabled == True
|
||||||
and MPS_enabled == False
|
and MPS_enabled == False
|
||||||
and NCCL_enabled == False
|
and NCCL_enabled == False
|
||||||
|
and expectation_enabled == False
|
||||||
):
|
):
|
||||||
if initial_state is not None:
|
if initial_state is not None:
|
||||||
raise_error(NotImplementedError,
|
raise_error(NotImplementedError,
|
||||||
@@ -123,6 +128,7 @@ class CuTensorNet(NumpyBackend): # pragma: no cover
|
|||||||
MPI_enabled == False
|
MPI_enabled == False
|
||||||
and MPS_enabled == False
|
and MPS_enabled == False
|
||||||
and NCCL_enabled == True
|
and NCCL_enabled == True
|
||||||
|
and expectation_enabled == False
|
||||||
):
|
):
|
||||||
if initial_state is not None:
|
if initial_state is not None:
|
||||||
raise_error(NotImplementedError,
|
raise_error(NotImplementedError,
|
||||||
@@ -136,6 +142,7 @@ class CuTensorNet(NumpyBackend): # pragma: no cover
|
|||||||
MPI_enabled == False
|
MPI_enabled == False
|
||||||
and MPS_enabled == False
|
and MPS_enabled == False
|
||||||
and NCCL_enabled == False
|
and NCCL_enabled == False
|
||||||
|
and expectation_enabled == True
|
||||||
):
|
):
|
||||||
if initial_state is not None:
|
if initial_state is not None:
|
||||||
raise_error(NotImplementedError,
|
raise_error(NotImplementedError,
|
||||||
@@ -147,6 +154,7 @@ class CuTensorNet(NumpyBackend): # pragma: no cover
|
|||||||
MPI_enabled == True
|
MPI_enabled == True
|
||||||
and MPS_enabled == False
|
and MPS_enabled == False
|
||||||
and NCCL_enabled == False
|
and NCCL_enabled == False
|
||||||
|
and expectation_enabled == True
|
||||||
):
|
):
|
||||||
if initial_state is not None:
|
if initial_state is not None:
|
||||||
raise_error(NotImplementedError,
|
raise_error(NotImplementedError,
|
||||||
@@ -162,6 +170,7 @@ class CuTensorNet(NumpyBackend): # pragma: no cover
|
|||||||
MPI_enabled == False
|
MPI_enabled == False
|
||||||
and MPS_enabled == False
|
and MPS_enabled == False
|
||||||
and NCCL_enabled == True
|
and NCCL_enabled == True
|
||||||
|
and expectation_enabled == True
|
||||||
):
|
):
|
||||||
if initial_state is not None:
|
if initial_state is not None:
|
||||||
raise_error(NotImplementedError,
|
raise_error(NotImplementedError,
|
||||||
|
|||||||
Reference in New Issue
Block a user