SLATE 2024.05.31
Software for Linear Algebra Targeting Exascale
Loading...
Searching...
No Matches

Functions

template<typename scalar_t >
void slate::hegst (int64_t itype, HermitianMatrix< scalar_t > &A, HermitianMatrix< scalar_t > &B, Options const &opts)
 Distributed parallel reduction of a complex Hermitian positive-definite generalized eigenvalue problem to the standard form.
 

Detailed Description

Function Documentation

◆ hegst()

template<typename scalar_t >
void slate::hegst ( int64_t  itype,
HermitianMatrix< scalar_t > &  A,
HermitianMatrix< scalar_t > &  B,
Options const &  opts 
)

Distributed parallel reduction of a complex Hermitian positive-definite generalized eigenvalue problem to the standard form.

Reduces a complex Hermitian positive-definite generalized eigenvalue problem to standard form, as follows:

itype Problem
itype = 1 \(A x = \lambda B x\)
itype = 2 \(A B x = \lambda x\)
itype = 3 \(B A x = \lambda x\)

Before calling slate::hegst, you must call slate::potrf to compute the Cholesky factorization: \(B = L L^H\) or \(B = U^H U\).

Template Parameters
scalar_tOne of float, double, std::complex<float>, std::complex<double>.
Parameters
[in]itype
  • itype = 1: Compute \(A x = \lambda B x\);
  • itype = 2: Compute \(A B x = \lambda x\);
  • itype = 3: Compute \(B A x = \lambda x\).
[in,out]AOn entry, the n-by-n Hermitian matrix \(A\). On exit, the upper or lower triangle is overwritten by the upper or lower triangle of C, as follows:
  • itype = 1:
    • A.uplo() = Uplo::Lower: \(C = L^{-1} A L^{-H}\);
    • A.uplo() = Uplo::Upper: \(C = U^{-H} A U^{-1}\).
  • itype = 2 or 3:
    • A.uplo() = Uplo::Lower: \(C = L^H A L\);
    • A.uplo() = Uplo::Upper: \(C = U A U^H\).
[in]BOn entry, the triangular factor from the Cholesky factorization of \(B\), as returned by |slatepotrf|.
[in]optsAdditional options, as map of name = value pairs. Possible options:
  • Option::Lookahead: Number of panels to overlap with matrix updates. 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.

TODO: return value