rocsolver_sbdsqr Interface Reference

rocsolver_sbdsqr Interface Reference#

HIPFORT API Reference: hipfort_rocsolver::rocsolver_sbdsqr Interface Reference
hipfort_rocsolver::rocsolver_sbdsqr Interface Reference

BDSQR computes the singular value decomposition (SVD) of an n-by-n bidiagonal matrix B, using the implicit QR algorithm. More...

Public Member Functions

integer(kind(rocblas_status_success)) function rocsolver_sbdsqr_ (handle, uplo, n, nv, nu, nc, D, E, V, ldv, U, ldu, C, ldc, myInfo)
 
integer(kind(rocblas_status_success)) function rocsolver_sbdsqr_full_rank (handle, uplo, n, nv, nu, nc, D, E, V, ldv, U, ldu, C, ldc, myInfo)
 
integer(kind(rocblas_status_success)) function rocsolver_sbdsqr_rank_0 (handle, uplo, n, nv, nu, nc, D, E, V, ldv, U, ldu, C, ldc, myInfo)
 
integer(kind(rocblas_status_success)) function rocsolver_sbdsqr_rank_1 (handle, uplo, n, nv, nu, nc, D, E, V, ldv, U, ldu, C, ldc, myInfo)
 

Detailed Description

BDSQR computes the singular value decomposition (SVD) of an n-by-n bidiagonal matrix B, using the implicit QR algorithm.

The SVD of B has the form:

\[ B = QSP' \]

where S is the n-by-n diagonal matrix of singular values of B, the columns of Q are the left singular vectors of B, and the columns of P are its right singular vectors.

The computation of the singular vectors is optional; this function accepts input matrices U (of size nu-by-n) and V (of size n-by-nv) that are overwritten with \(UQ\) and \(P'V\). If nu = 0 no left vectors are computed; if nv = 0 no right vectors are computed.

Optionally, this function can also compute \(Q'C\) for a given n-by-nc input matrix C.

Parameters
[in]handlerocblas_handle.
[in]uplorocblas_fill.
Specifies whether B is upper or lower bidiagonal.
[in]nrocblas_int. n >= 0.
The number of rows and columns of matrix B.
[in]nvrocblas_int. nv >= 0.
The number of columns of matrix V.
[in]nurocblas_int. nu >= 0.
The number of rows of matrix U.
[in]ncrocblas_int. nu >= 0.
The number of columns of matrix C.
[in,out]Dpointer to real type. Array on the GPU of dimension n.
On entry, the diagonal elements of B. On exit, if info = 0, the singular values of B in decreasing order; if info > 0, the diagonal elements of a bidiagonal matrix orthogonally equivalent to B.
[in,out]Epointer to real type. Array on the GPU of dimension n-1.
On entry, the off-diagonal elements of B. On exit, if info > 0, the off-diagonal elements of a bidiagonal matrix orthogonally equivalent to B (if info = 0 this matrix converges to zero).
[in,out]Vpointer to type. Array on the GPU of dimension ldv*nv.
On entry, the matrix V. On exit, it is overwritten with P'*V. (Not referenced if nv = 0).
[in]ldvrocblas_int. ldv >= n if nv > 0, or ldv >=1 if nv = 0.
The leading dimension of V.
[in,out]Upointer to type. Array on the GPU of dimension ldu*n.
On entry, the matrix U. On exit, it is overwritten with U*Q. (Not referenced if nu = 0).
[in]ldurocblas_int. ldu >= nu.
The leading dimension of U.
[in,out]Cpointer to type. Array on the GPU of dimension ldc*nc.
On entry, the matrix C. On exit, it is overwritten with Q'*C. (Not referenced if nc = 0).
[in]ldcrocblas_int. ldc >= n if nc > 0, or ldc >=1 if nc = 0.
The leading dimension of C.
[out]infopointer to a rocblas_int on the GPU.
If info = 0, successful exit. If info = i > 0, i elements of E have not converged to zero.

Member Function/Subroutine Documentation

◆ rocsolver_sbdsqr_()

integer(kind(rocblas_status_success)) function hipfort_rocsolver::rocsolver_sbdsqr::rocsolver_sbdsqr_ ( type(c_ptr), value  handle,
integer(kind(rocblas_fill_upper)), value  uplo,
integer(c_int), value  n,
integer(c_int), value  nv,
integer(c_int), value  nu,
integer(c_int), value  nc,
type(c_ptr), value  D,
type(c_ptr), value  E,
type(c_ptr), value  V,
integer(c_int), value  ldv,
type(c_ptr), value  U,
integer(c_int), value  ldu,
type(c_ptr), value  C,
integer(c_int), value  ldc,
integer(c_int)  myInfo 
)

◆ rocsolver_sbdsqr_full_rank()

integer(kind(rocblas_status_success)) function hipfort_rocsolver::rocsolver_sbdsqr::rocsolver_sbdsqr_full_rank ( type(c_ptr)  handle,
integer(kind(rocblas_fill_upper))  uplo,
integer(c_int)  n,
integer(c_int)  nv,
integer(c_int)  nu,
integer(c_int)  nc,
real(c_float), dimension(:), target  D,
real(c_float), dimension(:), target  E,
real(c_float), dimension(:,:), target  V,
integer(c_int)  ldv,
real(c_float), dimension(:,:), target  U,
integer(c_int)  ldu,
real(c_float), dimension(:,:), target  C,
integer(c_int)  ldc,
integer(c_int)  myInfo 
)

◆ rocsolver_sbdsqr_rank_0()

integer(kind(rocblas_status_success)) function hipfort_rocsolver::rocsolver_sbdsqr::rocsolver_sbdsqr_rank_0 ( type(c_ptr)  handle,
integer(kind(rocblas_fill_upper))  uplo,
integer(c_int)  n,
integer(c_int)  nv,
integer(c_int)  nu,
integer(c_int)  nc,
real(c_float), target  D,
real(c_float), target  E,
real(c_float), target  V,
integer(c_int)  ldv,
real(c_float), target  U,
integer(c_int)  ldu,
real(c_float), target  C,
integer(c_int)  ldc,
integer(c_int)  myInfo 
)

◆ rocsolver_sbdsqr_rank_1()

integer(kind(rocblas_status_success)) function hipfort_rocsolver::rocsolver_sbdsqr::rocsolver_sbdsqr_rank_1 ( type(c_ptr)  handle,
integer(kind(rocblas_fill_upper))  uplo,
integer(c_int)  n,
integer(c_int)  nv,
integer(c_int)  nu,
integer(c_int)  nc,
real(c_float), dimension(:), target  D,
real(c_float), dimension(:), target  E,
real(c_float), dimension(:), target  V,
integer(c_int)  ldv,
real(c_float), dimension(:), target  U,
integer(c_int)  ldu,
real(c_float), dimension(:), target  C,
integer(c_int)  ldc,
integer(c_int)  myInfo 
)

The documentation for this interface was generated from the following file: