Skip to main content

ssyevd

Function ssyevd 

Source
pub fn ssyevd(
    ctx: &Context,
    mode: EigenMode,
    fill_mode: FillMode,
    n: usize,
    a: &mut DeviceMemory<f32>,
    lda: usize,
    w: &mut DeviceMemory<f32>,
    workspace: &mut DeviceMemory<f32>,
    dev_info: &mut DeviceMemory<i32>,
) -> Result<()>
Expand description

Use the matching buffer-size helper to calculate the workspace length before allocating 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 A. The standard symmetric eigenvalue problem is $A Q = Q \Lambda$, where Λ is a real $n \times n$ diagonal matrix. V is an $n \times n$ unitary matrix. The diagonal elements of Λ are the eigenvalues of A in ascending order.

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 (greater than zero), i off-diagonal elements of an intermediate tridiagonal form did not converge to zero.

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

§Errors

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