Developer Reference for Intel® oneAPI Math Kernel Library for C

ID 766684
Date 3/31/2023
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents

cblas_?trsm_batch_strided

Solves groups of triangular matrix equations.

Syntax

void cblas_strsm_batch_strided(const CBLAS_LAYOUT layout, const CBLAS_SIDE side, const CBLAS_UPLO uplo, const CBLAS_TRANSPOSE transa, const CBLAS_DIAG diag, const MKL_INT m, const MKL_INT n, const float alpha, const float *a, const MKL_INT lda, const MKL_INT stridea, float *b, const MKL_INT ldb, const MKL_INT strideb, MKL_INT batch_size);

void cblas_dtrsm_batch_strided(const CBLAS_LAYOUT layout, const CBLAS_SIDE side, const CBLAS_UPLO uplo, const CBLAS_TRANSPOSE transa, const CBLAS_DIAG diag, const MKL_INT m, const MKL_INT n, const double alpha, const double *a, const MKL_INT lda, const MKL_INT stridea, double *b, const MKL_INT ldb, const MKL_INT strideb, const MKL_INT batch_size);

void cblas_ctrsm_batch_strided(const CBLAS_LAYOUT layout, const CBLAS_SIDE side, const CBLAS_UPLO uplo, const CBLAS_TRANSPOSE transa, const CBLAS_DIAG diag, const MKL_INT m, const MKL_INT n, const void *alpha, const void *a, const MKL_INT lda, const MKL_INT stridea, void *b, const MKL_INT ldb, const MKL_INT strideb, const MKL_INT batch_size);

void zblas_ctrsm_batch_strided(const CBLAS_LAYOUT layout, const CBLAS_SIDE side, const CBLAS_UPLO uplo, const CBLAS_TRANSPOSE transa, const CBLAS_DIAG diag, const MKL_INT m, const MKL_INT n, const void *alpha, const void *a, const MKL_INT lda, const MKL_INT stridea, void *b, const MKL_INT ldb, const MKL_INT strideb, const MKL_INT batch_size);

Include Files
  • mkl.h
Description

The cblas_?trsm_batch_strided routines solve a series of triangular matrix equations. They are similar to the cblas_?trsm routine counterparts, but the cblas_?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

Input Parameters
Layout

Specifies whether two-dimensional array storage is row-major (CblasRowMajor) or column-major (CblasColMajor).

side

Specifies whether op(A) appears on the left or right of X in the equation.

if side = CblasLeft, then op(A)*X = alpha*B;

if side = CblasRight, then X*op(A) = alpha*B.

uplo

Specifies whether the matrices A are upper or lower triangular.

if uplo = CblasUpper, then A are upper triangular;

if uplo = CblasLower, then A are lower triangular.

transa

Specifies op(A) the transposition operation applied to the matrices A.

if transa = CblasNoTrans, then op(A) = A;

if transa = CblasTrans, then op(A) = AT;

if transa = CblasConjTrans, then op(A) = AH;

diag

Specifies whether the matrices A are unit triangular.

if diag = CblasUnit, then A are unit triangular;

if diag = CblasLower, then A are non-unit triangular.

m

Number of rows of B matrices. Must be at least 0

n

Number of columns of B matrices. Must be at least 0

alpha

Specifies the scalar alpha.

a

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 = CblasLeft and is n when side = CblasRight.

Before entry with uplo = CblasUpper, 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 = CblasLower 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 = CblasUnit, the diagonal elements of A are not referenced either, but are assumed to be unity.

lda

Specifies the leading dimension of the A matrices. When side = CblasLeft, then lda must be at least max(1, m), when side = side = CblasRight, then lda must be at least max(1, n).

stridea

Stride between two consecutive A matrices.

When side = CblasLeft, then stridea must be at least lda*m.

When side = side = CblasRight, then stridea must be at least lda*n.

b

Array of size at least strideb*batch_size holding the B matrices. Each B matrix is stored at constant strideb from each other.

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

Specifies the leading dimension of the B matrices.

When layout= CblasColMajor, strideb must be at least max(1,m). Otherwise, strideb must be at least max(1,n).

strideb

Stride between two consecutive B matrices.

When layout= CblasColMajor, strideb must be at least ldb*n. Otherwise, strideb must be at least ldb*m.

batch_size

Number of trsm computations to perform. Must be at least 0.

Output Parameters
b

Overwritten by the solution batch_size X matrices.