Computes a symmetric Gauss-Zeidel preconditioner with a final 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

Note

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.

Note

Transpose (SPARSE_OPERATION_TRANSPOSE) and conjugate transpose (SPARSE_OPERATION_CONJUGATE_TRANSPOSE) are not supported.

A

SPARSE_MATRIX_T.

Handle containing sparse matrix in internal data structure.

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

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.

Overwritten by the computed vector y.

stat

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.

Для получения подробной информации о возможностях оптимизации компилятора обратитесь к нашему Уведомлению об оптимизации.
Выберите цвет фиксируемой кнопки: 
Orange (only for download buttons)