rocsolver_ssygvj Interface Reference

rocsolver_ssygvj Interface Reference#

HIPFORT API Reference: hipfort_rocsolver::rocsolver_ssygvj Interface Reference
hipfort_rocsolver::rocsolver_ssygvj Interface Reference

The SYGVJ functions compute the eigenvalues and (optionally) eigenvectors of a real generalized symmetric-definite eigenproblem. More...

Public Member Functions

integer(kind(rocblas_status_success)) function rocsolver_ssygvj_ (handle, itype, evect, uplo, n, a, lda, b, ldb, abstol, residual, max_sweeps, n_sweeps, w, myinfo)
 

Detailed Description

The SYGVJ functions compute the eigenvalues and (optionally) eigenvectors of a real generalized symmetric-definite eigenproblem.

The problem solved by this function is either of the form

\[ \begin{array}{cl} A X = \lambda B X & \: \text{1st form,}\\% A B X = \lambda X & \: \text{2nd form, or}\\% B A X = \lambda X & \: \text{3rd form,} \end{array} \]

depending on the value of itype. The eigenvalues are found using the iterative Jacobi algorithm and returned in ascending order. The eigenvectors are computed depending on the value of evect.

When computed, the matrix Z of eigenvectors is normalized as follows:

\[ \begin{array}{cl} Z^T B Z=I & \: \text{if 1st or 2nd form, or}\\% Z^T B^{-1} Z=I & \: \text{if 3rd form.} \end{array} \]

Note
In order to carry out calculations, this method could potentially synchronize the stream contained within the rocblas_handle.
Parameters
[in]handle- rocblas_handle.
[in]itype- rocblas_eform. Specifies the form of the generalized eigenproblem.
[in]evect- rocblas_evect. Specifies whether the eigenvectors are to be computed. If evect is rocblas_evect_original, then the eigenvectors are computed. rocblas_evect_tridiagonal is not supported.
[in]uplo- rocblas_fill. Specifies whether the upper or lower parts of the matrices A and B are stored. If uplo indicates lower (or upper), then the upper (or lower) parts of A and B are not used.
[in]n- rocblas_int. n >= 0. The matrix dimensions.
[in,out]A- pointer to type. Array on the GPU of dimension lda*n. On entry, the symmetric matrix A. On exit, if evect is original, the normalized matrix Z of eigenvectors. If evect is none, then the upper or lower triangular part of the matrix A (including the diagonal) is destroyed, depending on the value of uplo.
[in]lda- rocblas_int. lda >= n. Specifies the leading dimension of A.
[out]B- pointer to type. Array on the GPU of dimension ldb*n. On entry, the symmetric positive definite matrix B. On exit, the triangular factor of B, as returned by POTRF.
[in]ldb- rocblas_int. ldb >= n. Specifies the leading dimension of B.
[in]abstol- type. The absolute tolerance. The algorithm is considered to have converged once the residual is <= abstol. If abstol <= 0, then the tolerance will be set to machine precision.
[out]residual- pointer to type on the GPU. The Frobenius norm of the off-diagonal elements at the final iteration.
[in]max_sweeps- rocblas_int. max_sweeps > 0. Maximum number of sweeps (iterations) to be used by the algorithm.
[out]n_sweeps- pointer to a rocblas_int on the GPU. The actual number of sweeps (iterations) used by the algorithm.
[out]W- pointer to type. Array on the GPU of dimension n. On exit, the eigenvalues in increasing order.
[out]myInfo- pointer to a rocblas_int on the GPU. If info = 0, successful exit. If info = 1, the algorithm did not converge. If info = n + i, the leading minor of order i of B is not positive definite.

Member Function/Subroutine Documentation

◆ rocsolver_ssygvj_()

integer(kind(rocblas_status_success)) function hipfort_rocsolver::rocsolver_ssygvj::rocsolver_ssygvj_ ( type(c_ptr), value  handle,
integer(kind(rocblas_eform_ax)), value  itype,
integer(kind(rocblas_evect_original)), value  evect,
integer(kind(rocblas_fill_upper)), value  uplo,
integer(c_int), value  n,
type(c_ptr), value  a,
integer(c_int), value  lda,
type(c_ptr), value  b,
integer(c_int), value  ldb,
real(c_float), value  abstol,
type(c_ptr), value  residual,
integer(c_int), value  max_sweeps,
type(c_ptr), value  n_sweeps,
type(c_ptr), value  w,
type(c_ptr), value  myinfo 
)

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