You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
amg4psblas/README

144 lines
5.7 KiB
Plaintext

7 years ago
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
---------------------------------------------------------------------
7 years ago
MLD2P4 (MultiLevel Domain Decomposition Parallel Preconditioners
7 years ago
Package based on PSBLAS) provides parallel Algebraic MultiGrid (AMG)
and Domain Decomposition preconditioners, to be used in the
7 years ago
iterative solution of linear systems.
The name of the package comes from its original implementation,
7 years ago
containing multilevel additive and hybrid Schwarz preconditioners,
7 years ago
as well as one-level additive Schwarz preconditioners. The current
7 years ago
version extends the original plan by including multilevel cycles
7 years ago
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
7 years ago
preconditioned.
7 years ago
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
7 years ago
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.
7 years ago
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
mld2p4-2: README mlprec/impl/mld_cmlprec_aply.f90 mlprec/impl/mld_cprecaply.f90 mlprec/impl/mld_cslud_interface.c mlprec/impl/mld_dmlprec_aply.f90 mlprec/impl/mld_dprecaply.f90 mlprec/impl/mld_dslud_interface.c mlprec/impl/mld_smlprec_aply.f90 mlprec/impl/mld_sprecaply.f90 mlprec/impl/mld_sslud_interface.c mlprec/impl/mld_zmlprec_aply.f90 mlprec/impl/mld_zprecaply.f90 mlprec/impl/mld_zslud_interface.c mlprec/impl/smoother/mld_c_as_smoother_apply.f90 mlprec/impl/smoother/mld_c_base_smoother_apply.f90 mlprec/impl/smoother/mld_c_jac_smoother_apply.f90 mlprec/impl/smoother/mld_d_as_smoother_apply.f90 mlprec/impl/smoother/mld_d_base_smoother_apply.f90 mlprec/impl/smoother/mld_d_jac_smoother_apply.f90 mlprec/impl/smoother/mld_s_as_smoother_apply.f90 mlprec/impl/smoother/mld_s_base_smoother_apply.f90 mlprec/impl/smoother/mld_s_jac_smoother_apply.f90 mlprec/impl/smoother/mld_z_as_smoother_apply.f90 mlprec/impl/smoother/mld_z_base_smoother_apply.f90 mlprec/impl/smoother/mld_z_jac_smoother_apply.f90 mlprec/impl/solver/mld_c_base_solver_apply.f90 mlprec/impl/solver/mld_c_diag_solver_apply.f90 mlprec/impl/solver/mld_c_id_solver_apply.f90 mlprec/impl/solver/mld_c_ilu_solver_apply.f90 mlprec/impl/solver/mld_d_base_solver_apply.f90 mlprec/impl/solver/mld_d_diag_solver_apply.f90 mlprec/impl/solver/mld_d_id_solver_apply.f90 mlprec/impl/solver/mld_d_ilu_solver_apply.f90 mlprec/impl/solver/mld_s_base_solver_apply.f90 mlprec/impl/solver/mld_s_diag_solver_apply.f90 mlprec/impl/solver/mld_s_id_solver_apply.f90 mlprec/impl/solver/mld_s_ilu_solver_apply.f90 mlprec/impl/solver/mld_z_base_solver_apply.f90 mlprec/impl/solver/mld_z_diag_solver_apply.f90 mlprec/impl/solver/mld_z_id_solver_apply.f90 mlprec/impl/solver/mld_z_ilu_solver_apply.f90 mlprec/mld_c_as_smoother.f90 mlprec/mld_c_base_smoother_mod.f90 mlprec/mld_c_base_solver_mod.f90 mlprec/mld_c_diag_solver.f90 mlprec/mld_c_id_solver.f90 mlprec/mld_c_ilu_solver.f90 mlprec/mld_c_jac_smoother.f90 mlprec/mld_c_prec_type.f90 mlprec/mld_c_slu_solver.F90 mlprec/mld_c_sludist_solver.F90 mlprec/mld_c_umf_solver.F90 mlprec/mld_d_as_smoother.f90 mlprec/mld_d_base_smoother_mod.f90 mlprec/mld_d_base_solver_mod.f90 mlprec/mld_d_diag_solver.f90 mlprec/mld_d_id_solver.f90 mlprec/mld_d_ilu_solver.f90 mlprec/mld_d_jac_smoother.f90 mlprec/mld_d_prec_type.f90 mlprec/mld_d_slu_solver.F90 mlprec/mld_d_sludist_solver.F90 mlprec/mld_d_umf_solver.F90 mlprec/mld_s_as_smoother.f90 mlprec/mld_s_base_smoother_mod.f90 mlprec/mld_s_base_solver_mod.f90 mlprec/mld_s_diag_solver.f90 mlprec/mld_s_id_solver.f90 mlprec/mld_s_ilu_solver.f90 mlprec/mld_s_jac_smoother.f90 mlprec/mld_s_prec_type.f90 mlprec/mld_s_slu_solver.F90 mlprec/mld_s_sludist_solver.F90 mlprec/mld_s_umf_solver.F90 mlprec/mld_z_as_smoother.f90 mlprec/mld_z_base_smoother_mod.f90 mlprec/mld_z_base_solver_mod.f90 mlprec/mld_z_diag_solver.f90 mlprec/mld_z_id_solver.f90 mlprec/mld_z_ilu_solver.f90 mlprec/mld_z_jac_smoother.f90 mlprec/mld_z_prec_type.f90 mlprec/mld_z_slu_solver.F90 mlprec/mld_z_sludist_solver.F90 mlprec/mld_z_umf_solver.F90 Fix SuperLU_Dist. SuperLU does not work completely yet. Unify INTENT(INOUT) on solver_apply.
11 years ago
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