Developer Reference for Intel® oneAPI Math Kernel Library for Fortran
?trsm_batch_strided
Solves groups of triangular matrix equations.
Syntax
call strsm_batch_strided(side, uplo, transa, diag, m, n, alpha, a, lda, stridea, b, ldb,
strideb, batch_size)
call dtrsm_batch_strided(side, uplo, transa, diag, m, n, alpha, a, lda, stridea, b, ldb,
strideb, batch_size)
call ctrsm_batch_strided(side, uplo, transa, diag, m, n, alpha, a, lda, stridea, b, ldb,
strideb, batch_size)
call ztrsm_batch_strided(side, uplo, transa, diag, m, n, alpha, a, lda, stridea, b, ldb,
strideb, batch_size)
Include Files
mkl.fi
Description
The ?trsm_batch_stridedcblas_?trsm_batch_strided routines solve a series of triangular matrix equations. They are similar to the ?trsmcblas_?trsm routine counterparts, but the ?trsm_batch_stridedcblas_?trsm_batch_strided routines solve triangular matrix equations with groups of matrices. All matrix a have the same parameters ( size , leading dimension , side , uplo , diag , transpose operation ) and are stored at constant stridea from each other. Similarly, all matrix b have the same parameters ( size , leading dimension , alpha scaling ) and are stored at constant strideb from each other.
The operation is defined as
for i = 0 … batch_size – 1
A[i], and B[i] are matrices at offset i * stridea and i * strideb in a and b
Solve op(A[i])*X[i]i= alpha * B[i] Or Solve X[i]*op(A[i]) = alpha * B]i]
end for
Input Parameters
- Layout
-
Specifies whether two-dimensional array storage is row-major ( CblasRowMajor ) or column-major ( CblasColMajor ).
side
CHARACTER*1 .
Specifies whether op(A) appears on the left or right of X in the equation.
if side = ‘ L ‘ or ‘ l ‘ , then op(A) * X = alpha * B ;
if side = ‘ R ‘ or ‘ r ‘ , then X * op(A) = alpha * B .
uplo
CHARACTER*1 .
Specifies whether the matrices A are upper or lower triangular.
if uplo = ‘ U ‘ or ‘ u ‘ , then A are upper triangular;
if uplo = ‘ L ‘ or ‘ l ‘ , then A are lower triangular.
transa
CHARACTER*1 .
Specifies op(A) the transposition operation applied to the matrices A .
if transa = ‘ N ‘ or ‘ n ‘ , then op(A) = A ;
if transa = ‘ T ‘ or ‘ t ‘ , then op(A) = A:code:`T` ;
if transa = ‘ C ‘ or ‘ c ‘ , then op(A) = A:code:`H` ;
diag
CHARACTER*1 .
Specifies whether the matrices A are unit triangular.
if diag = ‘ U ‘ or ‘ u ‘ , then A are unit triangular;
if diag = ‘ N ‘ or ‘ n ‘ , then A are non-unit triangular.
m
INTEGER .
Number of rows of B matrices. Must be at least 0
n
INTEGER .
Number of columns of B matrices. Must be at least 0
- alpha
-
REAL for strsm_batch_strided DOUBLE PRECISION for dtrsm_batch_strided COMPLEX for ctrsm_batch_strided DOUBLE COMPLEX for ztrsm_batch_strided Specifies the scalar alpha .
- a
-
REAL for strsm_batch_strided DOUBLE PRECISION for dtrsm_batch_strided COMPLEX for ctrsm_batch_strided DOUBLE COMPLEX for ztrsm_batch_strided Array of size at least stridea * batch_size holding the A matrices. Each A matrix is stored at constant stridea from each other.
Each A matrix has size lda* k , where k is m when side = ‘ L ‘ or ‘ l ‘ and is n when side = ‘ R ‘ or ‘ r ‘ .
Before entry with uplo = ‘ U ‘ or ‘ u ‘ , the leading k -by- k upper triangular part of the array A must contain the upper triangular matrix and the strictly lower triangular part of A is not referenced.
Before entry with uplo = ‘ L ‘ or ‘ l ‘ lower triangular part of the array A must contain the lower triangular matrix and the strictly upper triangular part of A is not referenced.
When diag = ‘ U ‘ or ‘ u ‘ , the diagonal elements of A are not referenced either, but are assumed to be unity.
lda
INTEGER .
Specifies the leading dimension of the A matrices. When side = ‘ L ‘ or ‘ l ‘ , then lda must be at least max(1, m) , when side = side = ‘ R ‘ or ‘ r ‘ , then lda must be at least max(1, n) .
stridea
INTEGER .
Stride between two consecutive A matrices.
When side = ‘ L ‘ or ‘ l ‘ , then stridea must be at least lda*m .
When side = side = ‘ R ‘ or ‘ r ‘ , then stridea must be at least lda*n .
- b
-
REAL for strsm_batch_strided DOUBLE PRECISION for dtrsm_batch_strided COMPLEX for ctrsm_batch_strided DOUBLE COMPLEX for ztrsm_batch_strided Array of size at least strideb * batch_size holding the B matrices. Each B matrix is stored at constant strideb from each other. Each B matrix has size ldb* n . Before entry, the leading m -by- n part of the array B must contain the matrix B . When layout = CblasColMajor, each B matrix has size ldb* n . Before entry, the leading m -by- n part of the array B must contain the matrix B . When layout = CblasRowMajor, each B matrix has size ldb* m . Before entry, the leading n -by- m part of the array B must contain the matrix B .
ldb
INTEGER .
Specifies the leading dimension of the B matrices. ldb must be at least max(1,m) . When layout = CblasColMajor, strideb must be at least max(1,m) . Otherwise, strideb must be at least max(1,n) .
- strideb
-
INTEGER . Stride between two consecutive B matrices. strideb must be at least (ldb*n) . When layout = CblasColMajor, strideb must be at least ldb*n . Otherwise, strideb must be at least ldb*m .
- batch_size
-
INTEGER . Number of trsm computations to perform. Must be at least 0.
Output Parameters
- b
-
Overwritten by the solution batch_size X matrices.