cuquantum.densitymat.DensePureState

class cuquantum.densitymat.DensePureState(ctx, hilbert_space_dims, batch_size, dtype)[source]

密集(状态向量)表示中的纯态。

需要通过 attach_storage() 方法附加存储缓冲区,或通过 allocate_storage() 方法分配存储缓冲区。存储缓冲区的适当大小以及有关存储布局的信息可在 local_info 属性中找到。

参数
  • ctx – 执行上下文,其中包含有关设备 ID、日志记录和阻塞/非阻塞执行的信息。

  • hilbert_space_dims – 局部希尔伯特空间维度的元组。

  • batch_size – 状态的批次维度。

  • dtype – 状态系数的数值数据类型。

示例

>>> import cupy as cp
>>> from cuquantum.densitymat import WorkStream, DensePureState

要创建批次大小为 1 和双精度复数数据类型的 DensePureState,我们需要首先初始化它,然后通过 attach_storage() 方法附加存储缓冲区,如下所示

>>> ctx = WorkStream(stream=cp.cuda.Stream())
>>> hilbert_space_dims = (2, 2, 2)
>>> rho = DensePureState(ctx, hilbert_space_dims, 1, "complex128")
>>> rho.attach_storage(cp.zeros(rho.storage_size, dtype=rho.dtype))

方法

__init__(ctx: WorkStream, hilbert_space_dims: Sequence[int], batch_size: int, dtype: str) None[source]

初始化密集(状态向量)表示中的纯态。

allocate_storage() None[source]

分配适当大小的数据缓冲区并将其附加到状态。

attach_storage(data: cupy.ndarray) None[source]

将数据缓冲区附加到状态。

参数

data – 要附加到状态的数据缓冲区。

注意

数据缓冲区需要匹配传递给 __init__ 函数的希尔伯特空间维度、批次大小和数据类型。此外,数据缓冲区需要是 Fortran 连续的,并且与传递给 __init__ 函数的 WorkStream 位于同一设备上。

clone(buf: cupy.ndarray) DenseState[source]

使用新的数据缓冲区克隆状态。

参数

buf – 要附加到新状态的数据缓冲区。

返回

具有与原始状态相同的元数据和新数据缓冲区的状态。

inner_product(other) cupy.ndarray[source]

计算两个状态之间的内积。

参数

other – 要与之计算内积的另一个状态。

返回

长度为 batch_size 的内积数组。

inplace_accumulate(other, factors: Union[numbers.Number, Sequence, numpy.ndarray, cupy.ndarray] = 1) None[source]

将另一个按因子缩放的状态就地累积到此状态中。

参数
  • other – 要缩放并累积到此状态中的另一个状态。

  • factors – 用于缩放 other 的标量因子。如果提供单个数字,则按相同因子缩放 other 中的所有批处理状态。默认为 1。

inplace_scale(factors: Union[numbers.Number, Sequence, numpy.ndarray, cupy.ndarray]) None[source]

按标量因子缩放状态。

参数

factors – 用于缩放状态的标量因子。如果提供单个数字,则按相同因子缩放所有批处理状态。

norm() cupy.ndarray[source]

计算状态的平方 Frobenius 范数。

返回

长度为 batch_size 的平方 Frobenius 范数数组。

trace() cupy.ndarray[source]

计算状态的迹。

返回

长度为 batch_size 的迹数组。

view() cupy.ndarray[source]

返回存储缓冲区本地切片的多维视图。

注意

batch_size 为 1 时,视图的最后一种模式将是维度为 1 的批处理模式。

属性

local_info

本地存储缓冲区维度以及本地模式偏移量。

返回

Tuple[int]

本地存储缓冲区维度,最后一个维度是批次维度。

Tuple[int]

本地模式偏移量。

storage

状态的本地存储缓冲区。

返回

状态的本地存储缓冲区。

返回类型

cp.ndarray

storage_size

存储缓冲区大小,以数据类型 dtype 的元素数量表示。

返回

存储缓冲区大小,以数据类型 dtype 的元素数量表示。

返回类型

int