rocblas_strsm Interface Reference

rocblas_strsm Interface Reference#

HIPFORT API Reference: hipfort_rocblas::rocblas_strsm Interface Reference
hipfort_rocblas::rocblas_strsm Interface Reference

BLAS Level 3 API. More...

Public Member Functions

integer(kind(rocblas_status_success)) function rocblas_strsm_ (handle, side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb)
 
integer(kind(rocblas_status_success)) function rocblas_strsm_rank_0 (handle, side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb)
 
integer(kind(rocblas_status_success)) function rocblas_strsm_rank_1 (handle, side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb)
 
integer(kind(rocblas_status_success)) function rocblas_strsm_full_rank (handle, side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb)
 

Detailed Description

BLAS Level 3 API.

The trsm functions solve:

op(A)*X = alpha*B or  X*op(A) = alpha*B,

where alpha is a scalar, X and B are m by n matrices, A is a 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 preallocated memory found in the handle to increase overall performance (where k is m when rocblas_side_left and n when rocblas_side_right).

Although not widespread, some gemm kernels used by trsm might use atomic operations. See Atomic Operations in the API Reference Guide for more information.

Parameters
[in]handle- [rocblas_handle] handle to the rocBLAS library context queue.
[in]side- [rocblas_side]
  • rocblas_side_left: op(A)*X = alpha*B
  • rocblas_side_right: X*op(A) = alpha*B
[in]uplo- [rocblas_fill]
  • rocblas_fill_upper: A is an upper triangular matrix.
  • rocblas_fill_lower: A is a lower triangular matrix.
[in]transA- [rocblas_operation]
  • transB: op(A) = A.
  • rocblas_operation_transpose: op(A) = A^T
  • rocblas_operation_conjugate_transpose: op(A) = A^H
[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.
[in]m- [rocblas_int] m specifies the number of rows of B. m >= 0.
[in]n- [rocblas_int] n specifies the number of columns of B. n >= 0.
[in]alphadevice 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.
[in]A- device pointer storing matrix A. of dimension ( lda, k ), where k is m when rocblas_side_left and n when rocblas_side_right. Only the upper/lower triangular part is accessed.
[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 ).
[in,out]B- device pointer storing matrix B.
[in]ldb- [rocblas_int] ldb specifies the first dimension of B. ldb >= max( 1, m ).

Member Function/Subroutine Documentation

◆ rocblas_strsm_()

integer(kind(rocblas_status_success)) function hipfort_rocblas::rocblas_strsm::rocblas_strsm_ ( 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,
real(c_float)  alpha,
type(c_ptr), value  a,
integer(c_int), value  lda,
type(c_ptr), value  b,
integer(c_int), value  ldb 
)

◆ rocblas_strsm_full_rank()

integer(kind(rocblas_status_success)) function hipfort_rocblas::rocblas_strsm::rocblas_strsm_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,
real(c_float)  alpha,
real(c_float), dimension(:,:), target  a,
integer(c_int)  lda,
real(c_float), dimension(:,:), target  b,
integer(c_int)  ldb 
)

◆ rocblas_strsm_rank_0()

integer(kind(rocblas_status_success)) function hipfort_rocblas::rocblas_strsm::rocblas_strsm_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,
real(c_float)  alpha,
real(c_float), target  a,
integer(c_int)  lda,
real(c_float), target  b,
integer(c_int)  ldb 
)

◆ rocblas_strsm_rank_1()

integer(kind(rocblas_status_success)) function hipfort_rocblas::rocblas_strsm::rocblas_strsm_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,
real(c_float)  alpha,
real(c_float), dimension(:), target  a,
integer(c_int)  lda,
real(c_float), dimension(:), target  b,
integer(c_int)  ldb 
)

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