|
|
|
|
|
|
|
MLD2P4 version 2.1
|
|
|
|
MultiLevel Domain Decomposition Parallel Preconditioners Package
|
|
|
|
based on PSBLAS (Parallel Sparse BLAS version 3.5)
|
|
|
|
|
|
|
|
Salvatore Filippone Cranfield University, UK
|
|
|
|
Pasqua D'Ambra IAC-CNR, Naples, IT
|
|
|
|
Daniela di Serafino Univ. of Campania "L. Vanvitelli", Caserta, IT
|
|
|
|
|
|
|
|
---------------------------------------------------------------------
|
|
|
|
|
|
|
|
MLD2P4 (MultiLevel Domain Decomposition Parallel Preconditioners
|
|
|
|
Package based on PSBLAS) provides parallel Algebraic MultiGrid (AMG)
|
|
|
|
and Domain Decomposition preconditioners, to be used in the
|
|
|
|
iterative solution of linear systems.
|
|
|
|
|
|
|
|
The name of the package comes from its original implementation,
|
|
|
|
containing multilevel additive and hybrid Schwarz preconditioners,
|
|
|
|
as well as one-level additive Schwarz preconditioners. The current
|
|
|
|
version extends the original plan by including multilevel cycles
|
|
|
|
and smoothers widely used in multigrid methods. A purely algebraic
|
|
|
|
approach is applied to generate coarse-level corrections, so that
|
|
|
|
no geometric background is needed concerning the matrix to be
|
|
|
|
preconditioned.
|
|
|
|
|
|
|
|
MLD2P4 has been designed to provide scalable and easy-to-use
|
|
|
|
preconditioners in the context of the PSBLAS (Parallel Sparse Basic
|
|
|
|
Linear Algebra Subprograms) computational framework and is used
|
|
|
|
in conjuction with the Krylov solvers available from PSBLAS. The
|
|
|
|
package employs object-oriented design techniques in Fortran 2003,
|
|
|
|
with interfaces to additional third party libraries such as MUMPS,
|
|
|
|
UMFPACK, SuperLU, and SuperLU_Dist, which can be exploited in building
|
|
|
|
multilevel preconditioners. The parallel implementation is based on
|
|
|
|
a Single Program Multiple Data (SPMD) paradigm; the inter-process
|
|
|
|
communication is based on MPI and is managed mainly through PSBLAS.
|
|
|
|
|
|
|
|
|
|
|
|
MAIN REFERENCE:
|
|
|
|
|
|
|
|
P. D'Ambra, D. di Serafino, S. Filippone,
|
|
|
|
MLD2P4: a Package of Parallel Algebraic Multilevel Domain Decomposition
|
|
|
|
Preconditioners in Fortran 95,
|
|
|
|
ACM Transactions on Mathematical Software, 37 (3), 2010, art. 30,
|
|
|
|
doi: 10.1145/1824801.1824808.
|
|
|
|
|
|
|
|
|
|
|
|
WHAT'S NEW
|
|
|
|
|
|
|
|
Version 2.1
|
|
|
|
1. The multigrid preconditioner now include fully general V- and
|
|
|
|
W-cycles. We also support K-cycles, both for symmetric and
|
|
|
|
nonsymmetric matrices, intended to be used in conjunction
|
|
|
|
with Flexible CG or GCR available in PSBLAS 3.5.
|
|
|
|
2. The smoothers now include popular variants such as Jacobi,
|
|
|
|
forward and backward hybrid Gauss-Seidel (intra-process
|
|
|
|
Gauss-Seidel, inter-process block-Jacobi).
|
|
|
|
3. The PRE and POST specification for smoothers can now be
|
|
|
|
specified independently of each other: you can even specify
|
|
|
|
different smoothers for PRE and POST (e.g. forward Gauss-Seidel
|
|
|
|
PRE with backward Gauss-Seidel POST). The default is to
|
|
|
|
have the specs apply to both PRE and POST.
|
|
|
|
|
|
|
|
Version 2.0.
|
|
|
|
|
|
|
|
Finally moved to F2003, with the support of PSBLAS3.
|
|
|
|
There are a few minor differences at user level:
|
|
|
|
1. In the configure step, you should specify the INSTALL directory
|
|
|
|
of PSBLAS version 3.4, not the source directory;
|
|
|
|
2. In the various makefiles, libmld_prec.a should now be used in
|
|
|
|
addition (and in front of) libpsb_prec.a, and no longer in
|
|
|
|
place of it.
|
|
|
|
3. As for the basic usage, this is practically identical to the
|
|
|
|
previous version(s).
|
|
|
|
|
|
|
|
You should use the same MPI/serial compilers that were used for the
|
|
|
|
PSBLAS installation.
|
|
|
|
The Fortran 2003 support means that it is far easier to develop and
|
|
|
|
integrate new solvers and smoothers; you need to take one of the
|
|
|
|
existing solvers/smoothers as a model, develop your own by
|
|
|
|
changing/replacing the model contents, and then pass the new object
|
|
|
|
to the PREC%SET() method which will copy into the internals, as per
|
|
|
|
the PROTOTYPE design pattern. Take a look at the test/newslv
|
|
|
|
directory to see an example. It's easier done than said!
|
|
|
|
|
|
|
|
Versions known to work:
|
|
|
|
UMFPACK: 5.4
|
|
|
|
SuperLU: 4.3 and 5.0
|
|
|
|
SuperLU_Dist: 3.3 and 4.2
|
|
|
|
Note that with SuperLU_Dist you will probably need to add further
|
|
|
|
link options, e.g. the ParMetis library or the openmp runtime;
|
|
|
|
you can do this using the configure option --with-extra-libs
|
|
|
|
|
|
|
|
In version 1.1:
|
|
|
|
- The MLD_SIZEOF() function has been redefined to be INTEGER(8), so
|
|
|
|
as to be able to measure large data sets.
|
|
|
|
- The internals of the multilevel preconditioner have been repackaged
|
|
|
|
in a more structured fashion; no changes are needed in the user
|
|
|
|
code.
|
|
|
|
- Note that we now need version 2.3.1 of PSBLAS.
|
|
|
|
|
|
|
|
|
|
|
|
TO COMPILE
|
|
|
|
|
|
|
|
0. Unpack the tar file in a directory of your choice (preferrably
|
|
|
|
outside the main PSBLAS directory).
|
|
|
|
1. run configure --with-psblas=<ABSOLUTE path of the PSBLAS install directory>
|
|
|
|
adding the options for SuperLU, SuperLU_Dist, UMFPACK as desired.
|
|
|
|
See MLD2P4 User's and Reference Guide (Section 3) for details.
|
|
|
|
2. Tweak Make.inc if you are not satisfied.
|
|
|
|
3. make;
|
|
|
|
4. Go into the test subdirectory and build the examples of your choice.
|
|
|
|
|
|
|
|
|
|
|
|
NOTES
|
|
|
|
|
|
|
|
- The single precision version is supported only by SuperLU; thus, even
|
|
|
|
if you specify at configure to use UMFPACK or SuperLU_Dist, the
|
|
|
|
corresponding preconditioner options will be available only from the
|
|
|
|
double precision version.
|
|
|
|
|
|
|
|
- A program that was using the PSBLAS precoditioners needs no source
|
|
|
|
code changes, but should be recompiled. If the new preconditioner
|
|
|
|
(or preconditioner options, such as ILU(N) factorization) are
|
|
|
|
required, only the type of the preconditioner object and its
|
|
|
|
setup/build/free calls should be updated; the rest of the
|
|
|
|
application continues to make use of the PSBLAS existing
|
|
|
|
interfaces.
|
|
|
|
|
|
|
|
|
|
|
|
CREDITS
|
|
|
|
|
|
|
|
Contributors to version 2:
|
|
|
|
Salvatore Filippone
|
|
|
|
Pasqua D'Ambra
|
|
|
|
Daniela di Serafino
|
|
|
|
Ambra Abdullahi Hassan
|
|
|
|
|
|
|
|
|
|
|
|
Contributors to version 1:
|
|
|
|
Salvatore Filippone
|
|
|
|
Pasqua D'Ambra
|
|
|
|
Daniela di Serafino
|
|
|
|
Alfredo Buttari
|