hipblastrsmstridedbatchedex Interface Reference#
BLAS EX API. More...
Public Member Functions | |
| integer(kind(hipblas_status_success)) function | hipblastrsmstridedbatchedex_ (handle, side, uplo, transa, diag, m, n, alpha, a, lda, stridea, b, ldb, strideb, batchcount, inva, invasize, strideinva, computetype) |
Detailed Description
BLAS EX API.
The trsmStridedBatchedEx functions solve:
op(A_i)*X_i = alpha*B_i or X_i*op(A_i) = alpha*B_i,
for i = 1, ..., batchCount, where alpha is a scalar, X and B are strided batched m by n matrices, A is a strided batched triangular matrix, and op(A_i) is one of:
op( A_i ) = A_i or op( A_i ) = A_i^T or op( A_i ) = A_i^H.
Each matrix X_i is overwritten on B_i.
This function gives the user the ability to reuse each invA_i matrix between runs. If invA == NULL, hipblasTrsmStridedBatchedEx will automatically calculate each invA_i on every run.
Setting up invA: Each accepted invA_i matrix consists of the packed 128x128 inverses of the diagonal blocks of matrix A_i, followed by any smaller diagonal block that remains. To set up invA_i, it is recommended that hipblasTrtriBatched be used with matrix A_i as the input. invA is a contiguous piece of memory holding each invA_i.
Device memory of size 128 x k should be allocated for each invA_i ahead of time, where k is m when HIPBLAS_SIDE_LEFT and is n when HIPBLAS_SIDE_RIGHT. The actual number of elements in each invA_i should be passed as invAsize.
To begin, hipblasTrtriBatched must be called on the full 128x128 sized diagonal blocks of each matrix A_i. Below are the restricted parameters:
n= 128ldinvA= 128stride_invA= 128x128batchCount=k / 128,
Then any remaining block can be added:
n=k % 128invA=invA + stride_invA * previousBatchCountldinvA= 128batchCount= 1
- Parameters
-
[in] handle - [hipblasHandle_t] handle to the hipBLAS library context queue. [in] side - [hipblasSideMode_t] - HIPBLAS_SIDE_LEFT: op(A)*X = alpha*B.
- HIPBLAS_SIDE_RIGHT: X*op(A) = alpha*B.
[in] uplo - [hipblasFillMode_t] - HIPBLAS_FILL_MODE_UPPER: each A_i is an upper triangular matrix.
- HIPBLAS_FILL_MODE_LOWER: each A_i is a lower triangular matrix.
[in] transA - [hipblasOperation_t] - HIPBLAS_OP_N: op(A) = A.
- HIPBLAS_OP_T: op(A) = A^T.
- HIPBLAS_OP_C: op(A) = A^H.
[in] diag - [hipblasDiagType_t] - HIPBLAS_DIAG_UNIT: each A_i is assumed to be unit triangular.
- HIPBLAS_DIAG_NON_UNIT: each A_i is not assumed to be unit triangular.
[in] m - [int] m specifies the number of rows of each B_i. m >= 0. [in] n - [int] n specifies the number of columns of each B_i. n >= 0. [in] alpha - [void *] device pointer or host pointer specifying the scalar alpha. When alpha is &zero, then A is not referenced, and B does not need to be set before entry. [in] A - [void *] device pointer storing matrix A. Of dimension ( lda, k ), where k is m when HIPBLAS_SIDE_LEFT and is n when HIPBLAS_SIDE_RIGHT. Only the upper/lower triangular part is accessed. [in] lda - [int] lda specifies the first dimension of A. - If side = HIPBLAS_SIDE_LEFT, lda >= max( 1, m ).
- If side = HIPBLAS_SIDE_RIGHT, lda >= max( 1, n ).
[in] strideA - [hipblasStride] The stride between each A matrix. [in,out] B - [void *] device pointer pointing to first matrix B_i. Each B_i is of dimension ( ldb, n ). Before entry, the leading m by n part of each array B_i must contain the right-hand side of matrix B_i, and on exit is overwritten by the solution matrix X_i. [in] ldb - [int] ldb specifies the first dimension of each B_i. ldb >= max( 1, m ). [in] strideB - [hipblasStride] The stride between each B_i matrix. [in] batchCount - [int] specifies how many batches. [in] invA - [void *] device pointer storing the inverse diagonal blocks of each A_i. invA points to the first invA_1. Each invA_i is of dimension ( ld_invA, k ), where k is m when HIPBLAS_SIDE_LEFT and is n when HIPBLAS_SIDE_RIGHT. ld_invA must be equal to 128. [in] invAsize - [int] invAsize specifies the number of elements of device memory in each invA_i. [in] strideInvA - [hipblasStride] The stride between each invA matrix. [in] computeType [hipDataType] specifies the datatype of computation.
Member Function/Subroutine Documentation
◆ hipblastrsmstridedbatchedex_()
| integer(kind(hipblas_status_success)) function hipfort_hipblas::hipblastrsmstridedbatchedex::hipblastrsmstridedbatchedex_ | ( | type(c_ptr), value | handle, |
| integer(kind(hipblas_side_left)), value | side, | ||
| integer(kind(hipblas_fill_mode_upper)), value | uplo, | ||
| integer(kind(hipblas_op_n)), value | transa, | ||
| integer(kind(hipblas_diag_non_unit)), value | diag, | ||
| integer(c_int), value | m, | ||
| integer(c_int), value | n, | ||
| type(c_ptr), value | alpha, | ||
| type(c_ptr), value | a, | ||
| integer(c_int), value | lda, | ||
| integer(c_int64_t), value | stridea, | ||
| type(c_ptr), value | b, | ||
| integer(c_int), value | ldb, | ||
| integer(c_int64_t), value | strideb, | ||
| integer(c_int), value | batchcount, | ||
| type(c_ptr), value | inva, | ||
| integer(c_int), value | invasize, | ||
| integer(c_int64_t), value | strideinva, | ||
| integer(kind(hip_r_32f)), value | computetype | ||
| ) |
The documentation for this interface was generated from the following file: