Intel® oneAPI Math Kernel Library Developer Reference - C
Computes a symmetric Gauss-Seidel preconditioner followed by a matrix-vector multiplication.
sparse_status_t mkl_sparse_s_symgs_mv (const sparse_operation_t operation, const sparse_matrix_t A, const struct matrix_descr descr, const float alpha, const float *b, float *x, float *y);
sparse_status_t mkl_sparse_d_symgs_mv (const sparse_operation_t operation, const sparse_matrix_t A, const struct matrix_descr descr, const double alpha, const double *b, double *x, double *y);
sparse_status_t mkl_sparse_c_symgs_mv (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, MKL_Complex8 *y);
sparse_status_t mkl_sparse_z_symgs_mv (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, MKL_Complex16 *y);
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.
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.
Handle which contains the sparse matrix A.
Specifies the scalar alpha.
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. |
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.
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.
Array of size at least m, where m is the number of rows of matrix A.
Overwritten by the computed vector y.
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. |