mirror of
https://github.com/sfilippone/amg4psblas.git
synced 2026-10-06 14:44:55 +00:00
mld2p4:
docs/pdf/gettingstarted.tex docs/pdf/overview.tex docs/pdf/userinterface.tex docs/userguide.pdf mlprec/mld_cas_aply.f90 mlprec/mld_cas_bld.f90 mlprec/mld_cbaseprec_aply.f90 mlprec/mld_cbaseprec_bld.f90 mlprec/mld_cilu_bld.f90 mlprec/mld_cilut_fact.f90 mlprec/mld_cmlprec_aply.f90 mlprec/mld_cmlprec_bld.f90 mlprec/mld_cprecinit.f90 mlprec/mld_cprecset.f90 mlprec/mld_das_aply.f90 mlprec/mld_das_bld.f90 mlprec/mld_dbaseprec_aply.f90 mlprec/mld_dbaseprec_bld.f90 mlprec/mld_dilu_bld.f90 mlprec/mld_dilut_fact.f90 mlprec/mld_dmlprec_aply.f90 mlprec/mld_dmlprec_bld.f90 mlprec/mld_dprecinit.f90 mlprec/mld_dprecset.f90 mlprec/mld_prec_type.f90 mlprec/mld_sas_aply.f90 mlprec/mld_sas_bld.f90 mlprec/mld_sbaseprec_aply.f90 mlprec/mld_sbaseprec_bld.f90 mlprec/mld_silu_bld.f90 mlprec/mld_silut_fact.f90 mlprec/mld_smlprec_aply.f90 mlprec/mld_smlprec_bld.f90 mlprec/mld_sprecinit.f90 mlprec/mld_sprecset.f90 mlprec/mld_zas_aply.f90 mlprec/mld_zas_bld.f90 mlprec/mld_zbaseprec_aply.f90 mlprec/mld_zbaseprec_bld.f90 mlprec/mld_zilu_bld.f90 mlprec/mld_zilut_fact.f90 mlprec/mld_zmlprec_aply.f90 mlprec/mld_zmlprec_bld.f90 mlprec/mld_zprecinit.f90 mlprec/mld_zprecset.f90 test/fileread/cf_sample.f90 test/fileread/df_bench.f90 test/fileread/df_sample.f90 test/fileread/sf_sample.f90 test/fileread/zf_bench.f90 test/fileread/zf_sample.f90 test/pargen/ppde.f90 test/pargen/spde.f90 Changed names of entris in iprcparm and updated documentation, take 1. Still missing: final fixes for coarse level.
This commit is contained in:
@@ -41,9 +41,16 @@ The following steps are required:
|
||||
A detailed description of the above routines is given in Section~\ref{sec:userinterface}.
|
||||
|
||||
Note that the Fortran 95 module \verb|mld_prec_mod| must be used in the program
|
||||
calling the MLD2P4 routines. Furthermore, to apply MLD2P4 with the Krylov solvers
|
||||
from PSBLAS, the module \verb|psb_krylov_mod| must be used too.
|
||||
\textbf{DOBBIAMO SPECIFICARE QUALCHE ALTRO MODULO, AD ESEMPIO psb\_base\_mod?}
|
||||
calling the MLD2P4 routines; this requires also the use of the
|
||||
\verb|psb_base_mod| for the sparse matrix and communication descriptor
|
||||
data types, as well as for the kind parameters for vectors, and the
|
||||
use of the module \verb|psb_krylov_mod| for interfacing with the
|
||||
Krylov solvers. Note that the include path for MLD2P4 must override
|
||||
those for the base PSBLAS, e.g. they must come first in the sequence
|
||||
passed to the compiler, as the MLD2P4 version of the Krylov interfaces
|
||||
must override that of PSBLAS. This will change in the future when the
|
||||
support for the \verb|class| statement becomes widespread in Fortran
|
||||
compilers.
|
||||
Examples showing the basic use of MLD2P4 are reported in Section~\ref{sec:examples}.
|
||||
|
||||
\noindent
|
||||
|
||||
@@ -28,10 +28,12 @@ discretization of a PDE). The \emph{smoothed aggregation} technique is applied
|
||||
as algebraic coarsening strategy~\cite{BREZINA_VANEK,VANEK_MANDEL_BREZINA}.
|
||||
\end{itemize}
|
||||
|
||||
The package is written in \emph{Fortran~95}, following an \emph{object-oriented approach}
|
||||
through the exploitation of features such as abstract data type creation, functional
|
||||
overloading and dynamic memory management, while providing a smooth path towards the integration in legacy application codes.
|
||||
\textbf{NON MI PIACE QUESTO PERIODO, E' TROPPO LUNGO. RIUSCITE A SCRIVERLO MEGLIO?}
|
||||
The package is written in \emph{Fortran~95}, following an
|
||||
\emph{object-oriented approach} through the exploitation of features
|
||||
such as abstract data type creation, functional
|
||||
overloading and dynamic memory management.% , while providing a smooth
|
||||
% path towards the integration in legacy application codes.
|
||||
% \textbf{NON MI PIACE QUESTO PERIODO, E' TROPPO LUNGO. RIUSCITE A SCRIVERLO MEGLIO?}
|
||||
The parallel implementation is based
|
||||
on a Single Program Multiple Data (SPMD) paradigm for distributed-memory architectures.
|
||||
Single and double precision implementations of MLD2P4 are available for both the
|
||||
@@ -39,7 +41,8 @@ real and the complex case, that can be used through a single interface.
|
||||
|
||||
|
||||
MLD2P4 has been designed to implement scalable and easy-to-use multilevel preconditioners
|
||||
in the context of the \emph{PSBLAS (Parallel Sparse BLAS) computational framework}~\cite{psblas_00}.
|
||||
in the context of the \emph{PSBLAS (Parallel Sparse BLAS)
|
||||
computational framework}~\cite{psblas_00}.
|
||||
PSBLAS is a library originally developed to address the parallel implementation of
|
||||
iterative solvers for sparse linear system, by providing basic linear algebra
|
||||
operators and data management facilities for distributed sparse matrices; it
|
||||
|
||||
+18
-23
@@ -25,13 +25,13 @@ i.e.
|
||||
\item the arrays containing the vectors $v$ and $w$ involved in
|
||||
the preconditioner application $w=M^{-1}v$ must be of type
|
||||
\emph{type}\verb|(|\emph{kind\_parameter}\verb|)|, with \emph{type} =
|
||||
\verb|real|, \verb|complex| and \emph{kind\_parameter} = \verb|kind(1.)|,
|
||||
\verb|real|, \verb|complex| and \emph{kind\_parameter} = \verb|kind(1.e0)|,
|
||||
\verb|kind(1.d0)|, according to the sparse matrix and preconditioner
|
||||
data structure; note that the PSBLAS module provides the constants \verb|psb_spk_|
|
||||
= \verb|kind(1.)| and \verb|psb_dpk_| = \verb|kind(1.d0)|;
|
||||
= \verb|kind(1.e0)| and \verb|psb_dpk_| = \verb|kind(1.d0)|;
|
||||
\item real parameters defining the preconditioner must be declared
|
||||
according to the precision of the previous data structures
|
||||
(see Section \ref{sec:precset}).
|
||||
(see Section~\ref{sec:precset}).
|
||||
\end{itemize}
|
||||
A description of each routine is given in the remainder of this section.
|
||||
|
||||
@@ -88,7 +88,7 @@ contained in \verb|val|.
|
||||
A mnemonic constant has been associated to each of these
|
||||
numbers, as reported in Tables~\ref{tab:p_type}-\ref{tab:p_coarse}.\\
|
||||
\verb|val | & \verb|integer| \emph{or} \verb|character(len=*)| \emph{or}
|
||||
\verb|real(kind(1.))| \emph{or} \verb|real(kind(1.d0))|,
|
||||
\verb|real(psb_spk_)| \emph{or} \verb|real(psb_dpk_)|,
|
||||
\verb|intent(in)|.\\
|
||||
& The value of the parameter to be set. The list of allowed
|
||||
values and the corresponding data types is given in
|
||||
@@ -142,10 +142,7 @@ ACCESSIBILE ALL'UTENTE.}
|
||||
& 'DIAG' \ \ \ 'BJAC' \ \ \ 'AS'
|
||||
& 'AS'
|
||||
& basic one-level preconditioner (i.e.\ smoother) of the
|
||||
multi-level preconditioner
|
||||
\textbf{CAMBIARE NOME COSTANTE NEL SW, ORA E'
|
||||
mld\_prec\_type. INIBIRE no\_prec NELL'AMBITO DEL
|
||||
MULTILEVEL.} \\
|
||||
multi-level preconditioner \\
|
||||
\verb|mld_smoother_pos_| & \verb|character(len=*)|
|
||||
& 'PRE' \ \ \ 'POST' \ \ \ 'TWOSIDE'
|
||||
& 'POST'
|
||||
@@ -168,7 +165,7 @@ ACCESSIBILE ALL'UTENTE.}
|
||||
\verb|mld_sub_ovr| & \verb|integer|
|
||||
& any number $\ge 0$
|
||||
& 1
|
||||
& \textbf{CAMBIARE NOME PARAMETRO NEL SW} number of overlap in the basic Schwarz preconditioner \\
|
||||
& number of overlap in the basic Schwarz preconditioner \\
|
||||
\verb|mld_sub_restr_| & \verb|character(len=*)|
|
||||
& 'HALO' \ \ \ 'NONE'
|
||||
& 'HALO'
|
||||
@@ -185,14 +182,13 @@ for incomplete LU with threshold, 'UMF' for complete LU using UMFPACK~\cite{UMFP
|
||||
\verb|mld_sub_fillin_| & \verb|integer|
|
||||
& any number $\ge 0$
|
||||
& 0
|
||||
& \textbf{CAMBIARE NOME PARAMETRO NEL SW} fill-in level for 'ILU', 'MILU' and 'ILUT' of local blocks\\
|
||||
& fill-in level for 'ILU', 'MILU' and 'ILUT' of local blocks\\
|
||||
\verb|mld_sub_thresh_| & \verb|real|
|
||||
& any number $\ge 0.$
|
||||
& 0.
|
||||
& drop tolerance for 'ILUT'
|
||||
\textbf{NELLA DOCUMENTAZIONE INTERNA DELLA ROUTINE DI FATTORIZZAZIONE C'E' INTERO, CAMBIARE!}\\
|
||||
& drop tolerance for 'ILUT' \\
|
||||
\verb|mld_sub_ren_| & \verb|character(len=*)|
|
||||
& \textbf{MANCA COSTANTE STRINGA ASSOCIATA}
|
||||
& 'RENUM\_NONE', 'RENUM\_GLOBAL' %, 'RENUM\_GPS'
|
||||
&
|
||||
& reordering algorithm for the local blocks \\
|
||||
\hline
|
||||
@@ -223,10 +219,10 @@ for incomplete LU with threshold, 'UMF' for complete LU using UMFPACK~\cite{UMFP
|
||||
& 0.
|
||||
& dropping threshold in aggregation \\
|
||||
\verb|mld_aggr_eig_| & \verb|character(len=*)|
|
||||
& \textbf{MANCA STRINGA CORRISPONDENTE a mld\_max\_norm}
|
||||
& 'ANORM'???
|
||||
& 'A\_NORMI'
|
||||
&
|
||||
& define the algorithm to evaluate the maximum eigenvalue of $D^{-1}A$ for smoothed
|
||||
aggregation. Now, only the A-norm of the matrix is available\\
|
||||
aggregation. Currently only the infinity norm of the matrix A is available\\
|
||||
\hline
|
||||
\end{tabular}
|
||||
\end{center}
|
||||
@@ -343,9 +339,10 @@ and hence is completely transparent to the user.
|
||||
\verb|trans| & \verb|character(len=1), optional, intent(in).|\\
|
||||
& If \verb|trans| = \verb|'N','n'| then $op(M^{-1}) = M^{-1}$;
|
||||
if \verb|trans| = \verb|'T','t'| then $op(M^{-1}) = M^{-T}$
|
||||
(transpose of $M^{-1})$.\\
|
||||
(transpose of $M^{-1})$; if \verb|trans| = \verb|'C','c'| then $op(M^{-1}) = M^{-C}$
|
||||
(conjugate transpose of $M^{-1})$.\\
|
||||
\verb|work| & \emph{type}\verb|(|\emph{kind\_parameter}\verb|), dimension(:), optional, target|.\\
|
||||
& Workspace. Its size must be at
|
||||
& Workspace. Its size should be at
|
||||
least \verb|4 * psb_cd_get_local_cols(desc_a)| (see the PSBLAS User's Guide).
|
||||
Note that \emph{type} and \emph{kind\_parameter} must be chosen according
|
||||
to the real/complex, single/double precision version of MLD2P4 under use.\\
|
||||
@@ -380,8 +377,7 @@ This routine deallocates the preconditioner data structure.
|
||||
|
||||
\noindent
|
||||
This routine prints a description of the preconditioner
|
||||
to the standard output or to a file.
|
||||
\textbf{FARE UNA SOLA ROUTINE, COL PARAMETRO IOUT OPZIONALE.}
|
||||
to a file.
|
||||
|
||||
\subsubsection*{Arguments}
|
||||
|
||||
@@ -389,10 +385,9 @@ to the standard output or to a file.
|
||||
\verb|p| & \verb|type(mld_|\emph{x}\verb|prec_type), intent(in)|.\\
|
||||
& The preconditioner data structure. Note that \emph{x} must be chosen according
|
||||
to the real/complex, single/double precision version of MLD2P4 under use.\\
|
||||
\verb|iout| & \verb|integer, intent(in)|.\\
|
||||
\verb|iout| & \verb|integer, intent(in), optional|.\\
|
||||
& The id of the file where the preconditioner description
|
||||
will be printed. If \verb|iout| is missing, the description is printed on
|
||||
the standard output.\\
|
||||
will be printed, default is standard output.\\
|
||||
\end{tabular}
|
||||
|
||||
%%% Local Variables:
|
||||
|
||||
+977
-1005
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user