cuquantum.cutensornet.state_initialize_mps

cuquantum.cutensornet.state_initialize_mps(intptr_t handle, intptr_t tensor_network_state, int boundary_condition, extents_in, strides_in, state_tensors_in)[源代码]

对具有给定形状和数据的初始张量网络状态施加用户定义的 MPS(矩阵乘积态)分解。

参数
  • handle (intptr_t) – cuTensorNet 库句柄。

  • tensor_network_state (intptr_t) – 张量网络状态。

  • boundary_condition (BoundaryCondition) – 所选 MPS 表示形式的边界条件。

  • extents_in (object) –

    大小为 nStateModes 的数组,指定定义初始 MPS 表示形式的所有张量的范围。extents[i] 预计与模式顺序一致(第 (i-1) 个和第 i 个 MPS 张量之间的共享模式,第 i 个 MPS 张量的状态模式,第 i 个和第 (i+1) 个 MPS 张量之间的共享模式)。对于开放边界条件,第一个张量的模式简化为(状态模式,与第二个站点的共享模式),而最后一个张量的模式变为(与倒数第二个站点的共享模式,状态模式)。它可以是

    • 一个 int 作为指向嵌套序列的指针地址,或者

    • 一个 int 序列的 Python 序列,其中每个 int 都是指向有效 ‘int64_t’ 序列的指针地址,或者

    • 一个 int64_t 的嵌套 Python 序列。

  • strides_in (object) –

    大小为 nStateModes 的数组,指定所选 MPS 表示形式中所有张量的步幅。与 extents_in 类似,strides_in 也应与每个 MPS 张量的模式顺序一致。如果为 NULL,则将假定默认的广义列主步幅。它可以是

    • 一个 int 作为指向嵌套序列的指针地址,或者

    • 一个 int 序列的 Python 序列,其中每个 int 都是指向有效 ‘int64_t’ 序列的指针地址,或者

    • 一个 int64_t 的嵌套 Python 序列。

  • state_tensors_in (object) –

    大小为 nStateModes 的数组,指定定义所选 MPS 表示形式的所有张量的数据。如果为 NULL,则初始 MPS 分解状态将表示真空态。它可以是

    • 一个 int 作为指向数组的指针地址,或者

    • 一个 int 的 Python 序列(作为指针地址)。