Contents

# Iterative Sparse Solvers based on Reverse Communication Interface (RCI ISS)

Intel® oneAPI Math Kernel Library
supports iterative sparse solvers (ISS) based on the reverse communication interface (RCI), referred to here as the RCI ISS interface. The RCI ISS interface implements a group of user-callable routines that are used in the step-by-step solving process of a symmetric positive definite system (RCI conjugate gradient solver, or RCI CG), and of a non-symmetric indefinite (non-degenerate) system (RCI flexible generalized minimal residual solver, or RCI FGMRES) of linear algebraic equations. This interface uses the general RCI scheme described in [Dong95].
See the Appendix A Linear Solvers Basics for discussion of terms and concepts related to the ISS routines.
The term
RCI
indicates that when the solver needs the results of certain operations (for example, matrix-vector multiplications), the user performs them and passes the result to the solver. This makes the solver more universal as it is independent of the specific implementation of the operations like the matrix-vector multiplication. To perform such operations, the user can use the built-in sparse matrix-vector multiplications and triangular solvers routines described in Sparse BLAS Level 2 and Level 3 Routines.
The RCI CG solver is implemented in two versions: for system of equations with a single right-hand side, and for systems of equations with multiple right-hand sides.
The CG method may fail to compute the solution or compute the wrong solution if the matrix of the system is not symmetric and not positive definite.
The FGMRES method may fail if the matrix is degenerate.
Table
"RCI CG Interface Routines"
lists the names of the routines, and describes their general use.
RCI ISS Interface Routines
Routine
Description
Initializes the solver.
Checks the consistency and correctness of the user defined data.
Computes the approximate solution vector.
Retrieves the number of the current iteration.
The
Intel® oneAPI Math Kernel Library
RCI ISS interface routines are normally invoked in this order:
1. <
system_type
>_init
2. <
system_type
>_check
3. <
system_type
>
4. <
system_type
>_get
Advanced users can change that order if they need it. Others should follow the above order of calls.
The following diagram indicates the typical order in which the RCI ISS interface routines are invoked.
See the code examples that use the RCI ISS interface routines to solve systems of linear equations in the
Intel® oneAPI Math Kernel Library
installation directory.
• examples/solverc/source

#### Product and Performance Information

1

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