mkl_sparse_?_symgs
mkl_sparse_?_symgs
Computes a symmetric Gauss-Seidel preconditioner.
Syntax
sparse_status_t
mkl_sparse_s_symgs
(
const
sparse_operation_t
operation
,
const
sparse_matrix_t
A
,
const struct
matrix_descr
descr
,
const
float
alpha
,
const float
*b
,
float
*x
);
sparse_status_t
mkl_sparse_d_symgs
(
const
sparse_operation_t
operation
,
const
sparse_matrix_t
A
,
const struct
matrix_descr
descr
,
const
double
alpha
,
const double
*b
,
double
*x
);
sparse_status_t
mkl_sparse_c_symgs
(
const
sparse_operation_t
operation
,
const
sparse_matrix_t
A
,
const struct
matrix_descr
descr
,
const
MKL_Complex8
alpha
,
const MKL_Complex8
*b
,
MKL_Complex8
*x
);
sparse_status_t
mkl_sparse_z_symgs
(
const
sparse_operation_t
operation
,
const
sparse_matrix_t
A
,
const struct
matrix_descr
descr
,
const
MKL_Complex16
alpha
,
const MKL_Complex16
*b
,
MKL_Complex16
*x
);
Include Files
- mkl_spblas.h
Description
The
mkl_sparse_?_symgs
routine performs this operation:x0 := x*alpha; (L + D)*x1 = b - U*x0; (U + D)*x = b - L*x1;
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 must be
desc
.type
SPARSE_MATRIX_TYPE_SYMMETRIC
. Input Parameters
- operation
- Specifies the operation performed on matrixA.SPARSE_OPERATION_NON_TRANSPOSE,op(.A) :=ATranspose (SPARSE_OPERATION_TRANSPOSE) and conjugate transpose (SPARSE_OPERATION_CONJUGATE_TRANSPOSE) are not supported.
- A
- Handle which contains the sparse matrixA.
- alpha
- Specifies the scalaralpha.
- descr
- Structurespecifying sparse matrix properties.sparse_matrix_type_ttype- 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_tmode- 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_tdiag- 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
- Array of size at leastm, wheremis the number of rows of matrixA.On entry, the arrayxmust contain the vectorx.
- b
- Array of size at leastm, wheremis the number of rows of matrixA.On entry, the arraybmust contain the vectorb.
Output Parameters
- x
- Overwritten by the computed vectorx.
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.