rocsolver_chegvx_batched Interface Reference#
The HEGVX_BATCHED functions compute a set of the eigenvalues and optionally the corresponding eigenvectors of a batch of complex generalized Hermitian-definite eigenproblems. More...
Public Member Functions | |
| integer(kind(rocblas_status_success)) function | rocsolver_chegvx_batched_ (handle, itype, evect, erange, uplo, n, a, lda, b, ldb, vl, vu, il, iu, abstol, nev, w, stridew, z, ldz, ifail, stridef, myinfo, batch_count) |
Detailed Description
The HEGVX_BATCHED functions compute a set of the eigenvalues and optionally the corresponding eigenvectors of a batch of complex generalized Hermitian-definite eigenproblems.
For each instance in the batch, the problem solved by this function is either of the form
\[ \begin{array}{cl} A_l X_l = \lambda B_l X_l & \: \text{1st form,}\\% A_l B_l X_l = \lambda X_l & \: \text{2nd form, or}\\% B_l A_l X_l = \lambda X_l & \: \text{3rd form,} \end{array} \]
depending on the value of itype. The eigenvectors are computed depending on the value of evect.
When computed, the matrix \(Z_l\) of eigenvectors is normalized as follows:
\[ \begin{array}{cl} Z_l^H B_l^{} Z_l^{}=I & \: \text{if 1st or 2nd form, or}\\% Z_l^H B_l^{-1} Z_l^{}=I & \: \text{if 3rd form.} \end{array} \]
This function computes all the eigenvalues, all the eigenvalues in the half-open interval \((vl, vu]\), or the il -th through iu -th eigenvalues, depending on the value of erange. If evect is rocblas_evect_original, the eigenvectors for these eigenvalues will be computed as well.
- Parameters
-
[in] handle - rocblas_handle. [in] itype - rocblas_eform. Specifies the form of the generalized eigenproblems.[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] erange - rocblas_erange. Specifies the type of range or interval of the eigenvalues to be computed.[in] uplo - rocblas_fill. Specifies whether the upper or lower parts of the matrices A_l and B_l are stored. If uplo indicates lower (or upper), then the upper (or lower) parts of A_l and B_l are not used. [in] n - rocblas_int. n >= 0. The matrix dimensions. [in,out] A - Array of pointers to type. Each pointer points to an array on the GPU of dimension lda*n. On entry, the matrices A_l. On exit, the contents of A_l are destroyed. [in] lda - rocblas_int. lda >= n. Specifies the leading dimension of matrices A_l. [out] B - Array of pointers to type. Each pointer points to an array on the GPU of dimension ldb*n. On entry, the Hermitian positive definite matrices B_l. On exit, the triangular factor of B_l as returned by POTRF_BATCHED. [in] ldb - rocblas_int. ldb >= n. Specifies the leading dimension of B_l. [in] vl - real type. vl < vu. The lower bound of the search interval (vl, vu]. Ignored if range indicates to look for all the eigenvalues of A_l or the eigenvalues within a set of indices. [in] vu - real type. vl < vu. The upper bound of the search interval (vl, vu]. Ignored if range indicates to look for all the eigenvalues of A_l or the eigenvalues within a set of indices. [in] il - rocblas_int. il = 1 if n = 0, and 1 <= il <= iu otherwise. The index of the smallest eigenvalue to be computed. Ignored if range indicates to look for all the eigenvalues of A_l or the eigenvalues in a half-open interval. [in] iu - rocblas_int. iu = 0 if n = 0, and 1 <= il <= iu otherwise. The index of the largest eigenvalue to be computed. Ignored if range indicates to look for all the eigenvalues of A_l or the eigenvalues in a half-open interval. [in] abstol - real type. The absolute tolerance. An eigenvalue is considered to be located if it lies in an interval whose width is <= abstol. If abstol is negative, then machine-epsilon times the 1-norm of the tridiagonal form of A_l will be used as the tolerance. If abstol=0, then the tolerance will be set to twice the underflow threshold. This is the tolerance that could get the most accurate results. [out] nev - pointer to rocblas_int. Array of batch_count integers on the GPU. The total number of eigenvalues found. If erange is rocblas_erange_all, nev[l] = n. If erange is rocblas_erange_index, nev[l] = iu - il + 1. Otherwise, 0 <= nev[l] <= n. [out] W - pointer to real type. Array on the GPU (the size depends on the value of strideW). The first nev[l] elements contain the computed eigenvalues. (The remaining elements can be used as workspace for internal computations.) [in] strideW - rocblas_stride. Stride from the start of one vector W_l to the next one W_(l+1). There is no restriction for the value of strideW. The normal use case is strideW >= n. [out] Z - Array of pointers to type. Each pointer points to an array on the GPU of dimension ldz*nev[l]. On exit, if evect is not rocblas_evect_none and info[l] = 0, the first nev[l] columns contain the eigenvectors of A_l corresponding to the output eigenvalues. Not referenced if evect is rocblas_evect_none. - Note: If erange is rocblas_range_value, then the values of nev[l] are not known in advance. The user should ensure that Z_l is large enough to hold n columns, as all n columns can be used as workspace for internal computations.
[in] ldz - rocblas_int. ldz >= n. Specifies the leading dimension of matrices Z_l. [out] ifail - pointer to rocblas_int. Array on the GPU (the size depends on the value of strideF). If info[l] = 0, the first nev[l] elements of ifail_l are zero. If info[l] = i <= n, ifail_l contains the indices of the i eigenvectors that failed to converge. Not referenced if evect is rocblas_evect_none. [in] strideF - rocblas_stride. Stride from the start of one vector ifail_l to the next one ifail_(l+1). There is no restriction for the value of strideF. The normal use case is strideF >= n. [out] myInfo - pointer to rocblas_int. Array of batch_count integers on the GPU. If info[l] = 0, successful exit of batch instance l. If info[l] = i <= n, i columns of Z_l did not converge. If info[l] = n + i, the leading minor of order i of B_l is not positive definite. [in] batch_count - rocblas_int. batch_count >= 0. Number of matrices in the batch.
Member Function/Subroutine Documentation
◆ rocsolver_chegvx_batched_()
| integer(kind(rocblas_status_success)) function hipfort_rocsolver::rocsolver_chegvx_batched::rocsolver_chegvx_batched_ | ( | 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, | ||
| real(c_float), value | abstol, | ||
| type(c_ptr), value | nev, | ||
| type(c_ptr), value | w, | ||
| integer(c_int64_t), value | stridew, | ||
| type(c_ptr), value | z, | ||
| integer(c_int), value | ldz, | ||
| type(c_ptr), value | ifail, | ||
| integer(c_int64_t), value | stridef, | ||
| type(c_ptr), value | myinfo, | ||
| integer(c_int), value | batch_count | ||
| ) |
The documentation for this interface was generated from the following file: