Skip to main content

dsyevdx

Function dsyevdx 

Source
pub fn dsyevdx(
    ctx: &Context,
    mode: EigenMode,
    range: EigenRange,
    fill_mode: FillMode,
    n: usize,
    a: &mut DeviceMemory<f64>,
    lda: usize,
    value_range: (f64, f64),
    index_range: (usize, usize),
    w: &mut DeviceMemory<f64>,
    workspace: &mut DeviceMemory<f64>,
    dev_info: &mut DeviceMemory<i32>,
) -> Result<usize>
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 all or selection of the eigenvalues and optionally eigenvectors of a symmetric (Hermitian) $n \times n$ matrix A. The standard symmetric eigenvalue problem is $A V = V \Lambda$, where Λ is a real n×h_meig diagonal matrix. V is an n×h_meig unitary matrix. h_meig is the number of eigenvalues/eigenvectors computed by the operation, h_meig is equal to n when the whole spectrum is requested, for example with range = EigenRange::All. 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 selection, eigen mode, or fill mode are invalid, if the current GPU architecture is unsupported, or if cuSOLVER reports an internal failure.