Intel® oneAPI Math Kernel Library Developer Reference - Fortran
Computes a symmetric Gauss-Seidel preconditioner.
stat = mkl_sparse_s_symgs (operation, A, descr, alpha, b, x)
stat = mkl_sparse_d_symgs (operation, A, descr, alpha, b, x)
stat = mkl_sparse_c_symgs (operation, A, descr, alpha, b, x)
stat = mkl_sparse_z_symgs (operation, A, descr, alpha, b, x)
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 desc.type must be SPARSE_MATRIX_TYPE_SYMMETRIC.
C_INT.
Specifies the operation performed on matrix A.
SPARSE_OPERATION_NON_TRANSPOSE, op(A) := A.
Transpose (SPARSE_OPERATION_TRANSPOSE) and conjugate transpose (SPARSE_OPERATION_CONJUGATE_TRANSPOSE) are not supported.
SPARSE_MATRIX_T.
Handle which contains the sparse matrix A.
C_FLOAT for mkl_sparse_s_symgs
C_DOUBLE for mkl_sparse_d_symgs
C_FLOAT_COMPLEX for mkl_sparse_c_symgs
C_DOUBLE_COMPLEX for mkl_sparse_z_symgs
Specifies the scalar alpha.
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. |
C_FLOAT for mkl_sparse_s_symgs
C_DOUBLE for mkl_sparse_d_symgs
C_FLOAT_COMPLEX for mkl_sparse_c_symgs
C_DOUBLE_COMPLEX for mkl_sparse_z_symgs
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.
C_FLOAT for mkl_sparse_s_symgs
C_DOUBLE for mkl_sparse_d_symgs
C_FLOAT_COMPLEX for mkl_sparse_c_symgs
C_DOUBLE_COMPLEX for mkl_sparse_z_symgs
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.
Overwritten by the computed vector x.
INTEGER
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. |