SLATE 2024.05.31
Software for Linear Algebra Targeting Exascale
Loading...
Searching...
No Matches
symm: Symmetric matrix multiply

\(C = \alpha A B + \beta C\) or \(C = \alpha B A + \beta C\) where \(A\) is symmetric More...

Functions

template<typename scalar_t >
void slate::symm (Side side, scalar_t alpha, SymmetricMatrix< scalar_t > &A, Matrix< scalar_t > &B, scalar_t beta, Matrix< scalar_t > &C, Options const &opts)
 Distributed parallel symmetric matrix-matrix multiplication.
 

Detailed Description

\(C = \alpha A B + \beta C\) or \(C = \alpha B A + \beta C\) where \(A\) is symmetric

Function Documentation

◆ symm()

template<typename scalar_t >
void slate::symm ( Side  side,
scalar_t  alpha,
SymmetricMatrix< scalar_t > &  A,
Matrix< scalar_t > &  B,
scalar_t  beta,
Matrix< scalar_t > &  C,
Options const &  opts 
)

Distributed parallel symmetric matrix-matrix multiplication.

Performs one of the matrix-matrix operations

\[ C = \alpha A B + \beta C \]

or

\[ C = \alpha B A + \beta C \]

where alpha and beta are scalars, A is a symmetric matrix and B and C are m-by-n matrices.

Template Parameters
scalar_tOne of float, double, std::complex<float>, std::complex<double>.
Parameters
[in]sideWhether the symmetric matrix A appears on the left or right:
  • Side::Left: \(C = \alpha A B + \beta C\)
  • Side::Right: \(C = \alpha B A + \beta C\)
[in]alphaThe scalar alpha.
[in]A
  • If side = left, the m-by-m symmetric matrix A;
  • if side = right, the n-by-n symmetric matrix A.
[in]BThe m-by-n matrix B.
[in]betaThe scalar beta.
[in,out]COn entry, the m-by-n matrix C. On exit, overwritten by the result \(\alpha A B + \beta C\) or \(\alpha B A + \beta C\).
[in]optsAdditional options, as map of name = value pairs. Possible options:
  • Option::Lookahead: Number of blocks to overlap communication and computation. lookahead >= 0. Default 1.
  • Option::Target: Implementation to target. Possible values:
    • HostTask: OpenMP tasks on CPU host [default].
    • HostNest: nested OpenMP parallel for loop on CPU host.
    • HostBatch: batched BLAS on CPU host.
    • Devices: batched BLAS on GPU device.