Developer Reference

  • 098
  • 03/30/2020
  • Public Content
Contents

mkl_sparse_?_symgs_mv

Computes a symmetric Gauss-Seidel preconditioner followed by a matrix-vector multiplication.

Syntax

stat = mkl_sparse_s_symgs_mv
(
operation
,
A
,
descr
,
alpha
,
b
,
x
,
y
)
stat = mkl_sparse_d_symgs_mv
(
operation
,
A
,
descr
,
alpha
,
b
,
x
,
y
)
stat = mkl_sparse_c_symgs_mv
(
operation
,
A
,
descr
,
alpha
,
b
,
x
,
y
)
stat = mkl_sparse_z_symgs_mv
(
operation
,
A
,
descr
,
alpha
,
b
,
x
,
y
)
Include Files
  • mkl_spblas.f90
Description
The
mkl_sparse_?_symgs_mv
routine performs this operation:
x0
:=
x
*
alpha
; (
L
+
D
)*
x1
=
b
-
U
*
x0
; (
U
+
D
)*
x
=
b
-
L
*
x1
;
y
:=
A
*
x
where
A
=
L
+
D
+
U
This routine is not supported for sparse matrices in BSR, COO, or CSC formats. It supports only the CSR format. Additionally, only symmetric matrices are supported, so the
desc
.
type
must be
SPARSE_MATRIX_TYPE_SYMMETRIC
.
Input Parameters
operation
C_INT
.
Specifies the operation performed on input matrix.
SPARSE_OPERATION_NON_TRANSPOSE
,
op(
A
) =
A
.
Transpose (
SPARSE_OPERATION_TRANSPOSE
) and conjugate transpose (
SPARSE_OPERATION_CONJUGATE_TRANSPOSE
) are not supported.
A
SPARSE_MATRIX_T
.
Handle which contains the sparse matrix
A
.
alpha
C_FLOAT
for
mkl_sparse_s_symgs_mv
C_DOUBLE
for
mkl_sparse_d_symgs_mv
C_FLOAT_COMPLEX
for
mkl_sparse_c_symgs_mv
C_DOUBLE_COMPLEX
for
mkl_sparse_z_symgs_mv
Specifies the scalar
alpha
.
descr
MATRIX_DESCR
.
Descriptor
specifying sparse matrix properties.
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.
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.
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.
x
C_FLOAT
for
mkl_sparse_s_symgs_mv
C_DOUBLE
for
mkl_sparse_d_symgs_mv
C_FLOAT_COMPLEX
for
mkl_sparse_c_symgs_mv
C_DOUBLE_COMPLEX
for
mkl_sparse_z_symgs_mv
Array of size at least
m
, where
m
is the number of rows of matrix
A
.
On entry, the array
x
must contain the vector
x
.
b
C_FLOAT
for
mkl_sparse_s_symgs_mv
C_DOUBLE
for
mkl_sparse_d_symgs_mv
C_FLOAT_COMPLEX
for
mkl_sparse_c_symgs_mv
C_DOUBLE_COMPLEX
for
mkl_sparse_z_symgs_mv
Array of size at least
m
, where
m
is the number of rows of matrix
A
.
On entry, the array
b
must contain the vector
b
.
Output Parameters
x
Overwritten by the computed vector
x
.
y
C_FLOAT
for
mkl_sparse_s_symgs_mv
C_DOUBLE
for
mkl_sparse_d_symgs_mv
C_FLOAT_COMPLEX
for
mkl_sparse_c_symgs_mv