We describe the basics for building and applying MLD2P4 one-level and multi-level (i.e., AMG) preconditioners with the Krylov solvers included in PSBLAS [13]. The following steps are required:
mld_
xprec_
type
, where x may be s
, d
, c
or z
, according to the basic data type of the sparse matrix
(s
= real single precision; d
= real double precision;
c
= complex single precision; z
= complex double precision).
This data structure is accessed by the user only through the MLD2P4 routines,
following an object-oriented approach.
init
, which also sets defaults for each preconditioner
type selected by the user. The preconditioner types and the defaults associated
with them are given in Table 1, where the strings used by
init
to identify the preconditioner types are also given.
Note that these strings are valid also if uppercase letters are substituted by
corresponding lowercase ones.
set
.
This routine must be called only if the user wants to modify the default values
of the parameters associated with the selected preconditioner type, to obtain a variant
of that preconditioner. Examples of use of set
are given in
Section 5.1; a complete list of all the
preconditioner parameters and their allowed and default values is provided in
Section 6, Tables 2-8.
hierarchy_build
.
smoothers_build
.
bld
.
aply
. When using the PSBLAS Krylov solvers,
this step is completely transparent to the user, since aply
is called
by the PSBLAS routine implementing the Krylov solver (psb_krylov
).
free
. This step is complementary to step 1 and should
be performed when the preconditioner is no more used.
All the previous routines are available as methods of the preconditioner object. A detailed description of them is given in Section 6. Examples showing the basic use of MLD2P4 are reported in Section 5.1.
|
Note that the module mld_prec_mod
, containing the definition of the
preconditioner data type and the interfaces to the routines of MLD2P4,
must be used in any program calling such routines.
The modules psb_base_mod
, for the sparse matrix and communication descriptor
data types, and psb_krylov_mod
, for interfacing with the
Krylov solvers, must be also used (see Section 5.1).
Remark 1. Coarsest-level solvers based on the LU factorization, such as those implemented in UMFPACK, MUMPS, SuperLU, and SuperLU_Dist, usually lead to smaller numbers of preconditioned Krylov iterations than inexact solvers, when the linear system comes from a standard discretization of basic scalar elliptic PDE problems. However, this does not necessarily correspond to the smallest execution time on parallel computers.