## Developer Reference

• 2020.2
• 07/15/2020
• Public Content
Contents

# mkl_sparse_?_lu_smoother

Computes an action of a preconditioner which corresponds to the approximate matrix decomposition for the system (see description below).

## Syntax

Include Files
• mkl_spblas.f90
Description
This routine computes an update for an iterative solution
x
of the system
Ax=b
by means of applying one iteration of an approximate preconditioner which is based on the following approximation: , where
E
is an approximate inverse of the diagonal (using exact inverse will result in Gauss-Seidel preconditioner),
L
and
U
are lower/upper triangular parts of
A
,
D
is the diagonal (block diagonal in case of BSR format) of
A
.
The
mkl_sparse_?_lu_smoother
routine performs these operations:
```r = b - A*x    /* 1. Computes the residual */
(L + D)*E*(U + D)*dx = r    /* 2. Finds the update dx by solving the system */
y = x + dx    /* 3. Performs an update */
```
This routine is supported only for sparse matrices in BSR format, non-transpose operation and real data types.
Both diagonal values and approximate diagonal inverse arrays should be passed explicitly.
Input Parameters
operation
C_INT
.
Specifies the operation performed on matrix
A
.
SPARSE_OPERATION_NON_TRANSPOSE, op(A) := A
Transpose and conjugate transpose (
SPARSE_OPERATION_TRANSPOSE
and
SPARSE_OPERATION_CONJUGATE_TRANSPOSE
) are not supported.
Non-transpose,
op(
A
)
=
A
.
A
SPARSE_MATRIX_T
.
Handle which contains the sparse matrix
A
.
descr
MATRIX_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 the 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 the 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.
Only SPARSE_MATRIX_TYPE_GENERAL is supported.
diag
C_FLOAT
for
mkl_sparse_s_lu_smoother