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:
Salvatore Filippone
2008-06-25 14:52:38 +00:00
parent d4c258a204
commit 9bf85f340a
53 changed files with 1594 additions and 1807 deletions
+10 -3
View File
@@ -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
+8 -5
View File
@@ -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
View File
@@ -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
View File
File diff suppressed because it is too large Load Diff