rocsolver_slarfb Interface Reference

rocsolver_slarfb Interface Reference#

HIPFORT API Reference: hipfort_rocsolver::rocsolver_slarfb Interface Reference
hipfort_rocsolver::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]handlerocblas_handle.
[in]siderocblas_side.
Specifies from which side to apply H.
[in]transrocblas_operation.
Specifies whether the block reflector or its transpose/conjugate transpose is to be applied.
[in]directrocblas_direct.
Specifies the direction in which the Householder matrices are to be applied to generate H.
[in]storevrocblas_storev.
Specifies how the Householder vectors are stored in matrix V.
[in]mrocblas_int. m >= 0.
Number of rows of matrix A.
[in]nrocblas_int. n >= 0.
Number of columns of matrix A.
[in]krocblas_int. k >= 1.
The number of Householder matrices.
[in]Vpointer 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]ldvrocblas_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]Tpointer to type. Array on the GPU of dimension ldt*k.
The triangular factor of the block reflector.
[in]ldtrocblas_int. ldt >= k.
The leading dimension of T.
[in,out]Apointer 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]ldarocblas_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: