Skip to main content

sgebrd

Function sgebrd 

Source
pub fn sgebrd(
    ctx: &Context,
    m: usize,
    n: usize,
    a: &mut DeviceMemory<f32>,
    lda: usize,
    d: &mut DeviceMemory<f32>,
    e: &mut DeviceMemory<f32>,
    tauq: &mut DeviceMemory<f32>,
    taup: &mut DeviceMemory<f32>,
    workspace: &mut DeviceMemory<f32>,
    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 $m \times n$ matrix A to a real upper or lower bidiagonal form B by an orthogonal transformation: $Q^{H}\cdot A\cdot P = B$.

If m >= n, B is upper bidiagonal; if m < n, B is lower bidiagonal.

The matrix Q and P are overwritten into matrix A in the following sense:

  • If m >= n, the diagonal and first superdiagonal are overwritten with the upper bidiagonal matrix B. Elements below the diagonal, together with tauq, represent Q; elements above the first superdiagonal, together with taup, represent P.
  • If m < n, the diagonal and first subdiagonal are overwritten with the lower bidiagonal matrix B. Elements below the first subdiagonal, together with tauq, represent Q; elements above the diagonal, together with taup, represent P.

Provide workspace through workspace. Use the corresponding *_buffer_size helper to query the required workspace length.

If the reported dev_info value is -i, the ith parameter is invalid.

gebrd only supports m >= n.

ยงErrors

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