SLATE 2024.05.31
Software for Linear Algebra Targeting Exascale
Loading...
Searching...
No Matches
herk: Hermitian rank k update

\(C = \alpha A A^H + \beta C\) where \(C\) is Hermitian More...

Functions

template<typename scalar_t >
void slate::herk (blas::real_type< scalar_t > alpha, Matrix< scalar_t > &A, blas::real_type< scalar_t > beta, HermitianMatrix< scalar_t > &C, Options const &opts)
 Distributed parallel Hermitian rank k update.
 

Detailed Description

\(C = \alpha A A^H + \beta C\) where \(C\) is Hermitian

Function Documentation

◆ herk()

template<typename scalar_t >
void slate::herk ( blas::real_type< scalar_t >  alpha,
Matrix< scalar_t > &  A,
blas::real_type< scalar_t >  beta,
HermitianMatrix< scalar_t > &  C,
Options const &  opts 
)

Distributed parallel Hermitian rank k update.

Performs the Hermitian rank k operation

\[ C = \alpha A A^H + \beta C, \]

where alpha and beta are scalars, C is an n-by-n Hermitian matrix, and A is an n-by-k matrix. The matrices can be conjugate-transposed beforehand, e.g.,

auto AT = slate::conj_transpose( A );
slate::herk( alpha, AT, beta, C );

Complexity (in real): \(\approx k n^{2}\) flops.

Template Parameters
scalar_tOne of float, double, std::complex<float>, std::complex<double>.
Parameters
[in]alphaThe real scalar alpha.
[in]AThe n-by-k matrix A.
[in]betaThe real scalar beta.
[in,out]COn entry, the n-by-n Hermitian matrix C. On exit, overwritten by the result \(C = \alpha A A^H + \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.