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] handle rocblas_handle. [in] uplo rocblas_fill.
Specifies whether B is upper or lower bidiagonal.[in] n rocblas_int. n >= 0.
The number of rows and columns of matrix B.[in] nv rocblas_int. nv >= 0.
The number of columns of matrix V.[in] nu rocblas_int. nu >= 0.
The number of rows of matrix U.[in] nc rocblas_int. nu >= 0.
The number of columns of matrix C.[in,out] D pointer 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] E pointer 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] V pointer 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] ldv rocblas_int. ldv >= n if nv > 0, or ldv >=1 if nv = 0.
The leading dimension of V.[in,out] U pointer 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] ldu rocblas_int. ldu >= nu.
The leading dimension of U.[in,out] C pointer 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] ldc rocblas_int. ldc >= n if nc > 0, or ldc >=1 if nc = 0.
The leading dimension of C.[out] info pointer 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: