pub fn dsytrd(
ctx: &Context,
fill_mode: FillMode,
n: usize,
a: &mut DeviceMemory<f64>,
lda: usize,
d: &mut DeviceMemory<f64>,
e: &mut DeviceMemory<f64>,
tau: &mut DeviceMemory<f64>,
workspace: &mut DeviceMemory<f64>,
dev_info: &mut DeviceMemory<i32>,
) -> Result<()>Expand description
Use the matching buffer-size helper to calculate the required workspace size.
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.
Reduces a general symmetric (Hermitian) $n \times n$ matrix A to the
real symmetric tridiagonal form T by an orthogonal transformation:
$Q^{H}\cdot A\cdot Q = T$.
On output, A contains T and Householder reflection vectors.
If fill_mode is FillMode::Upper, the diagonal and first
superdiagonal of A are overwritten by T; elements above the first
superdiagonal, together with tau, represent Q.
If fill_mode is FillMode::Lower, the diagonal and first subdiagonal
of A are overwritten by T; elements below the first subdiagonal,
together with tau, represent Q.
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.
The problem size n is limited by n * lda <= INT32_MAX primarily due to the current implementation constraints.
ยงErrors
Returns an error if cuSOLVER has not been initialized, if the matrix dimensions, leading dimension, or fill mode are invalid, if the current GPU architecture is unsupported, or if cuSOLVER reports an internal failure.