rocsolver_ssytd2_strided_batched Interface Reference#
SYTD2_STRIDED_BATCHED computes the tridiagonal form of a batch of real symmetric matrices A_j. More...
Public Member Functions | |
integer(kind(rocblas_status_success)) function | rocsolver_ssytd2_strided_batched_ (handle, uplo, n, A, lda, strideA, D, strideD, E, strideE, tau, strideP, batch_count) |
integer(kind(rocblas_status_success)) function | rocsolver_ssytd2_strided_batched_full_rank (handle, uplo, n, A, lda, strideA, D, strideD, E, strideE, tau, strideP, batch_count) |
integer(kind(rocblas_status_success)) function | rocsolver_ssytd2_strided_batched_rank_0 (handle, uplo, n, A, lda, strideA, D, strideD, E, strideE, tau, strideP, batch_count) |
integer(kind(rocblas_status_success)) function | rocsolver_ssytd2_strided_batched_rank_1 (handle, uplo, n, A, lda, strideA, D, strideD, E, strideE, tau, strideP, batch_count) |
Detailed Description
SYTD2_STRIDED_BATCHED computes the tridiagonal form of a batch of real symmetric matrices A_j.
(This is the unblocked version of the algorithm).
The tridiagonal form of \(A_j\) is given by:
\[ T_j = Q_j' A_j Q_j \]
where \(T_j\) is symmetric tridiagonal and \(Q_j\) is an orthogonal matrix represented as the product of Householder matrices
\[ \begin{array}{cl} Q_j = H_{j_1}H_{j_2}\cdots H_{j_{n-1}} & \: \text{if uplo indicates lower, or}\newline Q_j = H_{j_{n-1}}H_{j_{n-2}}\cdots H_{j_1} & \: \text{if uplo indicates upper.} \end{array} \]
Each Householder matrix \(H_{j_i}\) is given by
\[ H_{j_i} = I - \text{tau}_j[i] \cdot v_{j_i} v_{j_i}' \]
where \(\text{tau}_j[i]\) is the corresponding Householder scalar. When uplo indicates lower, the first i elements of the Householder vector \(v_{j_i}\) are zero, and \(v_{j_i}[i+1] = 1\). If uplo indicates upper, the last n-i elements of the Householder vector \(v_{j_i}\) are zero, and \(v_{j_i}[i] = 1\).
- Parameters
-
[in] handle rocblas_handle. [in] uplo rocblas_fill.
Specifies whether the upper or lower part of the symmetric matrix A_j is stored. If uplo indicates lower (or upper), then the upper (or lower) part of A is not used.[in] n rocblas_int. n >= 0.
The number of rows and columns of the matrices A_j.[in,out] A pointer to type. Array on the GPU (the size depends on the value of strideA).
On entry, the matrices A_j to be factored. On exit, if upper, then the elements on the diagonal and superdiagonal contain the tridiagonal form T_j; the elements above the superdiagonal contain the first i-1 elements of the Householder vectors v_(j_i) stored as columns. If lower, then the elements on the diagonal and subdiagonal contain the tridiagonal form T_j; the elements below the subdiagonal contain the last n-i-1 elements of the Householder vectors v_(j_i) stored as columns.[in] lda rocblas_int. lda >= n.
The leading dimension of A_j.[in] strideA rocblas_stride.
Stride from the start of one matrix A_j to the next one A_(j+1). There is no restriction for the value of strideA. Normal use case is strideA >= lda*n.[out] D pointer to type. Array on the GPU (the size depends on the value of strideD).
The diagonal elements of T_j.[in] strideD rocblas_stride.
Stride from the start of one vector D_j to the next one D_(j+1). There is no restriction for the value of strideD. Normal use case is strideD >= n.[out] E pointer to type. Array on the GPU (the size depends on the value of strideE).
The off-diagonal elements of T_j.[in] strideE rocblas_stride.
Stride from the start of one vector E_j to the next one E_(j+1). There is no restriction for the value of strideE. Normal use case is strideE >= n-1.[out] tau pointer to type. Array on the GPU (the size depends on the value of strideP).
Contains the vectors tau_j of corresponding Householder scalars.[in] strideP rocblas_stride.
Stride from the start of one vector tau_j to the next one tau_(j+1). There is no restriction for the value of strideP. Normal use is strideP >= n-1.[in] batch_count rocblas_int. batch_count >= 0.
Number of matrices in the batch.
Member Function/Subroutine Documentation
◆ rocsolver_ssytd2_strided_batched_()
integer(kind(rocblas_status_success)) function hipfort_rocsolver::rocsolver_ssytd2_strided_batched::rocsolver_ssytd2_strided_batched_ | ( | type(c_ptr), value | handle, |
integer(kind(rocblas_fill_upper)), value | uplo, | ||
integer(c_int), value | n, | ||
type(c_ptr), value | A, | ||
integer(c_int), value | lda, | ||
integer(c_int64_t), value | strideA, | ||
type(c_ptr), value | D, | ||
integer(c_int64_t), value | strideD, | ||
type(c_ptr), value | E, | ||
integer(c_int64_t), value | strideE, | ||
real(c_float) | tau, | ||
integer(c_int64_t), value | strideP, | ||
integer(c_int), value | batch_count | ||
) |
◆ rocsolver_ssytd2_strided_batched_full_rank()
integer(kind(rocblas_status_success)) function hipfort_rocsolver::rocsolver_ssytd2_strided_batched::rocsolver_ssytd2_strided_batched_full_rank | ( | type(c_ptr) | handle, |
integer(kind(rocblas_fill_upper)) | uplo, | ||
integer(c_int) | n, | ||
real(c_float), dimension(:,:), target | A, | ||
integer(c_int) | lda, | ||
integer(c_int64_t) | strideA, | ||
real(c_float), dimension(:), target | D, | ||
integer(c_int64_t) | strideD, | ||
real(c_float), dimension(:), target | E, | ||
integer(c_int64_t) | strideE, | ||
real(c_float) | tau, | ||
integer(c_int64_t) | strideP, | ||
integer(c_int) | batch_count | ||
) |
◆ rocsolver_ssytd2_strided_batched_rank_0()
integer(kind(rocblas_status_success)) function hipfort_rocsolver::rocsolver_ssytd2_strided_batched::rocsolver_ssytd2_strided_batched_rank_0 | ( | type(c_ptr) | handle, |
integer(kind(rocblas_fill_upper)) | uplo, | ||
integer(c_int) | n, | ||
real(c_float), target | A, | ||
integer(c_int) | lda, | ||
integer(c_int64_t) | strideA, | ||
real(c_float), target | D, | ||
integer(c_int64_t) | strideD, | ||
real(c_float), target | E, | ||
integer(c_int64_t) | strideE, | ||
real(c_float) | tau, | ||
integer(c_int64_t) | strideP, | ||
integer(c_int) | batch_count | ||
) |
◆ rocsolver_ssytd2_strided_batched_rank_1()
integer(kind(rocblas_status_success)) function hipfort_rocsolver::rocsolver_ssytd2_strided_batched::rocsolver_ssytd2_strided_batched_rank_1 | ( | type(c_ptr) | handle, |
integer(kind(rocblas_fill_upper)) | uplo, | ||
integer(c_int) | n, | ||
real(c_float), dimension(:), target | A, | ||
integer(c_int) | lda, | ||
integer(c_int64_t) | strideA, | ||
real(c_float), dimension(:), target | D, | ||
integer(c_int64_t) | strideD, | ||
real(c_float), dimension(:), target | E, | ||
integer(c_int64_t) | strideE, | ||
real(c_float) | tau, | ||
integer(c_int64_t) | strideP, | ||
integer(c_int) | batch_count | ||
) |
The documentation for this interface was generated from the following file: