rocblas_ztrsm Interface Reference

rocblas_ztrsm Interface Reference#

HIPFORT API Reference: hipfort_rocblas::rocblas_ztrsm Interface Reference
hipfort_rocblas::rocblas_ztrsm Interface Reference

! More...

Public Member Functions

integer(kind(rocblas_status_success)) function rocblas_ztrsm_ (handle, side, uplo, transA, diag, m, n, alpha, A, lda, B, ldb)
 
integer(kind(rocblas_status_success)) function rocblas_ztrsm_full_rank (handle, side, uplo, transA, diag, m, n, alpha, A, lda, B, ldb)
 
integer(kind(rocblas_status_success)) function rocblas_ztrsm_rank_0 (handle, side, uplo, transA, diag, m, n, alpha, A, lda, B, ldb)
 
integer(kind(rocblas_status_success)) function rocblas_ztrsm_rank_1 (handle, side, uplo, transA, diag, m, n, alpha, A, lda, B, ldb)
 

Detailed Description

!

BLAS Level 3 API

\details

trsm solves

    op(A)X = alphaB or  Xop(A) = alphaB,

where alpha is a scalar, X and B are m by n matrices,
A is triangular matrix and op(A) is one of

    op( A ) = A   or   op( A ) = A^T   or   op( A ) = A^H.

The matrix X is overwritten on B.

Note about memory allocation:
When trsm is launched with a k evenly divisible by the internal block size of 128,
and is no larger than 10 of these blocks, the API takes advantage of utilizing pre-allocated
memory found in the handle to increase overall performance. This memory can be managed by using
the environment variable WORKBUF_TRSM_B_CHNK. When this variable is not set the device memory
used for temporary storage will default to 1 MB and may result in chunking, which in turn may
reduce performance. Under these circumstances it is recommended that WORKBUF_TRSM_B_CHNK be set
to the desired chunk of right hand sides to be used at a time.

(where k is m when rocblas_side_left and is n when rocblas_side_right)

@param[in]
handle    [rocblas_handle]
          handle to the rocblas library context queue.

@param[in]
side    [rocblas_side]
        rocblas_side_left:       op(A)X = alphaB.
        rocblas_side_right:      Xop(A) = alphaB.

@param[in]
uplo    [rocblas_fill]
        rocblas_fill_upper:  A is an upper triangular matrix.
        rocblas_fill_lower:  A is a  lower triangular matrix.

@param[in]
transA  [rocblas_operation]
        transB:    op(A) = A.
        rocblas_operation_transpose:      op(A) = A^T.
        rocblas_operation_conjugate_transpose:  op(A) = A^H.

@param[in]
diag    [rocblas_diagonal]
        rocblas_diagonal_unit:     A is assumed to be unit triangular.
        rocblas_diagonal_non_unit:  A is not assumed to be unit triangular.

@param[in]
m       [rocblas_int]
        m specifies the number of rows of B. m >= 0.

@param[in]
n       [rocblas_int]
        n specifies the number of columns of B. n >= 0.

@param[in]
alpha
        device pointer or host pointer specifying the scalar alpha. When alpha is
        &zero then A is not referenced and B need not be set before
        entry.

@param[in]
A       device pointer storing matrix A.
        of dimension ( lda, k ), where k is m
        when  rocblas_side_left  and
        is  n  when  rocblas_side_right
        only the upperlower triangular part is accessed.

@param[in]
lda     [rocblas_int]
        lda specifies the first dimension of A.
        if side = rocblas_side_left,  lda >= max( 1, m ),
        if side = rocblas_side_right, lda >= max( 1, n ).

@param[in,out]
B       device pointer storing matrix B.

@param[in]
ldb    [rocblas_int]
       ldb specifies the first dimension of B. ldb >= max( 1, m ).

Member Function/Subroutine Documentation

◆ rocblas_ztrsm_()

integer(kind(rocblas_status_success)) function hipfort_rocblas::rocblas_ztrsm::rocblas_ztrsm_ ( type(c_ptr), value  handle,
integer(kind(rocblas_side_left)), value  side,
integer(kind(rocblas_fill_upper)), value  uplo,
integer(kind(rocblas_operation_none)), value  transA,
integer(kind(rocblas_diagonal_non_unit)), value  diag,
integer(c_int), value  m,
integer(c_int), value  n,
complex(c_double_complex)  alpha,
type(c_ptr), value  A,
integer(c_int), value  lda,
type(c_ptr), value  B,
integer(c_int), value  ldb 
)

◆ rocblas_ztrsm_full_rank()

integer(kind(rocblas_status_success)) function hipfort_rocblas::rocblas_ztrsm::rocblas_ztrsm_full_rank ( type(c_ptr)  handle,
integer(kind(rocblas_side_left))  side,
integer(kind(rocblas_fill_upper))  uplo,
integer(kind(rocblas_operation_none))  transA,
integer(kind(rocblas_diagonal_non_unit))  diag,
integer(c_int)  m,
integer(c_int)  n,
complex(c_double_complex)  alpha,
complex(c_double_complex), dimension(:,:), target  A,
integer(c_int)  lda,
complex(c_double_complex), dimension(:,:), target  B,
integer(c_int)  ldb 
)

◆ rocblas_ztrsm_rank_0()

integer(kind(rocblas_status_success)) function hipfort_rocblas::rocblas_ztrsm::rocblas_ztrsm_rank_0 ( type(c_ptr)  handle,
integer(kind(rocblas_side_left))  side,
integer(kind(rocblas_fill_upper))  uplo,
integer(kind(rocblas_operation_none))  transA,
integer(kind(rocblas_diagonal_non_unit))  diag,
integer(c_int)  m,
integer(c_int)  n,
complex(c_double_complex)  alpha,
complex(c_double_complex), target  A,
integer(c_int)  lda,
complex(c_double_complex), target  B,
integer(c_int)  ldb 
)

◆ rocblas_ztrsm_rank_1()

integer(kind(rocblas_status_success)) function hipfort_rocblas::rocblas_ztrsm::rocblas_ztrsm_rank_1 ( type(c_ptr)  handle,
integer(kind(rocblas_side_left))  side,
integer(kind(rocblas_fill_upper))  uplo,
integer(kind(rocblas_operation_none))  transA,
integer(kind(rocblas_diagonal_non_unit))  diag,
integer(c_int)  m,
integer(c_int)  n,
complex(c_double_complex)  alpha,
complex(c_double_complex), dimension(:), target  A,
integer(c_int)  lda,
complex(c_double_complex), dimension(:), target  B,
integer(c_int)  ldb 
)

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