cuquantum.cutensornet.experimental.NetworkOperator¶
- class cuquantum.cutensornet.experimental.NetworkOperator(state_mode_extents, dtype='complex128', options=None)[源代码]¶
创建张量网络算符对象。
- 参数
state_mode_extents – 一个整数序列,指定所有状态模式的维度。
dtype –
一个字符串,指定张量网络算符的数据类型,当前支持以下数据类型
'float32'
'float64'
'complex64'
'complex128'
(默认)
options – 将状态计算的选项指定为
NetworkOptions
对象。或者,也可以提供包含NetworkOptions
构造函数参数的dict
。NetworkOptions
对象。如果未指定,则值将设置为默认构造的NetworkOptions
对象。
方法
- append_mpo(coefficient, modes, mpo_tensors, stream=None)[源代码]¶
将矩阵乘积算符 (MPO) 组件附加到张量网络算符。
- 参数
coefficient – 完全张量积的系数标量。
modes – 一个整数序列,指定每个 MPO 在其上作用的模式。
mpo_tensors – 每个 MPO 操作数的张量(类似 ndarray 的对象)序列。当前支持的类型为
numpy.ndarray
,cupy.ndarray
,和torch.Tensor
。每个操作数的模式预计遵循pknb
的顺序,其中p
表示连接到前一个 MPO 张量的模式,n
表示连接到下一个 MPO 张量的模式,k
表示 ket 模式,b
表示 bra 模式。请注意,目前仅支持具有开放边界条件的 MPO,因此第一个和最后一个 MPO 张量中不应存在p
和n
模式。请注意,此处 bra 和 ket 模式的相对顺序与append_product()
中的operand
不同。stream – 提供 CUDA 流以用于附加张量积(如果操作数在 CPU 上提供,则用于将操作数复制到 GPU)。可接受的输入包括
cudaStream_t
(作为 Pythonint
),cupy.cuda.Stream
, 和torch.cuda.Stream
。如果未提供流,则将使用当前流。
- append_product(coefficient, modes, tensors, stream=None)[源代码]¶
将张量积组件附加到张量网络算符。
- 参数
coefficient – 完全张量积的系数标量。
modes – 一个嵌套的整数序列,表示
tensors
中每个操作数作用的模式。tensors – 每个张量操作数的张量(类似 ndarray 的对象)序列。当前支持的类型为
numpy.ndarray
,cupy.ndarray
,和torch.Tensor
。每个操作数的模式预计按ABC...abc...
排序,其中ABC...
表示输出 bra 模式,abc...
表示对应于modes
的输入 ket 模式。stream – 提供 CUDA 流以用于附加张量积(如果操作数在 CPU 上提供,则用于将操作数复制到 GPU)。可接受的输入包括
cudaStream_t
(作为 Pythonint
),cupy.cuda.Stream
, 和torch.cuda.Stream
。如果未提供流,则将使用当前流。
- classmethod from_pauli_strings(pauli_strings, dtype='complex128', backend='cupy', options=None, stream=None)[源代码]¶
从给定的泡利字符串生成张量网络算符对象。
- 参数
pauli_strings – 一个字典,将泡利字符串映射到相应的系数。或者可以是单个泡利字符串。
dtype –
一个字符串,指定张量网络算符的数据类型,当前支持以下数据类型
'complex64'
'complex128'
(默认)
backend – 一个字符串,指定设备张量操作数的 ndarray 后端。当前支持
'cupy'
(默认) 和'torch'
。options – 将状态计算的选项指定为
NetworkOptions
对象。或者,也可以提供包含NetworkOptions
构造函数参数的dict
。NetworkOptions
对象。如果未指定,则值将设置为默认构造的NetworkOptions
对象。stream – 提供 CUDA 流以用于张量网络算符构造,这对于流排序操作(如分配内存)是必需的。可接受的输入包括
cudaStream_t
(作为 Pythonint
),cupy.cuda.Stream
, 和torch.cuda.Stream
。如果未提供流,则将使用当前流。