diff --git a/README b/README.md similarity index 97% rename from README rename to README.md index f8b2f1c8..b0def0e7 100644 --- a/README +++ b/README.md @@ -70,9 +70,12 @@ NOTES settings, but the rest of the application needs not be changed. -Contributors +The MLD2P4 team. +--------------- +Project lead: +Salvatore Filippone -Salvatore Filippone +Contributors: Pasqua D'Ambra Daniela di Serafino Ambra Abdullahi Hassan diff --git a/docs/html/contents.png b/docs/html/contents.png deleted file mode 100644 index 0c752c66..00000000 Binary files a/docs/html/contents.png and /dev/null differ diff --git a/docs/html/crossref.png b/docs/html/crossref.png deleted file mode 100644 index 7dd2dddf..00000000 Binary files a/docs/html/crossref.png and /dev/null differ diff --git a/docs/html/img1.png b/docs/html/img1.png deleted file mode 100644 index 6e9422be..00000000 Binary files a/docs/html/img1.png and /dev/null differ diff --git a/docs/html/img10.png b/docs/html/img10.png deleted file mode 100644 index 9568c111..00000000 Binary files a/docs/html/img10.png and /dev/null differ diff --git a/docs/html/img11.png b/docs/html/img11.png deleted file mode 100644 index 3ff4c6e6..00000000 Binary files a/docs/html/img11.png and /dev/null differ diff --git a/docs/html/img12.png b/docs/html/img12.png deleted file mode 100644 index 3649dbe8..00000000 Binary files a/docs/html/img12.png and /dev/null differ diff --git a/docs/html/img13.png b/docs/html/img13.png deleted file mode 100644 index 63b7e7a7..00000000 Binary files a/docs/html/img13.png and /dev/null differ diff --git a/docs/html/img14.png b/docs/html/img14.png deleted file mode 100644 index d212e882..00000000 Binary files a/docs/html/img14.png and /dev/null differ diff --git a/docs/html/img15.png b/docs/html/img15.png deleted file mode 100644 index 63669b77..00000000 Binary files a/docs/html/img15.png and /dev/null differ diff --git a/docs/html/img16.png b/docs/html/img16.png deleted file mode 100644 index c026878a..00000000 Binary files a/docs/html/img16.png and /dev/null differ diff --git a/docs/html/img17.png b/docs/html/img17.png deleted file mode 100644 index ab9d063b..00000000 Binary files a/docs/html/img17.png and /dev/null differ diff --git a/docs/html/img18.png b/docs/html/img18.png deleted file mode 100644 index 2efc6035..00000000 Binary files a/docs/html/img18.png and /dev/null differ diff --git a/docs/html/img19.png b/docs/html/img19.png deleted file mode 100644 index 50f1ef67..00000000 Binary files a/docs/html/img19.png and /dev/null differ diff --git a/docs/html/img2.png b/docs/html/img2.png deleted file mode 100644 index b704a4b3..00000000 Binary files a/docs/html/img2.png and /dev/null differ diff --git a/docs/html/img20.png b/docs/html/img20.png deleted file mode 100644 index 91841e80..00000000 Binary files a/docs/html/img20.png and /dev/null differ diff --git a/docs/html/img21.png b/docs/html/img21.png deleted file mode 100644 index a8fb8e21..00000000 Binary files a/docs/html/img21.png and /dev/null differ diff --git a/docs/html/img22.png b/docs/html/img22.png deleted file mode 100644 index aa79b4b2..00000000 Binary files a/docs/html/img22.png and /dev/null differ diff --git a/docs/html/img23.png b/docs/html/img23.png deleted file mode 100644 index 5cca2abd..00000000 Binary files a/docs/html/img23.png and /dev/null differ diff --git a/docs/html/img24.png b/docs/html/img24.png deleted file mode 100644 index 71aa6915..00000000 Binary files a/docs/html/img24.png and /dev/null differ diff --git a/docs/html/img25.png b/docs/html/img25.png deleted file mode 100644 index 80614919..00000000 Binary files a/docs/html/img25.png and /dev/null differ diff --git a/docs/html/img26.png b/docs/html/img26.png deleted file mode 100644 index c7bfe75b..00000000 Binary files a/docs/html/img26.png and /dev/null differ diff --git a/docs/html/img27.png b/docs/html/img27.png deleted file mode 100644 index ea594f48..00000000 Binary files a/docs/html/img27.png and /dev/null differ diff --git a/docs/html/img28.png b/docs/html/img28.png deleted file mode 100644 index fea48403..00000000 Binary files a/docs/html/img28.png and /dev/null differ diff --git a/docs/html/img29.png b/docs/html/img29.png deleted file mode 100644 index fd4e255c..00000000 Binary files a/docs/html/img29.png and /dev/null differ diff --git a/docs/html/img3.png b/docs/html/img3.png deleted file mode 100644 index 27acb69b..00000000 Binary files a/docs/html/img3.png and /dev/null differ diff --git a/docs/html/img30.png b/docs/html/img30.png deleted file mode 100644 index 79d5c4c5..00000000 Binary files a/docs/html/img30.png and /dev/null differ diff --git a/docs/html/img31.png b/docs/html/img31.png deleted file mode 100644 index abff1e55..00000000 Binary files a/docs/html/img31.png and /dev/null differ diff --git a/docs/html/img32.png b/docs/html/img32.png deleted file mode 100644 index 6a3a5c8e..00000000 Binary files a/docs/html/img32.png and /dev/null differ diff --git a/docs/html/img33.png b/docs/html/img33.png deleted file mode 100644 index 0e0acf00..00000000 Binary files a/docs/html/img33.png and /dev/null differ diff --git a/docs/html/img34.png b/docs/html/img34.png deleted file mode 100644 index 15a5966f..00000000 Binary files a/docs/html/img34.png and /dev/null differ diff --git a/docs/html/img35.png b/docs/html/img35.png deleted file mode 100644 index 7c9551eb..00000000 Binary files a/docs/html/img35.png and /dev/null differ diff --git a/docs/html/img36.png b/docs/html/img36.png deleted file mode 100644 index 097c4318..00000000 Binary files a/docs/html/img36.png and /dev/null differ diff --git a/docs/html/img37.png b/docs/html/img37.png deleted file mode 100644 index 5c336962..00000000 Binary files a/docs/html/img37.png and /dev/null differ diff --git a/docs/html/img38.png b/docs/html/img38.png deleted file mode 100644 index 6f37179c..00000000 Binary files a/docs/html/img38.png and /dev/null differ diff --git a/docs/html/img39.png b/docs/html/img39.png deleted file mode 100644 index 126db528..00000000 Binary files a/docs/html/img39.png and /dev/null differ diff --git a/docs/html/img4.png b/docs/html/img4.png deleted file mode 100644 index e6f697e8..00000000 Binary files a/docs/html/img4.png and /dev/null differ diff --git a/docs/html/img40.png b/docs/html/img40.png deleted file mode 100644 index 834b2218..00000000 Binary files a/docs/html/img40.png and /dev/null differ diff --git a/docs/html/img41.png b/docs/html/img41.png deleted file mode 100644 index 17b9e5c3..00000000 Binary files a/docs/html/img41.png and /dev/null differ diff --git a/docs/html/img42.png b/docs/html/img42.png deleted file mode 100644 index 77bd82e9..00000000 Binary files a/docs/html/img42.png and /dev/null differ diff --git a/docs/html/img43.png b/docs/html/img43.png deleted file mode 100644 index 588abb24..00000000 Binary files a/docs/html/img43.png and /dev/null differ diff --git a/docs/html/img44.png b/docs/html/img44.png deleted file mode 100644 index 29d01803..00000000 Binary files a/docs/html/img44.png and /dev/null differ diff --git a/docs/html/img45.png b/docs/html/img45.png deleted file mode 100644 index 7f609739..00000000 Binary files a/docs/html/img45.png and /dev/null differ diff --git a/docs/html/img46.png b/docs/html/img46.png deleted file mode 100644 index 2e5b8d82..00000000 Binary files a/docs/html/img46.png and /dev/null differ diff --git a/docs/html/img47.png b/docs/html/img47.png deleted file mode 100644 index 242ad652..00000000 Binary files a/docs/html/img47.png and /dev/null differ diff --git a/docs/html/img48.png b/docs/html/img48.png deleted file mode 100644 index 71c0f11f..00000000 Binary files a/docs/html/img48.png and /dev/null differ diff --git a/docs/html/img49.png b/docs/html/img49.png deleted file mode 100644 index 47d48775..00000000 Binary files a/docs/html/img49.png and /dev/null differ diff --git a/docs/html/img5.png b/docs/html/img5.png deleted file mode 100644 index 87d06a09..00000000 Binary files a/docs/html/img5.png and /dev/null differ diff --git a/docs/html/img50.png b/docs/html/img50.png deleted file mode 100644 index cf9cddd7..00000000 Binary files a/docs/html/img50.png and /dev/null differ diff --git a/docs/html/img51.png b/docs/html/img51.png deleted file mode 100644 index 5ed44007..00000000 Binary files a/docs/html/img51.png and /dev/null differ diff --git a/docs/html/img52.png b/docs/html/img52.png deleted file mode 100644 index fcaf7a68..00000000 Binary files a/docs/html/img52.png and /dev/null differ diff --git a/docs/html/img53.png b/docs/html/img53.png deleted file mode 100644 index 86ee555f..00000000 Binary files a/docs/html/img53.png and /dev/null differ diff --git a/docs/html/img54.png b/docs/html/img54.png deleted file mode 100644 index 1ba05f3e..00000000 Binary files a/docs/html/img54.png and /dev/null differ diff --git a/docs/html/img55.png b/docs/html/img55.png deleted file mode 100644 index 1378d964..00000000 Binary files a/docs/html/img55.png and /dev/null differ diff --git a/docs/html/img56.png b/docs/html/img56.png deleted file mode 100644 index 6a787014..00000000 Binary files a/docs/html/img56.png and /dev/null differ diff --git a/docs/html/img57.png b/docs/html/img57.png deleted file mode 100644 index 9427a62e..00000000 Binary files a/docs/html/img57.png and /dev/null differ diff --git a/docs/html/img58.png b/docs/html/img58.png deleted file mode 100644 index 0a20920a..00000000 Binary files a/docs/html/img58.png and /dev/null differ diff --git a/docs/html/img59.png b/docs/html/img59.png deleted file mode 100644 index f1319814..00000000 Binary files a/docs/html/img59.png and /dev/null differ diff --git a/docs/html/img6.png b/docs/html/img6.png deleted file mode 100644 index 952b5ef1..00000000 Binary files a/docs/html/img6.png and /dev/null differ diff --git a/docs/html/img60.png b/docs/html/img60.png deleted file mode 100644 index f6e845e6..00000000 Binary files a/docs/html/img60.png and /dev/null differ diff --git a/docs/html/img61.png b/docs/html/img61.png deleted file mode 100644 index a681445d..00000000 Binary files a/docs/html/img61.png and /dev/null differ diff --git a/docs/html/img62.png b/docs/html/img62.png deleted file mode 100644 index d4654d6e..00000000 Binary files a/docs/html/img62.png and /dev/null differ diff --git a/docs/html/img63.png b/docs/html/img63.png deleted file mode 100644 index 0de130c7..00000000 Binary files a/docs/html/img63.png and /dev/null differ diff --git a/docs/html/img64.png b/docs/html/img64.png deleted file mode 100644 index bd52ba03..00000000 Binary files a/docs/html/img64.png and /dev/null differ diff --git a/docs/html/img65.png b/docs/html/img65.png deleted file mode 100644 index b27f1696..00000000 Binary files a/docs/html/img65.png and /dev/null differ diff --git a/docs/html/img66.png b/docs/html/img66.png deleted file mode 100644 index d0ad453b..00000000 Binary files a/docs/html/img66.png and /dev/null differ diff --git a/docs/html/img67.png b/docs/html/img67.png deleted file mode 100644 index 35bdb2e6..00000000 Binary files a/docs/html/img67.png and /dev/null differ diff --git a/docs/html/img68.png b/docs/html/img68.png deleted file mode 100644 index c1829efe..00000000 Binary files a/docs/html/img68.png and /dev/null differ diff --git a/docs/html/img69.png b/docs/html/img69.png deleted file mode 100644 index 9db10080..00000000 Binary files a/docs/html/img69.png and /dev/null differ diff --git a/docs/html/img7.png b/docs/html/img7.png deleted file mode 100644 index 3502085d..00000000 Binary files a/docs/html/img7.png and /dev/null differ diff --git a/docs/html/img70.png b/docs/html/img70.png deleted file mode 100644 index 991ff18c..00000000 Binary files a/docs/html/img70.png and /dev/null differ diff --git a/docs/html/img71.png b/docs/html/img71.png deleted file mode 100644 index b9247035..00000000 Binary files a/docs/html/img71.png and /dev/null differ diff --git a/docs/html/img72.png b/docs/html/img72.png deleted file mode 100644 index 5ae525f8..00000000 Binary files a/docs/html/img72.png and /dev/null differ diff --git a/docs/html/img73.png b/docs/html/img73.png deleted file mode 100644 index 7143bb00..00000000 Binary files a/docs/html/img73.png and /dev/null differ diff --git a/docs/html/img74.png b/docs/html/img74.png deleted file mode 100644 index 61650309..00000000 Binary files a/docs/html/img74.png and /dev/null differ diff --git a/docs/html/img75.png b/docs/html/img75.png deleted file mode 100644 index 8085fa9a..00000000 Binary files a/docs/html/img75.png and /dev/null differ diff --git a/docs/html/img76.png b/docs/html/img76.png deleted file mode 100644 index 323290a9..00000000 Binary files a/docs/html/img76.png and /dev/null differ diff --git a/docs/html/img77.png b/docs/html/img77.png deleted file mode 100644 index 6da8adfa..00000000 Binary files a/docs/html/img77.png and /dev/null differ diff --git a/docs/html/img78.png b/docs/html/img78.png deleted file mode 100644 index 5bf75696..00000000 Binary files a/docs/html/img78.png and /dev/null differ diff --git a/docs/html/img79.png b/docs/html/img79.png deleted file mode 100644 index d44da06e..00000000 Binary files a/docs/html/img79.png and /dev/null differ diff --git a/docs/html/img8.png b/docs/html/img8.png deleted file mode 100644 index f31f1db8..00000000 Binary files a/docs/html/img8.png and /dev/null differ diff --git a/docs/html/img80.png b/docs/html/img80.png deleted file mode 100644 index af549151..00000000 Binary files a/docs/html/img80.png and /dev/null differ diff --git a/docs/html/img81.png b/docs/html/img81.png deleted file mode 100644 index 9f6148ed..00000000 Binary files a/docs/html/img81.png and /dev/null differ diff --git a/docs/html/img82.png b/docs/html/img82.png deleted file mode 100644 index 02046ff3..00000000 Binary files a/docs/html/img82.png and /dev/null differ diff --git a/docs/html/img83.png b/docs/html/img83.png deleted file mode 100644 index 51f7e6bb..00000000 Binary files a/docs/html/img83.png and /dev/null differ diff --git a/docs/html/img84.png b/docs/html/img84.png deleted file mode 100644 index 88943270..00000000 Binary files a/docs/html/img84.png and /dev/null differ diff --git a/docs/html/img85.png b/docs/html/img85.png deleted file mode 100644 index 9758b0d8..00000000 Binary files a/docs/html/img85.png and /dev/null differ diff --git a/docs/html/img86.png b/docs/html/img86.png deleted file mode 100644 index b0843489..00000000 Binary files a/docs/html/img86.png and /dev/null differ diff --git a/docs/html/img87.png b/docs/html/img87.png deleted file mode 100644 index 9edf3adb..00000000 Binary files a/docs/html/img87.png and /dev/null differ diff --git a/docs/html/img88.png b/docs/html/img88.png deleted file mode 100644 index f9dfb321..00000000 Binary files a/docs/html/img88.png and /dev/null differ diff --git a/docs/html/img89.png b/docs/html/img89.png deleted file mode 100644 index 69a3e66c..00000000 Binary files a/docs/html/img89.png and /dev/null differ diff --git a/docs/html/img9.png b/docs/html/img9.png deleted file mode 100644 index e411ffb3..00000000 Binary files a/docs/html/img9.png and /dev/null differ diff --git a/docs/html/img90.png b/docs/html/img90.png deleted file mode 100644 index f390f644..00000000 Binary files a/docs/html/img90.png and /dev/null differ diff --git a/docs/html/img91.png b/docs/html/img91.png deleted file mode 100644 index 18a953e2..00000000 Binary files a/docs/html/img91.png and /dev/null differ diff --git a/docs/html/img92.png b/docs/html/img92.png deleted file mode 100644 index b58a4533..00000000 Binary files a/docs/html/img92.png and /dev/null differ diff --git a/docs/html/img93.png b/docs/html/img93.png deleted file mode 100644 index cc5d0c13..00000000 Binary files a/docs/html/img93.png and /dev/null differ diff --git a/docs/html/index.html b/docs/html/index.html deleted file mode 100644 index 1f0d2ee7..00000000 --- a/docs/html/index.html +++ /dev/null @@ -1,184 +0,0 @@ - - - - -
-- -
-
-
-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 can be used in conjuction with the Krylov solvers -available in this framework. MLD2P4 enables the user to easily specify different -features of an algebraic multilevel preconditioner, thus allowing to search -for the “best” preconditioner for the problem at hand. - -
-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. - -
-This guide provides a brief description of the functionalities and -the user interface of MLD2P4. - - -
- - - -
- - - - diff --git a/docs/html/node10.html b/docs/html/node10.html deleted file mode 100644 index 37ec11f4..00000000 --- a/docs/html/node10.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - -
-
-
examples
and tests
directories;
-both of them are further divided into fileread
and
-pdegen
subdirectories. Their purpose is as follows:
-runs
- subdirectories, to experiment with the full range of preconditioners
- implemented in the package.
-fileread
directories contain sample programs that read
-sparse matrices from files, according to the Matrix Market or the
-Harwell-Boeing storage format; the pdegen
programs generate
-matrices in full parallel mode from the discretization of a sample partial
-differential equation.
-
--Multigrid preconditioners, coupled with Krylov iterative -solvers, are widely used in the parallel solution of large and sparse linear systems, -because of their optimality in the solution of linear systems arising from the -discretization of scalar elliptic Partial Differential Equations (PDEs) on regular grids. -Optimality, also known as algorithmic scalability, is the property -of having a computational cost per iteration that depends linearly on -the problem size, and a convergence rate that is independent of the problem size. - -
-Multigrid preconditioners are based on a recursive application of a two-grid process -consisting of smoother iterations and a coarse-space (or coarse-level) correction. -The smoothers may be either basic iterative methods, such as the Jacobi and Gauss-Seidel ones, -or more complex subspace-correction methods, such as the Schwarz ones. -The coarse-space correction consists of solving, in an appropriately chosen -coarse space, the residual equation associated with the approximate solution computed -by the smoother, and of using the solution of this equation to correct the -previous approximation. The transfer of information between the original -(fine) space and the coarse one is performed by using suitable restriction and -prolongation operators. The construction of the coarse space and the corresponding -transfer operators is carried out by applying a so-called coarsening algorithm to the system -matrix. Two main approaches can be used to perform coarsening: the geometric approach, -which exploits the knowledge of some physical grid associated with the matrix -and requires the user to define transfer operators from the fine -to the coarse level and vice versa, and the algebraic approach, which builds -the coarse-space correction and the associate transfer operators using only matrix -information. The first approach may be difficult when the system comes from -discretizations on complex geometries; -furthermore, ad hoc one-level smoothers may be required to get an efficient -interplay between fine and coarse levels, e.g., when matrices with highly varying coefficients -are considered. The second approach performs a fully automatic coarsening and enforces the -interplay between fine and coarse level by suitably choosing the coarse space and -the coarse-to-fine interpolation (see, e.g., [3,24,22] for details.) - -
-MLD2P4 uses a pure algebraic approach, based on the smoothed -aggregation algorithm [2,26], -for building the sequence of coarse matrices and transfer operators, -starting from the original one. -A decoupled version of this algorithm is implemented, where the smoothed -aggregation is applied locally to each submatrix [25]. -A brief description of the AMG preconditioners implemented in MLD2P4 is given in -Sections 4.1-4.3. For further details the reader -is referred to [4,5,7,8]. - -
-We note that optimal multigrid preconditioners do not necessarily correspond -to minimum execution times in a parallel setting. Indeed, to obtain effective parallel -multigrid preconditioners, a tradeoff between the optimality and the cost of building and -applying the smoothers and the coarse-space corrections must be achieved. Effective -parallel preconditioners require algorithmic scalability to be coupled with implementation -scalability, i.e., a computational cost per iteration which remains (almost) constant as -the number of parallel processors increases. - -
-
-
-In order to describe the AMG preconditioners available in MLD2P4, we consider a
-linear system
-
-
-
-Let us consider as finest index space the set of row (column) indices of , i.e.,
-
-
.
-Any algebraic multilevel preconditioners implemented in MLD2P4 generates
-a hierarchy of index spaces and a corresponding hierarchy of matrices,
-
-
- -
- -
-The components produced in the build phase may be combined in several ways
-to obtain different multilevel preconditioners;
-this is done in the application phase, i.e., in the computation of a vector
-of type , where
denotes the preconditioner, usually within an iteration
-of a Krylov solver [21]. An example of such a combination, known as
-V-cycle, is given in Figure 1. In this case, a single iteration
-of the same smoother is used before and after the the recursive call to the V-cycle (i.e.,
-in the pre-smoothing and post-smoothing phases); however, different choices can be
-performed. Other cycles can be defined; in MLD2P4, we implemented the standard V-cycle
-and W-cycle [3], and a version of the K-cycle described
-in [20].
-
-
- -
- - - - diff --git a/docs/html/node14.html b/docs/html/node14.html deleted file mode 100644 index e560ac94..00000000 --- a/docs/html/node14.html +++ /dev/null @@ -1,415 +0,0 @@ - - - - - -
-In order to define the prolongator , used to compute
-the coarse-level matrix
, MLD2P4 uses the smoothed aggregation
-algorithm described in [2,26].
-The basic idea of this algorithm is to build a coarse set of indices
-
by suitably grouping the indices of
into disjoint
-subsets (aggregates), and to define the coarse-to-fine space transfer operator
-
by applying a suitable smoother to a simple piecewise constant
-prolongation operator, with the aim of improving the quality of the coarse-space correction.
-
-
-Three main steps can be identified in the smoothed aggregation procedure: - -
-In order to perform the coarsening step, the smoothed aggregation algorithm
-described in [26] is used. In this algorithm,
-each index
- corresponds to an aggregate
of
,
-consisting of a suitably chosen index
-
and indices that are (usually) contained in a
-strongly-coupled neighborood of
, i.e.,
-
-
-
-The prolongator is built starting from a tentative prolongator
-
-
, defined as
-
-
-
- -
- - - - diff --git a/docs/html/node15.html b/docs/html/node15.html deleted file mode 100644 index f45480f8..00000000 --- a/docs/html/node15.html +++ /dev/null @@ -1,289 +0,0 @@ - - - - - --The smoothers implemented in MLD2P4 include the Jacobi and block-Jacobi methods, -a hybrid version of the forward and backward Gauss-Seidel methods, and the -additive Schwarz (AS) ones (see, e.g., [21,22]). - -
-The hybrid Gauss-Seidel -version is considered because the original Gauss-Seidel method is inherently sequential. -At each iteration of the hybrid version, each parallel process uses the most recent values -of its own local variables and the values of the non-local variables computed at the -previous iteration, obtained by exchanging data with other processes before -the beginning of the current iteration. - -
-In the AS methods, the index space is divided into
-subsets
of size
, possibly
-overlapping. For each
we consider the restriction
-operator
-
-that maps a vector
to the vector
made of the components of
-with indices in
, and the prolongation operator
-
-
. These operators are then used to build
-
-
, which is the restriction of
to the index
-space
.
-The classical AS preconditioner
is defined as
-
-
-Direct solvers based on sparse LU factorizations, implemented in the -third-party libraries reported in Section 3.2, can be applied -as coarsest-level solvers by MLD2P4. Native inexact solvers based on -incomplete LU factorizations, as well as Jacobi, hybrid (forward) Gauss-Seidel, -and block Jacobi preconditioners are also available. Direct solvers usually -lead to more effective preconditioners in terms of algorithmic scalability; -however, this does not guarantee parallel efficiency. - -
- -
- - - - diff --git a/docs/html/node16.html b/docs/html/node16.html deleted file mode 100644 index f7334336..00000000 --- a/docs/html/node16.html +++ /dev/null @@ -1,237 +0,0 @@ - - - - - --We describe the basics for building and applying MLD2P4 one-level and multilevel -(i.e., AMG) preconditioners with the Krylov solvers included in PSBLAS [13]. -The following steps are required: - - -
mld_
xprec_
type
, where x may be s
, d
, c
- or z
, according to the basic data type of the sparse matrix
- (s
= real single precision; d
= real double precision;
- c
= complex single precision; z
= complex double precision).
- This data structure is accessed by the user only through the MLD2P4 routines,
- following an object-oriented approach.
-init
, which also sets defaults for each preconditioner
- type selected by the user. The preconditioner types and the defaults associated
- with them are given in Table 1, where the strings used by
- init
to identify the preconditioner types are also given.
- Note that these strings are valid also if uppercase letters are substituted by
- corresponding lowercase ones.
-set
.
- This routine must be called only if the user wants to modify the default values
- of the parameters associated with the selected preconditioner type, to obtain a variant
- of that preconditioner. Examples of use of set
are given in
- Section 5.1; a complete list of all the
- preconditioner parameters and their allowed and default values is provided in
- Section 6, Tables 2-8.
-hierarchy_build
.
-smoothers_build
.
-bld
.
-apply
. When using the PSBLAS Krylov solvers,
- this step is completely transparent to the user, since apply
is called
- by the PSBLAS routine implementing the Krylov solver (psb_krylov
).
-free
. This step is complementary to step 1 and should
- be performed when the preconditioner is no more used.
--All the previous routines are available as methods of the preconditioner object. -A detailed description of them is given in Section 6. -Examples showing the basic use of MLD2P4 are reported in Section 5.1. - -
-
-
-
-
|
-Note that the module mld_prec_mod
, containing the definition of the
-preconditioner data type and the interfaces to the routines of MLD2P4,
-must be used in any program calling such routines.
-The modules psb_base_mod
, for the sparse matrix and communication descriptor
-data types, and psb_krylov_mod
, for interfacing with the
-Krylov solvers, must be also used (see Section 5.1).
-
-
-Remark 1. Coarsest-level solvers based on the LU factorization, -such as those implemented in UMFPACK, MUMPS, SuperLU, and SuperLU_Dist, -usually lead to smaller numbers of preconditioned Krylov -iterations than inexact solvers, when the linear system comes from -a standard discretization of basic scalar elliptic PDE problems. However, -this does not necessarily correspond to the smallest execution time -on parallel computers. - -
-
-
-The code reported in Figure 2 shows how to set and apply the default
-multilevel preconditioner available in the real double precision version
-of MLD2P4 (see Table 1). This preconditioner is chosen
-by simply specifying 'ML'
as the second argument of P%init
-(a call to P%set
is not needed) and is applied with the CG
-solver provided by PSBLAS (the matrix of the system to be solved is
-assumed to be positive definite). As previously observed, the modules
-psb_base_mod
, mld_prec_mod
and psb_krylov_mod
-must be used by the example program.
-
-
-The part of the code concerning the
-reading and assembling of the sparse matrix and the right-hand side vector, performed
-through the PSBLAS routines for sparse matrix and vector management, is not reported
-here for brevity; the statements concerning the deallocation of the PSBLAS
-data structure are neglected too.
-The complete code can be found in the example program file mld_dexample_ml.f90
,
-in the directory examples/fileread
of the MLD2P4 implementation (see
-Section 3.5). A sample test problem along with the relevant
-input data is available in examples/fileread/runs
.
-For details on the use of the PSBLAS routines, see the PSBLAS User's
-Guide [13].
-
-
-The setup and application of the default multilevel preconditioner
-for the real single precision and the complex, single and double
-precision, versions are obtained with straightforward modifications of the previous
-example (see Section 6 for details). If these versions are installed,
-the corresponding codes are available in examples/fileread/
.
-
-
- -
-
-
-
- |
-Different versions of the multilevel preconditioner can be obtained by changing
-the default values of the preconditioner parameters. The code reported in
-Figure 3 shows how to set a V-cycle preconditioner
-which applies 1 block-Jacobi sweep as pre- and post-smoother,
-and solves the coarsest-level system with 8 block-Jacobi sweeps.
-Note that the ILU(0) factorization (plus triangular solve) is used as
-local solver for the block-Jacobi sweeps, since this is the default associated
-with block-Jacobi and set by P%init
.
-Furthermore, specifying block-Jacobi as coarsest-level
-solver implies that the coarsest-level matrix is distributed
-among the processes.
-Figure 4 shows how to set a W-cycle preconditioner which
-applies 2 hybrid Gauss-Seidel sweeps as pre- and post-smoother,
-and solves the coarsest-level system with the multifrontal LU factorization
-implemented in MUMPS. It is specified that the coarsest-level
-matrix is distributed, since MUMPS can be used on both
-replicated and distributed matrices, and by default
-it is used on replicated ones.
-The code fragments shown in Figures 3 and 4 are
-included in the example program file mld_dexample_ml.f90
too.
-
-
-Finally, Figure 5 shows the setup of a one-level
-additive Schwarz preconditioner, i.e., RAS with overlap 2.
-Note also that a Krylov method different from CG must be used to solve
-the preconditioned system, since the preconditione in nonsymmetric.
-The corresponding example program is available in the file
-mld_dexample_1lev.f90
.
-
-
-For all the previous preconditioners, example programs where the sparse matrix and
-the right-hand side are generated by discretizing a PDE with Dirichlet
-boundary conditions are also available in the directory examples/pdegen
.
-
-
- -
-
-
-
--
- |
- -
-
-
-
- |
- -
-
-
-
- |
- -
- - - - diff --git a/docs/html/node18.html b/docs/html/node18.html deleted file mode 100644 index 82317e7a..00000000 --- a/docs/html/node18.html +++ /dev/null @@ -1,174 +0,0 @@ - - - - - -
-The basic user interface of MLD2P4 consists of eight methods. The six
-methods init
, set
, build
,
-hierarchy_build
, smoothers_build
and apply
-encapsulate all the functionalities for the setup and the application
-of any multilevel and one-level preconditioner implemented in the
-package.
-The method free
deallocates the preconditioner data structure, while
-descr
prints a description of the preconditioner setup by the user.
-For backward compatibility, methods are also accessible as
-stand-alone subroutines.
-
-
-For each method, the same user interface is overloaded with -respect to the real/ complex case and the single/double precision; -arguments with appropriate data types must be passed to the method, -i.e., - -
psb_
xspmat_type
- with x = s
for real single precision, x = d
- for real double precision, x = c
for complex single precision,
- x = z
for complex double precision;
-mld_
xprec_type
, with x =
- s
, d
, c
, z
, according to the sparse
- matrix data structure;
-psb_
xvect_type
with x =
- s
, d
, c
, z
, in a manner completely
- analogous to the sparse matrix type;
-- -
-
-
- -
call p%init(icontx,ptype,info)
-
-
-This method allocates and initializes the preconditioner
-p
, according to the preconditioner type chosen by the user.
-
-
-Arguments -
- --
-icontxt |
- integer, intent(in) . |
-
- | -The communication context. | -
-ptype |
- character(len=*), intent(in) . |
-
- | -The type of preconditioner. Its values are specified - in Table 1. | -
- | -Note that the strings are case insensitive. | -
-info |
- integer, intent(out) . |
-
- | -Error code. If no error, 0 is returned. See Section 8 for details. | -
-For compatibility with the previous versions of MLD2P4, this method can be also invoked -as follows: - -
- -
call mld_precinit(p,ptype,info)
-- -
- -
- - - - diff --git a/docs/html/node2.html b/docs/html/node2.html deleted file mode 100644 index 18abc9b0..00000000 --- a/docs/html/node2.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - -- -
-
-
- -
call p%set(what,val,info [,ilev, ilmax, pos, idx])
-
-
-This method sets the parameters defining the preconditioner p
. More
-precisely, the parameter identified by what
is assigned the value
-contained in val
.
-
-
-Arguments -
- --
-what |
- character(len=*) . |
-
- | -The parameter to be set. It can be specified through its name; - the string is case-insensitive. See - Tables 2-8. | -
-val |
- integer or character(len=*) or
- real(psb_spk_) or real(psb_dpk_) ,
- intent(in) . |
-
- | - The value of the parameter to be set. The list of allowed
- values and the corresponding data types is given in
- Tables 2-8.
- When the value is of type character(len=*) ,
- it is also treated as case insensitive. |
-
-info |
- integer, intent(out) . |
-
- | -Error code. If no error, 0 is returned. See Section 8 - for details. | -
-ilev |
- integer, optional, intent(in) . |
-
- | - For the multilevel preconditioner, the level at which the
- preconditioner parameter has to be set.
- The levels are numbered in increasing
- order starting from the finest one, i.e., level 1 is the finest level.
- If ilev is not present, the parameter identified by what
- is set at all the appropriate levels (see
- Tables 2-8). |
-
-ilmax |
- integer, optional, intent(in) . |
-
- | - For the multilevel preconditioner, when both
- ilev and ilmax are present, the settings
- are applied at all levels ilev:ilmax . When
- ilev is present but ilmax is not, then
- the default is ilmax=ilev .
- The levels are numbered in increasing
- order starting from the finest one, i.e., level 1 is the finest level. |
-
-pos |
- charater(len=*), optional, intent(in) . |
-
- | - Whether the other arguments apply only to the pre-smoother ('PRE' )
- or to the post-smoother ('POST' ). If pos is not present,
- the other arguments are applied to both smoothers.
- If the preconditioner is one-level or the parameter identified by what
- does not concern the smoothers, pos is ignored. |
-
-idx |
- integer, optional, intent(in) . |
-
- | -An auxiliary input argument that can be passed to the - underlying objects. - | -
-For compatibility with the previous versions of MLD2P4, this method can be also invoked -as follows: - -
- -
call mld_precset(p,what,val,info)
-
-
-However, in this case the optional arguments ilev
,
-ilmax
, pos
and idx
-cannot be used.
-
-
-A variety of preconditioners can be obtained -by a suitable setting of the preconditioner parameters. These parameters -can be logically divided into four groups, i.e., parameters defining - -
-
-Remark 2. A smoother is usually obtained by combining two objects:
-a smoother (SMOOTHER_TYPE
) and a local solver (SUB_SOLVE
),
-as specified in Tables 7-8.
-For example, the block-Jacobi smoother using
-ILU(0) on the blocks is obtained by combining the block-Jacobi smoother
-object with the ILU(0) solver object. Similarly,
-the hybrid Gauss-Seidel smoother (see Note in Table 7)
-is obtained by combining the block-Jacobi smoother object with a single sweep
-of the Gauss-Seidel solver object, while the point-Jacobi smoother is the
-result of combining the block-Jacobi smoother object with a single sweep
-of the pointwise-Jacobi solver object. However, for simplicity, shortcuts are
-provided to set point-Jacobi, hybrid (forward) Gauss-Seidel, and
-hybrid backward Gauss-Seidel, i.e., the previous smoothers can be defined
-by setting only SMOOTHER_TYPE
to appropriate values (see
-Tables 7), i.e., without setting
-SUB_SOLVE
too.
-
-
-The smoother and solver objects are arranged in a -hierarchical manner. When specifying a smoother object, its parameters, -including the local solver, are set to their default values, and when a solver -object is specified, its defaults are also set, overriding in both -cases any previous settings even if explicitly specified. Therefore if -the user sets a smoother, and wishes to use a solver -different from the default one, the call to set the solver must come -after the call to set the smoother. - -
-Similar considerations apply to the point-Jacobi, Gauss-Seidel and block-Jacobi
-coarsest-level solvers, and shortcuts are available
-in this case too (see Table 5).
-
-
-Remark 3. In general, a coarsest-level solver cannot be used with -both the replicated and distributed coarsest-matrix layout; -therefore, setting the solver after the layout may change the layout. -Similarly, setting the layout after the solver may change the solver. - -
-More precisely, UMFPACK and SuperLU require the coarsest-level -matrix to be replicated, while SuperLU_Dist requires it to be distributed. -In these cases, setting the coarsest-level solver implies that -the layout is redefined according to the solver, ovverriding any -previous settings. MUMPS, point-Jacobi, -hybrid Gauss-Seidel and block-Jacobi can be applied to -replicated and distributed matrices, thus their choice -does not modify any previously specified layout. -It is worth noting that, when the matrix is replicated, -the point-Jacobi, hybrid Gauss-Seidel and block-Jacobi solvers -reduce to the corresponding local solver objects (see Remark 2). -For the point-Jacobi and Gauss-Seidel solvers, these objects -correspond to a single point-Jacobi sweep and a single -Gauss-Seidel sweep, respectively, which are very poor solvers. - -
-On the other hand, the distributed layout can be used with any solver -but UMFPACK and SuperLU; therefore, if any of these two solvers has already -been selected, the coarsest-level solver is changed to block-Jacobi, -with the previously chosen solver applied to the local blocks. -Likewise, the replicated layout can be used with any solver but SuperLu_Dist; -therefore, if SuperLu_Dist has been previously set, the coarsest-level -solver is changed to the default sequential solver. - -
-Remark 4. The argument idx
can be used to allow finer
-control for those solvers; for instance, by specifying the keyword
-MUMPS_IPAR_ENTRY
and an appropriate value for idx
, it is
-possible to set any entry in the MUMPS integer control array.
-See also Sec. 7.
-
-
-
-
-
-
-
|
-
-
-
-
-
|
-
-
-
-
-
|
-
-
-
-
-
|
-
-
-
-
-
|
-
-
-
-
-
|
-
-
-
-
-
|
- -
- -
- - - - diff --git a/docs/html/node21.html b/docs/html/node21.html deleted file mode 100644 index be357628..00000000 --- a/docs/html/node21.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - -- -
call p%hierarchy_build(a,desc_a,info)
-
-
-This method builds the hierarchy of matrices and restriction/prolongation
-operators for the multilevel preconditioner p
, according to the requirements
-made by the user through the methods init
and set
.
-
-
-Arguments -
- --
-a |
- type(psb_ xspmat_type), intent(in) . |
-
- | -The sparse matrix structure containing the local part of the - matrix to be preconditioned. Note that x must be chosen according - to the real/complex, -single/double precision version of MLD2P4 under use. - See the PSBLAS User's Guide for details [13]. | -
-desc_a |
- type(psb_desc_type), intent(in) . |
-
- | - The communication descriptor of a . See the PSBLAS User's Guide for
- details [13]. |
-
-info |
- integer, intent(out) . |
-
- | -Error code. If no error, 0 is returned. See Section 8 for details. | -
- -
- -
- - - - diff --git a/docs/html/node22.html b/docs/html/node22.html deleted file mode 100644 index d9fa00f9..00000000 --- a/docs/html/node22.html +++ /dev/null @@ -1,164 +0,0 @@ - - - - - -- -
call p%smoothers_build(a,desc_a,p,info[,amold,vmold,imold])
-
-
-This method builds the smoothers and the coarsest-level solvers for the
-multilevel preconditioner p
, according to the requirements made by
-the user through the methods init
and set
, and based on the aggregation
-hierarchy produced by a previous call to hierarchy_build
-(see Section 6.3).
-
-
-Arguments -
- --
-a |
- type(psb_ xspmat_type), intent(in) . |
-
- | -The sparse matrix structure containing the local part of the - matrix to be preconditioned. Note that x must be chosen according - to the real/complex, single/double precision version of MLD2P4 under use. - See the PSBLAS User's Guide for details [13]. | -
-desc_a |
- type(psb_desc_type), intent(in) . |
-
- | - The communication descriptor of a . See the PSBLAS User's Guide for
- details [13]. |
-
-info |
- integer, intent(out) . |
-
- | -Error code. If no error, 0 is returned. See Section 8 for details. | -
-amold |
- class(psb_ x_base_sparse_mat), intent(in), optional . |
-
- | -The desired dynamic type for internal matrix - components; this allows e.g. running on GPUs; it needs not be the - same on all processes. See the PSBLAS User's Guide for - details [13]. | -
- vmold |
- class(psb_ x_base_vect_type), intent(in), optional . |
-
- | -The desired dynamic type for internal vector - components; this allows e.g. running on GPUs. | -
- imold |
- class(psb_i_base_vect_type), intent(in), optional . |
-
- | -The desired dynamic type for internal integer vector - components; this allows e.g. running on GPUs. | -
- -
- -
- - - - diff --git a/docs/html/node23.html b/docs/html/node23.html deleted file mode 100644 index 54375c9a..00000000 --- a/docs/html/node23.html +++ /dev/null @@ -1,177 +0,0 @@ - - - - - -- -
call p%build(a,desc_a,info[,amold,vmold,imold])
-
-
-This method builds the preconditioner p
according to the requirements
-made by the user through the methods init
and set
-(see Sections 6.3 and 6.4 for
-multilevel preconditioners). It is mostly provided for backward
-compatibility; indeed, it is internally implemented by invoking the
-two previous methods hierarchy_build
and
-smoothers_build
, whose nomenclature would however be somewhat
-unnatural when dealing with simple one-level preconditioners.
-
-
-Arguments -
- --
-a |
- type(psb_ xspmat_type), intent(in) . |
-
- | -The sparse matrix structure containing the local part of the - matrix to be preconditioned. Note that x must be chosen according - to the real/complex, single/double precision version of MLD2P4 under use. - See the PSBLAS User's Guide for details [13]. | -
-desc_a |
- type(psb_desc_type), intent(in) . |
-
- | - The communication descriptor of a . See the PSBLAS User's Guide for
- details [13]. |
-
-info |
- integer, intent(out) . |
-
- | -Error code. If no error, 0 is returned. See Section 8 for details. | -
-amold |
- class(psb_ x_base_sparse_mat), intent(in), optional . |
-
- | -The desired dynamic type for internal matrix - components; this allows e.g. running on GPUs; it needs not be the - same on all processes. See the PSBLAS User's Guide for - details [13]. | -
- vmold |
- class(psb_ x_base_vect_type), intent(in), optional . |
-
- | -The desired dynamic type for internal vector - components; this allows e.g. running on GPUs. | -
- imold |
- class(psb_i_base_vect_type), intent(in), optional . |
-
- | -The desired dynamic type for internal integer vector - components; this allows e.g. running on GPUs. | -
-For compatibility with the previous versions of MLD2P4, this method can be also invoked -as follows: - -
- -
call mld_precbld(p,what,val,info[,amold,vmold,imold])
-- -The method can be used to build multilevel preconditioners too. - -
- -
- - - - diff --git a/docs/html/node24.html b/docs/html/node24.html deleted file mode 100644 index 447807ca..00000000 --- a/docs/html/node24.html +++ /dev/null @@ -1,215 +0,0 @@ - - - - - -- -
call p%apply(x,y,desc_a,info [,trans,work])
-
-
-This method computes
-, where
is a previously built
-preconditioner, stored into
p
, and
-denotes the preconditioner itself or its transpose, according to
-the value of
trans
.
-Note that, when MLD2P4 is used with a Krylov solver from PSBLAS,
-p%apply
is called within the PSBLAS method psb_krylov
-and hence it is completely transparent to the user.
-
-
-Arguments -
- --
-x |
- type( kind_parameter), dimension(:), intent(in) . |
-
- | - The local part of the vector ![]() |
-
-y |
- type( kind_parameter), dimension(:), intent(out) . |
-
- | - The local part of the vector ![]() |
-
-desc_a |
- type(psb_desc_type), intent(in) . |
-
- | -The communication descriptor associated to the matrix to be - preconditioned. | -
-info |
- integer, intent(out) . |
-
- | -Error code. If no error, 0 is returned. See Section 8 for details. | -
-trans |
- character(len=1), optional, intent(in). |
-
- | - If trans = 'N','n' then
-![]() trans = 'T','t' then
-![]() ![]() trans = 'C','c' then
-![]() ![]() |
-
-work |
- type( kind_parameter), dimension(:), optional, target . |
-
- | - Workspace. Its size should be at
- least 4 * psb_cd_get_local_ cols(desc_a) (see the PSBLAS User's Guide).
- Note that type and kind_parameter must be chosen according
- to the real/complex, single/double precision version of MLD2P4 under use. |
-
-For compatibility with the previous versions of MLD2P4, this method can be also invoked -as follows: - -
- -
call mld_precaply(p,what,val,info)
-- -
- -
- - - - diff --git a/docs/html/node25.html b/docs/html/node25.html deleted file mode 100644 index 23211355..00000000 --- a/docs/html/node25.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - -- -
call p%free(p,info)
-
-
-This method deallocates the preconditioner data structure p
.
-
-
-Arguments -
- --
-info |
- integer, intent(out) . |
-
- | -Error code. If no error, 0 is returned. See Section 8 for details. | -
-For compatibility with the previous versions of MLD2P4, this method can be also invoked -as follows: - -
- -
call mld_precfree(p,info)
-- -
-
-
- -
call p%descr(info, [iout])
-
-
-This method prints a description of the preconditioner p
to the standard output or
-to a file. It must be called after hierachy_build
and smoothers_build
,
-or build
, have been called.
-
-
-Arguments -
- --
-info |
- integer, intent(out) . |
-
- | -Error code. If no error, 0 is returned. See Section 8 for details. | -
-iout |
- integer, intent(in), optional . |
-
- | -The id of the file where the preconditioner description - will be printed; the default is the standard output. | -
-For compatibility with the previous versions of MLD2P4, this method can be also invoked -as follows: - -
- -
call mld_precdescr(p,info [,iout])
-- -
- - - - diff --git a/docs/html/node27.html b/docs/html/node27.html deleted file mode 100644 index 64b9a5db..00000000 --- a/docs/html/node27.html +++ /dev/null @@ -1,79 +0,0 @@ - - - - - -
-
-
- -
call p%dump(info[,istart,iend,prefix,head,ac,rp,smoother,solver,global_num])
-- -Dump on file. - -
-Arguments -
- --
-info |
- integer, intent(out) . |
-
- | -Error code. If no error, 0 is returned. See Section 8 for details. | -
-amold |
- class(psb_ x_base_sparse_mat), intent(in), optional . |
-
- | -The desired dynamic type for internal matrix - components; this allows e.g. running on GPUs; it needs not be the - same on all processes. See the PSBLAS User's Guide for - details [13]. | -
-
-
- -
call p%clone(pout,info)
-- -Create a (deep) copy of the preconditioner object. - -
-Arguments -
- --
-pout |
- type(mld_ xprec_type), intent(out) . |
-
- | -The copy of the preconditioner data structure. Note - that x must be chosen according - to the real/complex, single/double precision version of MLD2P4 under use. | -
-info |
- integer, intent(out) . |
-
- | -Error code. If no error, 0 is returned. See Section 8 for details. | -
-
-
-The MULTILEVEL DOMAIN DECOMPOSITION PARALLEL PRECONDITIONERS PACKAGE BASED ON
-PSBLAS (MLD2P4) provides parallel Algebraic MultiGrid (AMG) and Domain
-Decomposition preconditioners (see, e.g., [3,24,22]),
-to be used in the iterative solution of linear systems,
-
-
-
-The multilevel preconditioners implemented in MLD2P4 are obtained by combining -AMG cycles with smoothers and coarsest-level solvers. The V-, W-, and -K-cycles [3,20] are available, which allow to define -almost all the preconditioners in the package, including the multilevel hybrid -Schwarz ones; a specific cycle is implemented to obtain multilevel additive -Schwarz preconditioners. The Jacobi, hybrid -forward/backward Gauss-Seidel, block-Jacobi, and additive Schwarz methods -are available as smoothers. An algebraic approach is used to generate a hierarchy of -coarse-level matrices and operators, without explicitly using any information on the -geometry of the original problem, e.g., the discretization of a PDE. To this end, -the smoothed aggregation technique [2,26] -is applied. Either exact or approximate solvers can be used on the coarsest-level -system. Specifically, different sparse LU factorizations from external -packages, and native incomplete LU factorizations and Jacobi, hybrid Gauss-Seidel, -and block-Jacobi solvers are available. All smoothers can be also exploited as one-level -preconditioners. - -
-MLD2P4 is written in Fortran 2003, following an -object-oriented design through the exploitation of features -such as abstract data type creation, type extension, functional overloading, and -dynamic memory management. The parallel implementation is based on a Single Program Multiple Data -(SPMD) paradigm. Single and -double precision implementations of MLD2P4 are available for both the -real and the complex case, which 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 PSBLAS (Parallel Sparse BLAS) -computational framework [15,14]. PSBLAS provides basic linear algebra -operators and data management facilities for distributed sparse matrices, -as well as parallel Krylov solvers which can be used with the MLD2P4 preconditioners. -The choice of PSBLAS has been mainly motivated by the need of having -a portable and efficient software infrastructure implementing “de facto” standard -parallel sparse linear algebra kernels, to pursue goals such as performance, -portability, modularity ed extensibility in the development of the preconditioner -package. On the other hand, the implementation of MLD2P4 has led to some -revisions and extentions of the original PSBLAS kernels. -The inter-process comunication required by MLD2P4 is encapsulated -in the PSBLAS routines; -therefore, MLD2P4 can be run on any parallel machine where PSBLAS -implementations are available. - -
-MLD2P4 has a layered and modular software architecture where three main layers can be -identified. The lower layer consists of the PSBLAS kernels, the middle one implements -the construction and application phases of the preconditioners, and the upper one -provides a uniform interface to all the preconditioners. -This architecture allows for different levels of use of the package: -few black-box routines at the upper layer allow all users to easily -build and apply any preconditioner available in MLD2P4; -facilities are also available allowing expert users to extend the set of smoothers -and solvers for building new versions of the preconditioners (see -Section 7). - -
-We note that the user interface of MLD2P4 2.1 has been extended with respect to the -previous versions in order to separate the construction of the multilevel hierarchy from -the construction of the smoothers and solvers, and to allow for more flexibility -at each level. The software architecture described in [8] has significantly -evolved too, in order to fully exploit the Fortran 2003 features implemented in PSBLAS 3. -However, compatibility with previous versions has been preserved. - -
-This guide is organized as follows. General information on the distribution of the source -code is reported in Section 2, while details on the configuration -and installation of the package are given in Section 3. A short description -of the preconditioners implemented in MLD2P4 is provided in Section 4, -to help the users in choosing among them. The basics for building and applying the -preconditioners with the Krylov solvers implemented in PSBLAS are reported -in Section 5, where the Fortran codes of a few sample programs -are also shown. A reference guide for the user interface routines is provided -in Section 6. Information on the extension of the package -through the addition of new smoothers and solvers is reported in Section 7. -The error handling mechanism used by the package -is briefly described in Section 8. The copyright terms concerning the -distribution and modification of MLD2P4 are reported in Appendix A. - -
- -
- - - - diff --git a/docs/html/node30.html b/docs/html/node30.html deleted file mode 100644 index 873b2304..00000000 --- a/docs/html/node30.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - -- -
sz = p%sizeof()
-- -Return memory footprint in bytes. - -
-
-
- -
call p%allocate_wrk(info[, vmold])
-
-
-Allocate internal work vectors. Each application of the preconditioner
-uses a number of work vectors which are allocated internally as
-necessary; therefore allocation and deallocation of memory occurs
-multiple times during the execution of a Krylov method. In most cases
-this strategy is perfectly acceptable, but
-on some platforms, most notably GPUs, memory allocation is
-a slow operation, and the default behaviour would lead to a
-slowdown. This method allows to trade space for time by preallocating
-the internal workspace outside of the invocation of a Krylov
-method. When using GPUs or other specialized devices, the vmold
-argument is also necessary to ensure the internal work vectors are of
-the appropriate dynamic type to exploit the accelerator hardware; when
-allocation occurs internally this is taken care of based on the dynamic
-type of the x
argument to the apply
method.
-
-
-Arguments -
- --
-info |
- integer, intent(out) . |
-
- | -Error code. If no error, 0 is returned. See Section 8 for details. | -
- vmold |
- class(psb_ x_base_vect_type), intent(in), optional . |
-
- | -The desired dynamic type for internal vector - components; this allows e.g. running on GPUs. | -
- -
- - - - diff --git a/docs/html/node32.html b/docs/html/node32.html deleted file mode 100644 index 5805fd18..00000000 --- a/docs/html/node32.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - -- -
call p%free_wrk(info)
-- -Deallocate internal work vectors. - -
-Arguments -
- --
-info |
- integer, intent(out) . |
-
- | -Error code. If no error, 0 is returned. See Section 8 for details. | -
- -
- -
-
-
-Developers can add completely new smoother and/or solver classes -derived from the base objects in the library (see Remark 2 in Section 6.2), -without recompiling the library itself. - -
-To do so, it is necessary first to select the base type to be extended. -In our experience, it is quite likely that the new application needs -only the definition of a “solver” object, which is almost -always acting only on the local part of the distributed matrix. -The parallel actions required to connect the various solver objects -are most often already provided by the block-Jacobi or the additive -Schwarz smoothers. To define a new solver, the developer will then -have to define its components and methods, perhaps taking one of the -predefined solvers as a starting point, if possible. - -
-Once the new smoother/solver class has been developed, to use it in -the context of the multilevel preconditioners it is necessary to: - -
set
routine as in the
-following:
-call p%set(smoother,info [,ilev,ilmax,pos])
-call p%set(solver,info [,ilev,ilmax,pos])
-
-
-It is possible to define new values for the keyword WHAT
in the
-set
routine; if the library code does not recognize a keyword,
-it passes it down the composition hierarchy (levels containing
-smoothers containing in turn solvers), so that it can be eventually caught by
-the new solver. By the same token, any keyword/value pair that does not pertain to
-a given smoother should be passed down to the contained solver, and
-any keyword/value pair that does not pertain to a given solver is by
-default ignored.
-
-
-An example is provided in the source code distribution under the
-folder tests/newslv
. In this example we are implementing a new
-incomplete factorization variant (which is simply the ILU(0)
-factorization under a new name). Because of the specifics of this case, it is
-possible to reuse the basic structure of the ILU solver, with its
-L/D/U components and the methods needed to apply the solver; only a
-few methods, such as the description and most importantly the build,
-need to be ovverridden (rewritten).
-
-
-The interfaces for the calls shown above are defined using - -
-smoother |
- class(mld_x_base_smoother_type) |
-
- | -The user-defined new smoother to be employed in the - preconditioner. | -
-solver |
- class(mld_x_base_solver_type) |
-
- | -The user-defined new solver to be employed in the - preconditioner. - | -
tests/newslv
-code we define a new object of type mld_d_tlu_solver_type
, and
-we pass it as follows:
-- ! sparse matrix and preconditioner - type(psb_dspmat_type) :: a - type(mld_dprec_type) :: prec - type(mld_d_tlu_solver_type) :: tlusv - -...... - ! - ! prepare the preconditioner: an ML with defaults, but with TLU solver at - ! intermediate levels. All other parameters are at default values. - ! - call prec%init('ML', info) - call prec%hierarchy_build(a,desc_a,info) - nlv = prec%get_nlevs() - call prec%set(tlusv, info,ilev=1,ilmax=max(1,nlv-1)) - call prec%smoothers_build(a,desc_a,info) -- - - - - - diff --git a/docs/html/node34.html b/docs/html/node34.html deleted file mode 100644 index a32c73cd..00000000 --- a/docs/html/node34.html +++ /dev/null @@ -1,75 +0,0 @@ - - - - - -
-The error handling in MLD2P4 is based on the PSBLAS error
-handling. Error conditions are signaled via an integer argument
-info
; whenever an error condition is detected, an error trace
-stack is built by the library up to the top-level, user-callable
-routine. This routine will then decide, according to the user
-preferences, whether the error should be handled by terminating the
-program or by returning the error condition to the user code, which
-will then take action, and whether
-an error message should be printed. These options may be set by using
-the PSBLAS error handling routines; for further details see the PSBLAS
-User's Guide [13].
-
-
-
-
-
-The MLD2P4 is freely distributable under the following copyright -terms:
- - MLD2P4 version 2.1 - MultiLevel Domain Decomposition Parallel Preconditioners Package - based on PSBLAS (Parallel Sparse BLAS version 3.5) - - (C) Copyright 2008, 2010, 2012, 2015, 2017 - - Salvatore Filippone Cranfield University, Cranfield, UK - Pasqua D'Ambra IAC-CNR, Naples, IT - Daniela di Serafino University of Campania L. Vanvitelli, Caserta, IT - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions, and the following disclaimer in the - documentation and/or other materials provided with the distribution. - 3. The name of the MLD2P4 group or the names of its contributors may - not be used to endorse or promote products derived from this - software without specific written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE MLD2P4 GROUP OR ITS CONTRIBUTORS - BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. -- - -
-
-
-
-
-This document was generated using the -LaTeX2HTML translator Version 2018 (Released Feb 1, 2018) -
-Copyright © 1993, 1994, 1995, 1996,
-Nikos Drakos,
-Computer Based Learning Unit, University of Leeds.
-
-Copyright © 1997, 1998, 1999,
-Ross Moore,
-Mathematics Department, Macquarie University, Sydney.
-
-The command line arguments were:
- latex2html -local_icons -noaddress -dir ../../html userhtml.tex
-
-The translation was initiated on 2018-11-29
-
- -MLD2P4 is available from the web site - -
https://github.com/sfilippone/mld2p4-2 --where contact points for further information can be also found. - -
-The software is available under a modified BSD license, as specified -in Appendix A; please note that some of the optional -third party libraries may be licensed under a different and more -stringent license, most notably the GPL, and this should be taken into -account when treating derived works. - -
-The library defines a version string with the
-constant
-
-
2.1.0
.
-
-
-
-
configure
-script. The distribution also includes the autoconf and automake
-sources employed to generate the script, but usually this is not needed
-to build the software.
-
-
-MLD2P4 is implemented almost entirely in Fortran 2003, with some
-interfaces to external libraries in C; the Fortran compiler
-must support the Fortran 2003 standard plus the extension MOLD=
-feature, which enhances the usability of ALLOCATE
.
-Many compilers do this; in particular, this is
-supported by the GNU Fortran compiler, for which we
-recommend to use at least version 4.8.
-The software defines data types and interfaces for
-real and complex data, in both single and double precision.
-
-
-Building MLD2P4 requires some base libraries (see Section 3.1); -interfaces to optional third-party libraries, which extend the functionalities of MLD2P4 -(see Section 3.2), are also available. Many Linux distributions -(e.g., Ubuntu, Fedora, CentOS) provide precompiled packages for the prerequisite and -optional software. In many cases these packages are split between a runtime part and a -“developer” part; in order to build MLD2P4 you need both. A description of the base and -optional software used by MLD2P4 is given in the next sections. - -
-
-
-The following base libraries are needed: -
- -
- - - - diff --git a/docs/html/node8.html b/docs/html/node8.html deleted file mode 100644 index b008d3ae..00000000 --- a/docs/html/node8.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - - --We provide interfaces to the following third-party software libraries; -note that these are optional, but if you enable them some defaults -for multilevel preconditioners may change to reflect their presence. - -
-
SuiteSparse_config/SuiteSparse_config.mk
file.
--std=c99
option to the C compiler options.
- Note that this library requires the ParMETIS
- library for parallel graph partitioning and fill-reducing matrix ordering, available from
- glaros.dtc.umn.edu/gkhome/metis/parmetis/overview.
-- -
- - - - diff --git a/docs/html/node9.html b/docs/html/node9.html deleted file mode 100644 index 212118d8..00000000 --- a/docs/html/node9.html +++ /dev/null @@ -1,292 +0,0 @@ - - - - - -
-In order to build MLD2P4, the first step is to use the configure
script
-in the main directory to generate the necessary makefile.
-
-
-As a minimal example consider the following: -
-./configure --with-psblas=PSB-INSTALL-DIR --which assumes that the various MPI compilers and support libraries are -available in the standard directories on the system, and specifies -only the PSBLAS install directory (note that the latter directory must -be specified with an absolute path). -The full set of options may be looked at by issuing the command -
./configure --help
, which produces:
--`configure' configures MLD2P4 2.1.1 to adapt to many kinds of systems. - -Usage: ./configure [OPTION]... [VAR=VALUE]... - -To assign environment variables (e.g., CC, CFLAGS...), specify them as -VAR=VALUE. See below for descriptions of some of the useful variables. - -Defaults for the options are specified in brackets. - -Configuration: - -h, --help display this help and exit - --help=short display options specific to this package - --help=recursive display the short help of all the included packages - -V, --version display version information and exit - -q, --quiet, --silent do not print `checking ...' messages - --cache-file=FILE cache test results in FILE [disabled] - -C, --config-cache alias for `--cache-file=config.cache' - -n, --no-create do not create output files - --srcdir=DIR find the sources in DIR [configure dir or `..'] - -Installation directories: - --prefix=PREFIX install architecture-independent files in PREFIX - [/usr/local] - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [PREFIX] - -By default, `make install' will install all the files in -`/usr/local/bin', `/usr/local/lib' etc. You can specify -an installation prefix other than `/usr/local' using `--prefix', -for instance `--prefix=$HOME'. - -For better control, use the options below. - -Fine tuning of the installation directories: - --bindir=DIR user executables [EPREFIX/bin] - --sbindir=DIR system admin executables [EPREFIX/sbin] - --libexecdir=DIR program executables [EPREFIX/libexec] - --sysconfdir=DIR read-only single-machine data [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] - --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --libdir=DIR object code libraries [EPREFIX/lib] - --includedir=DIR C header files [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc [/usr/include] - --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] - --datadir=DIR read-only architecture-independent data [DATAROOTDIR] - --infodir=DIR info documentation [DATAROOTDIR/info] - --localedir=DIR locale-dependent data [DATAROOTDIR/locale] - --mandir=DIR man documentation [DATAROOTDIR/man] - --docdir=DIR documentation root [DATAROOTDIR/doc/mld2p4] - --htmldir=DIR html documentation [DOCDIR] - --dvidir=DIR dvi documentation [DOCDIR] - --pdfdir=DIR pdf documentation [DOCDIR] - --psdir=DIR ps documentation [DOCDIR] - -Program names: - --program-prefix=PREFIX prepend PREFIX to installed program names - --program-suffix=SUFFIX append SUFFIX to installed program names - --program-transform-name=PROGRAM run sed PROGRAM on installed program names - -Optional Features: - --disable-option-checking ignore unrecognized --enable/--with options - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --enable-silent-rules less verbose build output (undo: "make V=1") - --disable-silent-rules verbose build output (undo: "make V=0") - --enable-dependency-tracking - do not reject slow dependency extractors - --disable-dependency-tracking - speeds up one-time build - --enable-serial Specify whether to enable a fake mpi library to run - in serial mode. - --enable-long-integers Specify usage of 64 bits integers. - -Optional Packages: - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --with-psblas=DIR The install directory for PSBLAS, for example, - --with-psblas=/opt/packages/psblas-3.5 - --with-psblas-incdir=DIR - Specify the directory for PSBLAS C includes. - --with-psblas-moddir=DIR - Specify the directory for PSBLAS Fortran modules. - --with-psblas-libdir=DIR - Specify the directory for PSBLAS library. - --with-ccopt additional [CCOPT] flags to be added: will prepend - to [CCOPT] - --with-fcopt additional [FCOPT] flags to be added: will prepend - to [FCOPT] - --with-libs List additional link flags here. For example, - --with-libs=-lspecial_system_lib or - --with-libs=-L/path/to/libs - --with-clibs additional [CLIBS] flags to be added: will prepend - to [CLIBS] - --with-flibs additional [FLIBS] flags to be added: will prepend - to [FLIBS] - --with-library-path additional [LIBRARYPATH] flags to be added: will - prepend to [LIBRARYPATH] - --with-include-path additional [INCLUDEPATH] flags to be added: will - prepend to [INCLUDEPATH] - --with-module-path additional [MODULE_PATH] flags to be added: will - prepend to [MODULE_PATH] - --with-extra-libs List additional link flags here. For example, - --with-extra-libs=-lspecial_system_lib or - --with-extra-libs=-L/path/to/libs - --with-blas=<lib> use BLAS library <lib> - --with-blasdir=<dir> search for BLAS library in <dir> - --with-lapack=<lib> use LAPACK library <lib> - --with-mumps=LIBNAME Specify the libname for MUMPS. Default: autodetect - with minimum "-lmumps_common -lpord" - --with-mumpsdir=DIR Specify the directory for MUMPS library and - includes. Note: you will need to add auxiliary - libraries with --extra-libs; this depends on how - MUMPS was configured and installed, at a minimum you - will need SCALAPACK and BLAS - --with-mumpsincdir=DIR Specify the directory for MUMPS includes. - --with-mumpsmoddir=DIR Specify the directory for MUMPS Fortran modules. - --with-mumpslibdir=DIR Specify the directory for MUMPS library. - --with-umfpack=LIBNAME Specify the library name for UMFPACK and its support - libraries. Default: "-lumfpack -lamd" - --with-umfpackdir=DIR Specify the directory for UMFPACK library and - includes. - --with-umfpackincdir=DIR - Specify the directory for UMFPACK includes. - --with-umfpacklibdir=DIR - Specify the directory for UMFPACK library. - --with-superlu=LIBNAME Specify the library name for SUPERLU library. - Default: "-lsuperlu" - --with-superludir=DIR Specify the directory for SUPERLU library and - includes. - --with-superluincdir=DIR - Specify the directory for SUPERLU includes. - --with-superlulibdir=DIR - Specify the directory for SUPERLU library. - --with-superludist=LIBNAME - Specify the libname for SUPERLUDIST library. - Requires you also specify SuperLU. Default: - "-lsuperlu_dist" - --with-superludistdir=DIR - Specify the directory for SUPERLUDIST library and - includes. - --with-superludistincdir=DIR - Specify the directory for SUPERLUDIST includes. - --with-superludistlibdir=DIR - Specify the directory for SUPERLUDIST library. - -Some influential environment variables: - FC Fortran compiler command - FCFLAGS Fortran compiler flags - LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a - nonstandard directory <lib dir> - LIBS libraries to pass to the linker, e.g. -l<library> - CC C compiler command - CFLAGS C compiler flags - CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if - you have headers in a nonstandard directory <include dir> - MPICC MPI C compiler command - MPIFC MPI Fortran compiler command - CPP C preprocessor - -Use these variables to override the choices made by `configure' or to help -it to find libraries and programs with nonstandard names/locations. - -Report bugs to <https://github.com/sfilippone/mld2p4-2/issues>. --
-For instance, if a user has built and installed PSBLAS 3.5 under the
-/opt
directory and is
-using the SuiteSparse package (which includes UMFPACK), then MLD2P4
-might be configured with:
-
- ./configure --with-psblas=/opt/psblas-3.5/ \ - --with-umfpackincdir=/usr/include/suitesparse/ --Once the configure script has completed execution, it will have -generated the file
Make.inc
which will then be used by all
-Makefiles in the directory tree; this file will be copied in the
-install directory under the name Make.inc.MLD2P4
.
-
-
-To use the MUMPS solver package,
-the user has to add the appropriate options to the configure script;
-by default we are looking for the libraries
--ldmumps -lsmumps
-lzmumps -lcmumps -mumps_common -lpord
.
-MUMPS often uses additional packages such as ScaLAPACK, ParMETIS,
-SCOTCH, as well as enabling OpenMP; in such cases it is necessary to
-add linker options with the --with-extra-libs
configure option.
-
-
-To build the library the user will now enter -
-make --followed (optionally) by -
-make install -- - - - - diff --git a/docs/html/prev.png b/docs/html/prev.png deleted file mode 100644 index e60b8b40..00000000 Binary files a/docs/html/prev.png and /dev/null differ diff --git a/docs/html/prev_g.png b/docs/html/prev_g.png deleted file mode 100644 index 476d9568..00000000 Binary files a/docs/html/prev_g.png and /dev/null differ diff --git a/docs/html/up.png b/docs/html/up.png deleted file mode 100644 index 3937e168..00000000 Binary files a/docs/html/up.png and /dev/null differ diff --git a/docs/html/up_g.png b/docs/html/up_g.png deleted file mode 100644 index 54ceb683..00000000 Binary files a/docs/html/up_g.png and /dev/null differ diff --git a/docs/html/userhtml.css b/docs/html/userhtml.css deleted file mode 100644 index d1824aff..00000000 --- a/docs/html/userhtml.css +++ /dev/null @@ -1,30 +0,0 @@ -/* Century Schoolbook font is very similar to Computer Modern Math: cmmi */ -.MATH { font-family: "Century Schoolbook", serif; } -.MATH I { font-family: "Century Schoolbook", serif; font-style: italic } -.BOLDMATH { font-family: "Century Schoolbook", serif; font-weight: bold } - -/* implement both fixed-size and relative sizes */ -SMALL.XTINY { font-size : xx-small } -SMALL.TINY { font-size : x-small } -SMALL.SCRIPTSIZE { font-size : smaller } -SMALL.FOOTNOTESIZE { font-size : small } -SMALL.SMALL { } -BIG.LARGE { } -BIG.XLARGE { font-size : large } -BIG.XXLARGE { font-size : x-large } -BIG.HUGE { font-size : larger } -BIG.XHUGE { font-size : xx-large } - -/* heading styles */ -H1 { } -H2 { } -H3 { } -H4 { } -H5 { } - -/* mathematics styles */ -DIV.displaymath { } /* math displays */ -TD.eqno { } /* equation-number cells */ - - -/* document-specific styles come next */ diff --git a/docs/html/userhtml.html b/docs/html/userhtml.html deleted file mode 100644 index 1f0d2ee7..00000000 --- a/docs/html/userhtml.html +++ /dev/null @@ -1,184 +0,0 @@ - - - - - -
- -
-
-