Visible to Intel only — GUID: GUID-F4F38A9D-6D85-4237-A387-C12C22942A67
Visible to Intel only — GUID: GUID-F4F38A9D-6D85-4237-A387-C12C22942A67
mkl_sparse_?_symgs_mv
Computes a symmetric Gauss-Seidel preconditioner followed by a matrix-vector multiplication.
Syntax
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);
Include Files
- mkl_spblas.h
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
-
Specifies the operation performed on input matrix.
SPARSE_OPERATION_NON_TRANSPOSE, op(A) = A.
NOTE:Transpose (SPARSE_OPERATION_TRANSPOSE) and conjugate transpose (SPARSE_OPERATION_CONJUGATE_TRANSPOSE) are not supported.
- A
-
Handle which contains the sparse matrix A.
- alpha
-
Specifies the scalar alpha.
- 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 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. - x
-
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
-
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
-
Array of size at least m, where m is the number of rows of matrix A.
Overwritten by the computed vector y.
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. |