Developer Reference for Intel® oneAPI Math Kernel Library for C

ID 766684
Date 11/07/2023
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents

mkl_sparse_?_sorv

Computes forward, backward sweeps or a symmetric successive over-relaxation preconditioner operation.

Syntax

sparse_status_t mkl_sparse_s_sorv(
    const sparse_sor_type_t type,
    const struct matrix_descr descrA,
    const sparse_matrix_t A,
    float omega,
    float alpha,
    float* x,
    float* b
);
      
sparse_status_t mkl_sparse_d_sorv(
    const sparse_sor_type_t type,
    const struct matrix_descr descrA,
    const sparse_matrix_t A,
    double omega,
    double alpha,
    double* x,
    double* b
);
      

Include Files

  • mkl_spblas.h

Description

The mkl_sparse_?_sorv routine performs one of the following operations:

SPARSE_SOR_FORWARD:


SPARSE_SOR_BACKWARD:


SPARSE_SOR_SYMMETRIC: Performs application of a


preconditioner.

where A = L + D + U and x^0 is an input vector x scaled by input parameter alpha vector and x^1 is an output stored in vector x.

NOTE:

Currently this routine only supports the following configuration:

  • CSR format of the input matrix
  • SPARSE_SOR_FORWARD operation
  • General matrix (descr.type is SPARSE_MATRIX_TYPE_GENERAL) or symmetric matrix with full portrait and unit diagonal (descr.type is SPARSE_MATRIX_TYPE_SYMMETRIC, descr.mode is SPARSE_FILL_MODE_FULL, and descr.diag is SPARSE_DIAG_UNIT)
NOTE:

Currently, this routine is optimized only for sequential threading execution mode.

WARNING:
It is currently not allowed to place a sorv call in a parallel section (e.g., under #pragma omp parallel), because it is not thread-safe in this scenario. This limitation will be addressed in one of the upcoming releases.

Product and Performance Information

Performance varies by use, configuration and other factors. Learn more at www.Intel.com/PerformanceIndex.

Notice revision #20201201

Input Parameters

type

Specifies the operation performed by the SORV preconditioner.

SPARSE_SOR_FORWARD

Performs forward sweep as defined by:


SPARSE_SOR_BACKWARD

Performs backward sweep as defined by:


SPARSE_SOR_SYMMETRIC

Preconditioner matrix could be expressed as:


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.

A

Handle containing internal data.

omega

Relaxation factor.

alpha

Parameter that could be used to normalize or set to zero the vector x that holds the initial guess.

x

Initial guess on input.

b

Right-hand side.

Output Parameters

x

Solution vector on output.

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.