Developer Reference for Intel® oneAPI Math Kernel Library for Fortran

ID 766686
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

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

Intel® oneAPI Math Kernel Library (oneMKL) 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.

NOTE:

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

dcg_init, dcgmrhs_init, dfgmres_init

Initializes the solver.

dcg_check, dcgmrhs_check, dfgmres_check

Checks the consistency and correctness of the user defined data.

dcg, dcgmrhs, dfgmres

Computes the approximate solution vector.

dcg_get, dcgmrhs_get, dfgmres_get

Retrieves the number of the current iteration.

The Intel® oneAPI Math Kernel Library (oneMKL) 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.

Typical Order for Invoking RCI ISS interface Routines


Typical Order for Invoking RCI ISS interface Routines

See the code examples that use the RCI ISS interface routines to solve systems of linear equations in the Intel® oneAPI Math Kernel Library (oneMKL) installation directory.

  • examples/solverf/source