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

86 lines
3.3 KiB
Plaintext

This directory contains the MLD2P4 set of preconditioners, version 2.0-beta
WHAT'S NEW
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, 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.
12 years ago
previous version(s).
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. It's easier done than said!
Note in this beta version the interface to SuperLU_Dist 3.3 is
having some issues (most notably, we have chosen to have a memory
leak in place of a segfault), we'll fix them asap.
Versions tested:
UMFPACK: 5.4
SuperLU: 4.3
SuperLU_Dist: 3.3
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 source directory>
adding the options for SuperLU, SuperLU_Dist, UMFPACK as desired.
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.
- The Krylov methods are linked and recompiled from the PSBLAS source
directory; thus we define here two libraries, libmld_krylov.a and
libmld_prec.a, and a bunch of modules, including a duplicate of
psb_krylov_mod.mod. The directories for the MLD2P4 versions, in both
the include and link paths, must come before the PSBLAS ones,
because the Krylov interface is superseded by the new one.
Once the CLASS() construct becomes available in Gnu Fortran, this
will no longer be necessary, and the duplicate Krylov library and
module will go away, leaving only the mld_prec library and module.
- 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
developed by
Salvatore Filippone
Pasqua D'Ambra
Daniela di Serafino
Alfredo Buttari