rocsolver_ssyevj_batched Interface Reference

rocsolver_ssyevj_batched Interface Reference#

HIPFORT API Reference: hipfort_rocsolver::rocsolver_ssyevj_batched Interface Reference
hipfort_rocsolver::rocsolver_ssyevj_batched Interface Reference

The SYEVJ_BATCHED functions compute the eigenvalues and optionally the eigenvectors of a batch of real symmetric matrices A_l. More...

Public Member Functions

integer(kind(rocblas_status_success)) function rocsolver_ssyevj_batched_ (handle, esort, evect, uplo, n, a, lda, abstol, residual, max_sweeps, n_sweeps, w, stridew, myinfo, batch_count)
 

Detailed Description

The SYEVJ_BATCHED functions compute the eigenvalues and optionally the eigenvectors of a batch of real symmetric matrices A_l.

The eigenvalues are found using the iterative Jacobi algorithm and returned in an order that depends on the value of esort. The eigenvectors are computed depending on the value of evect. The computed eigenvectors are orthonormal.

At the \(k\)-th iteration (or "sweep"), \(A_l\) is transformed by a product of Jacobi rotations \(V_l\) as

\[ A_l^{(k)} = V_l^H A_l^{(k-1)} V_l^{} \]

such that \(off(A_l^{(k)}) < off(A_l^{(k-1)})\), where \(A_l^{(0)} = A_l\) and \(off(A_l^{(k)})\) is the Frobenius norm of the off-diagonal elements of \(A_l^{(k)}\). As \(off(A_l^{(k)}) \rightarrow 0\), the diagonal elements of \(A_l^{(k)}\) increasingly resemble the eigenvalues of \(A_l\).

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]esort- rocblas_esort. Specifies the order of the returned eigenvalues. If esort is rocblas_esort_ascending, then the eigenvalues are sorted and returned in ascending order. If esort is rocblas_esort_none, then the order of the returned eigenvalues is unspecified.
[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 part of the symmetric matrices A_l is stored. If uplo indicates lower (or upper), then the upper (or lower) part of A_l is not used.
[in]n- rocblas_int. n >= 0. Number of rows and columns of matrices A_l.
[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 eigenvectors of A_l if they were computed and the algorithm converged. Otherwise, the contents of A_l are unchanged.
[in]lda- rocblas_int. lda >= n. Specifies the leading dimension of matrices A_l.
[in]abstol- type. The absolute tolerance. The algorithm is considered to have converged once off(A_l) is <= abstol. If abstol <= 0, then the tolerance will be set to machine precision.
[out]residual- pointer to type. Array of batch_count scalars on the GPU. The Frobenius norm of the off-diagonal elements of A_l (that is, off(A_l)) 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 rocblas_int. Array of batch_count integers on the GPU. The actual number of sweeps (iterations) used by the algorithm for each batch instance.
[out]W- pointer to type. Array on the GPU (the size depends on the value of strideW). The eigenvalues of A_l in increasing order.
[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]myInfo- pointer to rocblas_int. Array of batch_count integers on the GPU. If info[l] = 0, successful exit for matrix A_l. If info[l] = 1, the algorithm did not converge.
[in]batch_count- rocblas_int. batch_count >= 0. Number of matrices in the batch.

Member Function/Subroutine Documentation

◆ rocsolver_ssyevj_batched_()

integer(kind(rocblas_status_success)) function hipfort_rocsolver::rocsolver_ssyevj_batched::rocsolver_ssyevj_batched_ ( type(c_ptr), value  handle,
integer(kind(rocblas_esort_none)), value  esort,
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,
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,
integer(c_int64_t), value  stridew,
type(c_ptr), value  myinfo,
integer(c_int), value  batch_count 
)

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