Skip to main content

dsygvd

Function dsygvd 

Source
pub fn dsygvd(
    ctx: &Context,
    eig_type: EigenType,
    mode: EigenMode,
    fill_mode: FillMode,
    n: usize,
    a: &mut DeviceMemory<f64>,
    lda: usize,
    b: &mut DeviceMemory<f64>,
    ldb: usize,
    w: &mut DeviceMemory<f64>,
    workspace: &mut DeviceMemory<f64>,
    dev_info: &mut DeviceMemory<i32>,
) -> Result<()>
Expand description

Use the matching buffer-size helper to calculate the sizes needed for pre-allocated workspace.

The S and D data types are real valued single and double precision, respectively.

The C and Z data types are complex valued single and double precision, respectively.

Computes eigenvalues and eigenvectors of a symmetric (Hermitian) $n \times n$ matrix-pair (A,B). The generalized symmetric-definite eigenvalue problem depends on EigenType.

where the matrix B is positive definite. Λ is a real $n \times n$ diagonal matrix. The diagonal elements of Λ are the eigenvalues of (A, B) in ascending order. V is an $n \times n$ orthogonal matrix. The eigenvectors are normalized according to the selected generalized eigenvalue problem.

Provide workspace through workspace. Use the corresponding *_buffer_size helper to query the required workspace length. The workspace size in bytes is size_of::<T>() * lwork.

If the reported dev_info value is -i, the ith parameter is invalid. If dev_info = i with 0 < i <= n and mode is EigenMode::NoVector, i off-diagonal elements of an intermediate tridiagonal form did not converge to zero. If dev_info = N + i with i > 0, then the leading minor of order i of B is not positive definite. The factorization of B could not be completed and no eigenvalues or eigenvectors were computed.

If mode is EigenMode::Vector, A contains the orthogonal eigenvectors of the matrix A. The eigenvectors are computed by divide and conquer algorithm.

§Errors

Returns an error if cuSOLVER has not been initialized, if the matrix dimensions, leading dimensions, generalized eigenproblem type, eigen mode, or fill mode are invalid, if the current GPU architecture is unsupported, or if cuSOLVER reports an internal failure.