rocsolver_chegvdx Interface Reference

rocsolver_chegvdx Interface Reference#

HIPFORT API Reference: hipfort_rocsolver::rocsolver_chegvdx Interface Reference
hipfort_rocsolver::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]handlerocblas_handle. The GPU library context.
[in]ityperocblas_eform. Specifies the form of the generalized eigenproblem.
[in]evectrocblas_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]erangerocblas_erange. Specifies which eigenvalues to compute:
  • rocblas_erange_all
  • rocblas_erange_value
  • rocblas_erange_index
[in]uplorocblas_fill. Indicates whether the upper or lower part of A and B is stored. The opposite part is not referenced.
[in]nrocblas_int. Matrix order. n >= 0.
[in,out]AComplex array on the GPU of dimension (lda,n). On entry: Hermitian matrix A. On exit: destroyed.
[in]ldarocblas_int. Leading dimension of A. lda >= n.
[in,out]BComplex array on the GPU of dimension (ldb,n). On entry: Hermitian positive definite matrix B. On exit: triangular factor from POTRF.
[in]ldbrocblas_int. Leading dimension of B. ldb >= n.
[in]vlreal type. Lower bound of interval (vl, vu]. Ignored unless erange = rocblas_erange_value.
[in]vureal type. Upper bound of interval (vl, vu]. Ignored unless erange = rocblas_erange_value.
[in]ilrocblas_int. Index of smallest eigenvalue to be computed. Ignored unless erange = rocblas_erange_index.
[in]iurocblas_int. Index of largest eigenvalue to be computed. Ignored unless erange = rocblas_erange_index.
[out]nevrocblas_int (device). Number of eigenvalues found.
[out]Wreal array on the GPU of dimension n. First nev elements contain eigenvalues.
[out]ZComplex array on the GPU of dimension (ldz,nev). If evect /= rocblas_evect_none and info = 0, contains the eigenvectors.
[in]ldzrocblas_int. Leading dimension of Z. ldz >= n.
[out]inforocblas_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: