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

Intel MKL supports the iterative sparse solvers (ISS) based on the reverse communication interface (RCI), referred to here as 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 Linear Solvers Basics for discussion of terms and concepts related to the ISS routines.

RCI means that when the solver needs the results of certain operations (for example, matrix-vector multiplications), the user must perform them and pass the result to the solver. This gives great universality to the solver 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 (see Sparse BLAS Level 2 and Level 3).

Note iconNote

The RCI CG solver is implemented in two versions: for system of equations with a single right hand side, and for system 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 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 MKL RCI ISS interface routines are normally invoked in this order:


  1. <type>_init
  2. <type>_check
  3. <type>
  4. <type>_get

Advanced users can change that order if they need it. Others should follow the above order of calls.

The following diagram in Figure "Typical Order for Invoking RCI ISS Interface Routines" indicates the typical order in which the RCI ISS interface routines can be invoked.

Typical Order for Invoking RCI ISS interface Routines


Typical Order for Invoking RCI ISS interface Routines

Code examples that use the RCI ISS interface routines to solve systems of linear equations can be found in the examples\solver\source folder of your Intel MKL directory (cg_no_precon.f, cg_no_precon_c.c, cg_mrhs.f, cg_mrhs_precond.f, cg_mrhs_stop_crt.f, fgmres_no_precon_f.f, fgmres_no_precon_c.c).


Submit feedback on this help topic

Copyright © 1994 - 2011, Intel Corporation. All rights reserved.