Template Class MPOTNCuda

Class Documentation

template<class PrecisionT>
class MPOTNCuda

Class representing an Matrix Product Operator (MPO) object for the MPS backend. Any gate tensor can be represented as an MPO tensor network in the context of MPS. The gate tensor must be decomposed with respect to its target wires. Note that the only local target wires are supported. The non-adjacent target wires must be swapped to local before contructing the MPO tensor network. The MPO tensors’ modes order in an open boundary condition are: 2 3 2 | | | X&#8212;1&#8212;….&#8212;0&#8212;X&#8212;2&#8212;….&#8212;0&#8212;X | | | 0 1 1.

The extents of the MPO tensors are [bondL, 2, bondR, 2]. The bondL of the left side bound MPO tensor is 1 and the bondR of the right side bound MPO tensor is 1.

Note that the gate tensor should be permuted to ascending order and decomposed into MPO sites before passing to this class. Preprocess and postprocess with SWAP operations are required to ensure MPOs target at adjacent wires and the target wires are correct.

Template Parameters

PrecisionT – Floating point type.

Public Functions

inline explicit MPOTNCuda(const std::vector<std::vector<ComplexT>> &tensors, const std::vector<std::size_t> &wires, const std::size_t maxMPOBondDim, const std::size_t numQubits, const cutensornetHandle_t &cutensornetHandle, const cudaDataType_t &cudaDataType, const DevTag<int> &dev_tag)
inline auto getMPOOperator() const -> const cutensornetNetworkOperator_t&
inline auto getBondDims() const -> const std::vector<std::size_t>&
inline ~MPOTNCuda()