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]¶
初始化密集(状态向量)表示中的纯态。
- 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