Developer Reference for Intel® oneAPI Math Kernel Library for Fortran

ID 766686
Date 10/31/2024
Public
Document Table of Contents

?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, mkl_blas.f90

Description

The ?trsm_batch_strided routines solve a series of triangular matrix equations. They are similar to the ?trsm routine counterparts, but the ?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
    Ai, and Bi are matrices at offset i * stridea and i * strideb in a and b
    Solve op(Ai)*Xi = alpha * Bi
        Or
    Solve Xi*op(Ai) = alpha * Bi
end for                                                                                       

Input Parameters

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) = AT;

if transa = 'C' or 'c', then op(A) = AH;

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.

ldb

INTEGER.

Specifies the leading dimension of the B matrices.

ldb must be at least max(1,m).

strideb

INTEGER.

Stride between two consecutive B matrices.

strideb must be at least (ldb*n).

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.