|
| void | occ::qm::cc::pgemm (Eigen::Ref< occ::Mat > C, Eigen::Ref< const occ::Mat > A, Eigen::Ref< const occ::Mat > B, bool accumulate=false, bool transA=false) |
| | C(m x n) = A(m x k) * B(k x n).
|
| |
| Eigen::Map< const occ::Mat > | occ::qm::cc::mat_view (const Eigen::Tensor< double, 4 > &t, Eigen::Index r, Eigen::Index c) |
| | View a contiguous (column-major) 4-tensor's data as an (r x c) matrix.
|
| |
| template<int N> |
| void | occ::qm::cc::ppermute (double *out, const double *A, const Eigen::array< Eigen::Index, N > &Adims, const Eigen::array< int, N > &perm) |
| | Parallel tensor permute (transpose): writes contiguous out = A.shuffle(perm) – out has dims Odim[k] = Adims[perm[k]] and out(j...) = A(source).
|
| |
| Eigen::Tensor< double, 4 > | occ::qm::cc::pcon2 (const Eigen::Tensor< double, 4 > &A, int a0, int a1, const Eigen::Tensor< double, 4 > &B, int b0, int b1) |
| | Parallel two-index contraction of two 4-tensors – a drop-in, multithreaded replacement for A.contract(B, {(a0,b0),(a1,b1)}).
|
| |
| template<int RA, int RB, int NC> |
| Eigen::Tensor< double, RA+RB - 2 *NC > | occ::qm::cc::pcon (const Eigen::Tensor< double, RA > &A, const Eigen::Tensor< double, RB > &B, const std::array< Eigen::IndexPair< int >, NC > &pairs) |
| | General N-index parallel tensor contraction – a drop-in, multithreaded replacement for A.contract(B, pairs) that routes through pgemm (BLAS), so it parallelises where Eigen's tensor contract() (serial gebp_kernel) does not.
|
| |