rocsolver_chegvdx Interface Reference#
HEGVDX computes a set of the eigenvalues and optionally the corresponding eigenvectors of a complex generalized Hermitian-definite eigenproblem. More...
Public Member Functions | |
| integer(kind(rocblas_status_success)) function | rocsolver_chegvdx_ (handle, itype, evect, erange, uplo, n, A, lda, B, ldb, vl, vu, il, iu, nev, W, Z, ldz, info) |
| integer(kind(rocblas_status_success)) function | rocsolver_chegvdx_full_rank (handle, itype, evect, erange, uplo, n, A, lda, B, ldb, vl, vu, il, iu, nev, W, Z, ldz, info) |
| integer(kind(rocblas_status_success)) function | rocsolver_chegvdx_rank_0 (handle, itype, evect, erange, uplo, n, A, lda, B, ldb, vl, vu, il, iu, nev, W, Z, ldz, info) |
| integer(kind(rocblas_status_success)) function | rocsolver_chegvdx_rank_1 (handle, itype, evect, erange, uplo, n, A, lda, B, ldb, vl, vu, il, iu, nev, W, Z, ldz, info) |
Detailed Description
HEGVDX computes a set of the eigenvalues and optionally the corresponding eigenvectors of a complex generalized Hermitian-definite eigenproblem.
Computes a set of the eigenvalues and optionally the corresponding eigenvectors of a complex generalized Hermitian-definite eigenproblem. The eignvectors are computed using a divide and conquer algorithm. The generalized eigenproblem solved is one of the following, depending on the value of itype:
- itype = rocblas_eform_1 : A * x = lambda * B * x
- itype = rocblas_eform_2 : A * B * x = lambda * x
- itype = rocblas_eform_3 : B * A * x = lambda * x
When eigenvectors are computed, the matrix Z is normalized such that Z^H * B * Z = I, i.e. the eigenvectors are B-orthonormal.
Depending on erange, the routine computes:
- all eigenvalues,
- eigenvalues in the half-open interval (vl, vu], or
- the il-th through iu-th eigenvalues (by index).
If evect = rocblas_evect_original, the eigenvectors corresponding to the selected eigenvalues are computed as well.
- Parameters
-
[in] handle rocblas_handle. The GPU library context. [in] itype rocblas_eform. Specifies the form of the generalized eigenproblem. [in] evect rocblas_evect. Specifies whether eigenvectors are computed. - rocblas_evect_none : eigenvalues only.
- rocblas_evect_original : eigenvalues and eigenvectors. Note: rocblas_evect_tridiagonal is not supported.
[in] erange rocblas_erange. Specifies which eigenvalues to compute: - rocblas_erange_all
- rocblas_erange_value
- rocblas_erange_index
[in] uplo rocblas_fill. Indicates whether the upper or lower part of A and B is stored. The opposite part is not referenced. [in] n rocblas_int. Matrix order. n >= 0. [in,out] A Complex array on the GPU of dimension (lda,n). On entry: Hermitian matrix A. On exit: destroyed. [in] lda rocblas_int. Leading dimension of A. lda >= n. [in,out] B Complex array on the GPU of dimension (ldb,n). On entry: Hermitian positive definite matrix B. On exit: triangular factor from POTRF. [in] ldb rocblas_int. Leading dimension of B. ldb >= n. [in] vl real type. Lower bound of interval (vl, vu]. Ignored unless erange = rocblas_erange_value. [in] vu real type. Upper bound of interval (vl, vu]. Ignored unless erange = rocblas_erange_value. [in] il rocblas_int. Index of smallest eigenvalue to be computed. Ignored unless erange = rocblas_erange_index. [in] iu rocblas_int. Index of largest eigenvalue to be computed. Ignored unless erange = rocblas_erange_index. [out] nev rocblas_int (device). Number of eigenvalues found. [out] W real array on the GPU of dimension n. First nev elements contain eigenvalues. [out] Z Complex array on the GPU of dimension (ldz,nev). If evect /= rocblas_evect_none and info = 0, contains the eigenvectors. [in] ldz rocblas_int. Leading dimension of Z. ldz >= n. [out] info rocblas_int (device). - 0: successful exit
- i (1 <= i <= n): i columns of Z failed to converge
- n + i: leading minor of order i of B not positive definite
- Note
- All matrices and arrays are GPU device memory.
- Eigenvectors (if requested) are B-orthonormal: Z^H * B * Z = I.
- Divide-and-conquer algorithm is used for eigenvectors.
- When erange = rocblas_erange_value, nev is not known in advance, allocate Z with n columns.
Member Function/Subroutine Documentation
◆ rocsolver_chegvdx_()
| integer(kind(rocblas_status_success)) function hipfort_rocsolver::rocsolver_chegvdx::rocsolver_chegvdx_ | ( | type(c_ptr), value | handle, |
| integer(kind(rocblas_eform_ax)), value | itype, | ||
| integer(kind(rocblas_evect_original)), value | evect, | ||
| integer(kind(rocblas_erange_all)), value | erange, | ||
| 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 | vl, | ||
| real(c_float), value | vu, | ||
| integer(c_int), value | il, | ||
| integer(c_int), value | iu, | ||
| integer(c_int), intent(out) | nev, | ||
| type(c_ptr), value | W, | ||
| type(c_ptr), value | Z, | ||
| integer(c_int), value | ldz, | ||
| integer(c_int), intent(out) | info | ||
| ) |
◆ rocsolver_chegvdx_full_rank()
| integer(kind(rocblas_status_success)) function hipfort_rocsolver::rocsolver_chegvdx::rocsolver_chegvdx_full_rank | ( | type(c_ptr), value | handle, |
| integer(kind(rocblas_eform_ax)), value | itype, | ||
| integer(kind(rocblas_evect_original)), value | evect, | ||
| integer(kind(rocblas_erange_all)), value | erange, | ||
| integer(kind(rocblas_fill_upper)), value | uplo, | ||
| integer(c_int), value | n, | ||
| complex(c_float_complex), dimension(:,:), target | A, | ||
| integer(c_int), value | lda, | ||
| complex(c_float_complex), dimension(:,:), target | B, | ||
| integer(c_int), value | ldb, | ||
| real(c_float), value | vl, | ||
| real(c_float), value | vu, | ||
| integer(c_int), value | il, | ||
| integer(c_int), value | iu, | ||
| integer(c_int), intent(out) | nev, | ||
| real(c_float), dimension(:), target | W, | ||
| complex(c_float_complex), dimension(:,:), target | Z, | ||
| integer(c_int), value | ldz, | ||
| integer(c_int), intent(out) | info | ||
| ) |
◆ rocsolver_chegvdx_rank_0()
| integer(kind(rocblas_status_success)) function hipfort_rocsolver::rocsolver_chegvdx::rocsolver_chegvdx_rank_0 | ( | type(c_ptr), value | handle, |
| integer(kind(rocblas_eform_ax)), value | itype, | ||
| integer(kind(rocblas_evect_original)), value | evect, | ||
| integer(kind(rocblas_erange_all)), value | erange, | ||
| integer(kind(rocblas_fill_upper)), value | uplo, | ||
| integer(c_int), value | n, | ||
| complex(c_float_complex), target | A, | ||
| integer(c_int), value | lda, | ||
| complex(c_float_complex), target | B, | ||
| integer(c_int), value | ldb, | ||
| real(c_float), value | vl, | ||
| real(c_float), value | vu, | ||
| integer(c_int), value | il, | ||
| integer(c_int), value | iu, | ||
| integer(c_int), intent(out) | nev, | ||
| real(c_float), target | W, | ||
| complex(c_float_complex), target | Z, | ||
| integer(c_int), value | ldz, | ||
| integer(c_int), intent(out) | info | ||
| ) |
◆ rocsolver_chegvdx_rank_1()
| integer(kind(rocblas_status_success)) function hipfort_rocsolver::rocsolver_chegvdx::rocsolver_chegvdx_rank_1 | ( | type(c_ptr), value | handle, |
| integer(kind(rocblas_eform_ax)), value | itype, | ||
| integer(kind(rocblas_evect_original)), value | evect, | ||
| integer(kind(rocblas_erange_all)), value | erange, | ||
| integer(kind(rocblas_fill_upper)), value | uplo, | ||
| integer(c_int), value | n, | ||
| complex(c_float_complex), dimension(:), target | A, | ||
| integer(c_int), value | lda, | ||
| complex(c_float_complex), dimension(:), target | B, | ||
| integer(c_int), value | ldb, | ||
| real(c_float), value | vl, | ||
| real(c_float), value | vu, | ||
| integer(c_int), value | il, | ||
| integer(c_int), value | iu, | ||
| integer(c_int), intent(out) | nev, | ||
| real(c_float), dimension(:), target | W, | ||
| complex(c_float_complex), dimension(:), target | Z, | ||
| integer(c_int), value | ldz, | ||
| integer(c_int), intent(out) | info | ||
| ) |
The documentation for this interface was generated from the following file: