Developer Reference

Contents

mkl_sparse_?_trsm

Solves a system of linear equations with multiple right hand sides for a triangular sparse matrix.

Syntax

sparse_status_t mkl_sparse_s_trsm
(
const sparse_operation_t
operation
,
const float
alpha
,
const
sparse_matrix_t
A
,
const struct
matrix_descr
descr
,
const sparse_layout_t
layout
,
const
float
*x
,
const MKL_INT
columns
,
const MKL_INT
ldx
,
float
*y
,
const MKL_INT
ldy
);
sparse_status_t mkl_sparse_d_trsm
(
const sparse_operation_t
operation
,
const double
alpha
,
const
sparse_matrix_t
A
,
const struct
matrix_descr
descr
,
const sparse_layout_t
layout
,
const
double
*x
,
const MKL_INT
columns
,
const MKL_INT
ldx
,
double
*y
,
const MKL_INT
ldy
);
sparse_status_t mkl_sparse_c_trsm
(
const sparse_operation_t
operation
,
const MKL_Complex8
alpha
,
const
sparse_matrix_t
A
,
const struct
matrix_descr
descr
,
const sparse_layout_t
layout
,
const
MKL_Complex8
*x
,
const MKL_INT
columns
,
const MKL_INT
ldx
,
MKL_Complex8
*y
,
const MKL_INT
ldy
);
sparse_status_t mkl_sparse_z_trsm
(
const sparse_operation_t
operation
,
const MKL_Complex16
alpha
,
const
sparse_matrix_t
A
,
const struct
matrix_descr
descr
,
const sparse_layout_t
layout
,
const
MKL_Complex16
*x
,
const MKL_INT
columns
,
const MKL_INT
ldx
,
MKL_Complex16
*y
,
const MKL_INT
ldy
);
Include Files
  • mkl_spblas.h
Description
The
mkl_sparse_?_trsm
routine solves a system of linear equations with multiple right hand sides for a triangular sparse matrix:
Y
:=
alpha
*inv(op(
A
))*
X
where:
alpha
is a scalar,
X
and
Y
are dense matrices,
A
is a sparse matrix, and
op
is a matrix modifier for matrix
A
.
The
mkl_sparse_?_mm
and
mkl_sparse_?_trsm
routines support these configurations:
Column-major dense matrix:
layout
=
SPARSE_LAYOUT_COLUMN_MAJOR
Row-major dense matrix:
layout
=
SPARSE_LAYOUT_ROW_MAJOR
0-based sparse matrix:
SPARSE_INDEX_BASE_ZERO
CSR
BSR: general non-transposed matrix multiplication only
All formats
1-based sparse matrix:
SPARSE_INDEX_BASE_ONE
All formats
CSR
BSR: general non-transposed matrix multiplication only
For sparse matrices in the BSR format, the supported combinations of (
indexing
,
block_layout
) are:
  • (
    SPARSE_INDEX_BASE_ZERO
    ,
    SPARSE_LAYOUT_ROW_MAJOR
    )
  • (
    SPARSE_INDEX_BASE_ONE
    ,
    SPARSE_LAYOUT_COLUMN_MAJOR
    )
Input Parameters
operation
Specifies operation
op()
on input matrix.
SPARSE_OPERATION_NON_TRANSPOSE
Non-transpose,
op(
A
) =
A
.
SPARSE_OPERATION_TRANSPOSE
Transpose,
op(
A
) =
A
T
.
SPARSE_OPERATION_CONJUGATE_TRANSPOSE
Conjugate transpose,
op(
A
) =
A
H
.
alpha
Specifies the scalar
alpha
.
A
Handle which contains the sparse matrix
A
.
descr
Structure
specifying sparse matrix properties.
sparse_matrix_type_t
type
- Specifies the type of a sparse matrix:
SPARSE_MATRIX_TYPE_GENERAL
The matrix is processed as is.
SPARSE_MATRIX_TYPE_SYMMETRIC
The matrix is symmetric (only the requested triangle is processed).
SPARSE_MATRIX_TYPE_HERMITIAN
The matrix is Hermitian (only the requested triangle is processed).
SPARSE_MATRIX_TYPE_TRIANGULAR
The matrix is triangular (only the requested triangle is processed).
SPARSE_MATRIX_TYPE_DIAGONAL
The matrix is diagonal (only diagonal elements are processed).
SPARSE_MATRIX_TYPE_BLOCK_TRIANGULAR
The matrix is block-triangular (only requested triangle is processed). Applies to BSR format only.
SPARSE_MATRIX_TYPE_BLOCK_DIAGONAL
The matrix is block-diagonal (only diagonal blocks are processed). Applies to BSR format only.
sparse_fill_mode_t
mode
- Specifies the triangular matrix part for symmetric, Hermitian, triangular, and block-triangular matrices:
SPARSE_FILL_MODE_LOWER
The lower triangular matrix part is processed.
SPARSE_FILL_MODE_UPPER
The upper triangular matrix part is processed.
sparse_diag_type_t
diag
- Specifies diagonal type for non-general matrices:
SPARSE_DIAG_NON_UNIT
Diagonal elements might not be equal to one.
SPARSE_DIAG_UNIT
Diagonal elements are equal to one.
layout
Describes the storage scheme for the dense matrix:
SPARSE_LAYOUT_COLUMN_MAJOR
Storage of elements uses column major layout.
SPARSE_LAYOUT_ROW_MAJOR
Storage of elements uses row major layout.
x
Array of size at least
rows
*
cols
.
layout
=
SPARSE_LAYOUT_COLUMN_MAJOR
layout
=
SPARSE_LAYOUT_ROW_MAJOR
rows
(number of rows in
x
)
ldx
number of rows in A
cols
(number of columns in
x
)
columns
ldx
On entry, the array
x
must contain the matrix
X
.
columns
Number of columns in matrix
Y
.
ldx
Specifies the leading dimension of matrix
X
.
y
Array of size at least
rows
*
cols
, where
layout
=
SPARSE_LAYOUT_COLUMN_MAJOR
layout
=
SPARSE_LAYOUT_ROW_MAJOR
rows
(number of rows in
y
)
ldy
number of rows in A
cols
(number of columns in
y
)
columns
ldy
Output Parameters
y
Overwritten by the updated matrix
Y
.
Return Values
The function returns a value indicating whether the operation was successful or not, and why.
SPARSE_STATUS_SUCCESS
The operation was successful.
SPARSE_STATUS_NOT_INITIALIZED
The routine encountered an empty handle or matrix array.
SPARSE_STATUS_ALLOC_FAILED
Internal memory allocation failed.
SPARSE_STATUS_INVALID_VALUE
The input parameters contain an invalid value.
SPARSE_STATUS_EXECUTION_FAILED
Execution failed.
SPARSE_STATUS_INTERNAL_ERROR
An error in algorithm implementation occurred.
SPARSE_STATUS_NOT_SUPPORTED
The requested operation is not supported.

Product and Performance Information

1

Intel's compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice.

Notice revision #20110804