rocsolver_slarfb Interface Reference#
LARFB applies a block reflector H to a general m-by-n matrix A. More...
Public Member Functions | |
integer(kind(rocblas_status_success)) function | rocsolver_slarfb_ (handle, side, trans, myDirect, storev, m, n, k, V, ldv, T, ldt, A, lda) |
integer(kind(rocblas_status_success)) function | rocsolver_slarfb_full_rank (handle, side, trans, myDirect, storev, m, n, k, V, ldv, T, ldt, A, lda) |
integer(kind(rocblas_status_success)) function | rocsolver_slarfb_rank_0 (handle, side, trans, myDirect, storev, m, n, k, V, ldv, T, ldt, A, lda) |
integer(kind(rocblas_status_success)) function | rocsolver_slarfb_rank_1 (handle, side, trans, myDirect, storev, m, n, k, V, ldv, T, ldt, A, lda) |
Detailed Description
LARFB applies a block reflector H to a general m-by-n matrix A.
The block reflector H is applied in one of the following forms, depending on the values of side and trans:
\[ \begin{array}{cl} HA & \: \text{(No transpose from the left),}\newline H'A & \: \text{(Transpose or conjugate transpose from the left),}\newline AH & \: \text{(No transpose from the right), or}\newline AH' & \: \text{(Transpose or conjugate transpose from the right).} \end{array} \]
The block reflector H is defined as the product of k Householder matrices as
\[ \begin{array}{cl} H = H_1H_2\cdots H_k & \: \text{if direct indicates forward direction, or} \newline H = H_k\cdots H_2H_1 & \: \text{if direct indicates backward direction} \end{array} \]
H is never stored. It is calculated as
\[ H = I - VTV' \]
where the i-th column of matrix V contains the Householder vector associated with \(H_i\), if storev is column-wise; or
\[ H = I - V'TV \]
where the i-th row of matrix V contains the Householder vector associated with \(H_i\), if storev is row-wise. T is the associated triangular factor as computed by LARFT.
- Parameters
-
[in] handle rocblas_handle. [in] side rocblas_side.
Specifies from which side to apply H.[in] trans rocblas_operation.
Specifies whether the block reflector or its transpose/conjugate transpose is to be applied.[in] direct rocblas_direct.
Specifies the direction in which the Householder matrices are to be applied to generate H.[in] storev rocblas_storev.
Specifies how the Householder vectors are stored in matrix V.[in] m rocblas_int. m >= 0.
Number of rows of matrix A.[in] n rocblas_int. n >= 0.
Number of columns of matrix A.[in] k rocblas_int. k >= 1.
The number of Householder matrices.[in] V pointer to type. Array on the GPU of size ldv*k if column-wise, ldv*n if row-wise and applying from the right, or ldv*m if row-wise and applying from the left.
The matrix of Householder vectors.[in] ldv rocblas_int. ldv >= k if row-wise, ldv >= m if column-wise and applying from the left, or ldv >= n if column-wise and applying from the right.
Leading dimension of V.[in] T pointer to type. Array on the GPU of dimension ldt*k.
The triangular factor of the block reflector.[in] ldt rocblas_int. ldt >= k.
The leading dimension of T.[in,out] A pointer to type. Array on the GPU of size lda*n.
On entry, the matrix A. On exit, it is overwritten with H*A, A*H, H'*A, or A*H'.[in] lda rocblas_int. lda >= m.
Leading dimension of A.
Member Function/Subroutine Documentation
◆ rocsolver_slarfb_()
integer(kind(rocblas_status_success)) function hipfort_rocsolver::rocsolver_slarfb::rocsolver_slarfb_ | ( | type(c_ptr), value | handle, |
integer(kind(rocblas_side_left)), value | side, | ||
integer(kind(rocblas_operation_none)), value | trans, | ||
integer(kind(rocblas_forward_direction)), value | myDirect, | ||
integer(kind(rocblas_column_wise)), value | storev, | ||
integer(c_int), value | m, | ||
integer(c_int), value | n, | ||
integer(c_int), value | k, | ||
type(c_ptr), value | V, | ||
integer(c_int), value | ldv, | ||
type(c_ptr), value | T, | ||
integer(c_int), value | ldt, | ||
type(c_ptr), value | A, | ||
integer(c_int), value | lda | ||
) |
◆ rocsolver_slarfb_full_rank()
integer(kind(rocblas_status_success)) function hipfort_rocsolver::rocsolver_slarfb::rocsolver_slarfb_full_rank | ( | type(c_ptr) | handle, |
integer(kind(rocblas_side_left)) | side, | ||
integer(kind(rocblas_operation_none)) | trans, | ||
integer(kind(rocblas_forward_direction)) | myDirect, | ||
integer(kind(rocblas_column_wise)) | storev, | ||
integer(c_int) | m, | ||
integer(c_int) | n, | ||
integer(c_int) | k, | ||
real(c_float), dimension(:,:), target | V, | ||
integer(c_int) | ldv, | ||
real(c_float), dimension(:,:), target | T, | ||
integer(c_int) | ldt, | ||
real(c_float), dimension(:,:), target | A, | ||
integer(c_int) | lda | ||
) |
◆ rocsolver_slarfb_rank_0()
integer(kind(rocblas_status_success)) function hipfort_rocsolver::rocsolver_slarfb::rocsolver_slarfb_rank_0 | ( | type(c_ptr) | handle, |
integer(kind(rocblas_side_left)) | side, | ||
integer(kind(rocblas_operation_none)) | trans, | ||
integer(kind(rocblas_forward_direction)) | myDirect, | ||
integer(kind(rocblas_column_wise)) | storev, | ||
integer(c_int) | m, | ||
integer(c_int) | n, | ||
integer(c_int) | k, | ||
real(c_float), target | V, | ||
integer(c_int) | ldv, | ||
real(c_float), target | T, | ||
integer(c_int) | ldt, | ||
real(c_float), target | A, | ||
integer(c_int) | lda | ||
) |
◆ rocsolver_slarfb_rank_1()
integer(kind(rocblas_status_success)) function hipfort_rocsolver::rocsolver_slarfb::rocsolver_slarfb_rank_1 | ( | type(c_ptr) | handle, |
integer(kind(rocblas_side_left)) | side, | ||
integer(kind(rocblas_operation_none)) | trans, | ||
integer(kind(rocblas_forward_direction)) | myDirect, | ||
integer(kind(rocblas_column_wise)) | storev, | ||
integer(c_int) | m, | ||
integer(c_int) | n, | ||
integer(c_int) | k, | ||
real(c_float), dimension(:), target | V, | ||
integer(c_int) | ldv, | ||
real(c_float), dimension(:), target | T, | ||
integer(c_int) | ldt, | ||
real(c_float), dimension(:), target | A, | ||
integer(c_int) | lda | ||
) |
The documentation for this interface was generated from the following file: