From 90bf65f1177932459840aaf8704068f6a52ef612 Mon Sep 17 00:00:00 2001 From: Salvatore Filippone Date: Wed, 10 Mar 2021 13:41:26 +0100 Subject: [PATCH] Merged license updates and updates from Pasqua. --- LICENSE | 2 +- docs/amg4psblas_1.0-guide.pdf | Bin 1750250 -> 1768469 bytes docs/html/userhtml.css | 10 +- docs/html/userhtmlli4.html | 91 +++-- docs/html/userhtmlse1.html | 101 +++--- docs/html/userhtmlse4.html | 12 +- docs/html/userhtmlse5.html | 2 +- docs/html/userhtmlse8.html | 2 +- docs/html/userhtmlse9.html | 66 +++- docs/html/userhtmlsu1.html | 14 +- docs/html/userhtmlsu11.html | 631 ++++++++++++++++++---------------- docs/html/userhtmlsu12.html | 42 +-- docs/html/userhtmlsu13.html | 68 ++-- docs/html/userhtmlsu14.html | 70 ++-- docs/html/userhtmlsu15.html | 62 ++-- docs/html/userhtmlsu16.html | 22 +- docs/html/userhtmlsu17.html | 30 +- docs/html/userhtmlsu18.html | 110 +++--- docs/html/userhtmlsu2.html | 6 +- docs/html/userhtmlsu6.html | 4 +- docs/html/userhtmlsu7.html | 12 +- docs/html/userhtmlsu8.html | 4 +- docs/html/userhtmlsu9.html | 71 ++-- docs/src/bibliography.tex | 9 +- docs/src/gettingstarted.tex | 12 +- docs/src/license.tex | 68 +++- docs/src/overview.tex | 10 +- docs/src/userinterface.tex | 53 +-- 28 files changed, 897 insertions(+), 687 deletions(-) diff --git a/LICENSE b/LICENSE index 8709dee3..d3bd6111 100644 --- a/LICENSE +++ b/LICENSE @@ -4,7 +4,7 @@ Algebraic Multigrid Package based on PSBLAS (Parallel Sparse BLAS version 3.7) - (C) Copyright 2020 + (C) Copyright 2021 Salvatore Filippone Pasqua D'Ambra diff --git a/docs/amg4psblas_1.0-guide.pdf b/docs/amg4psblas_1.0-guide.pdf index 052a00fc2c862e643095ea03c98cfab204b642c7..8021172c4bad532c1375c1afe414e1362525ba61 100644 GIT binary patch delta 58004 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

Y&V}!?-v97%-Cgsm)!yDe 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 delta 46053 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, 1999, 792–797. class="cmr-12">[7]   U.. V. Catalyurek, F. Dobrian, A. Gebremedhin, M. Halappanavar, + and A. Pothen, Distributed-memory parallel algorithms for matching and + coloring, in PCO’11 New Trends in Parallel Computing and Optimization, + IEEE International Symposium on Parallel and Distributed Processing + Workshops, IEEE CS, 2011. +

+

+ [8]   P.57 (11-12), 2007, 1181-1196.

[8][9]   Fortran 95, ACM Trans. Math. Softw., 37(3), 2010, art. 30.

- [9][10]   , Appl. Algebra Engrg. Comm. Comput., 18(3), 2007, 223–239.

[10][11]   .

[11][12]   , ACM Transactions on Mathematical Software, 30, 2004, 196– class="cmr-12">(See also http://www.cise.ufl.edu/~davis/) + + +

[12][13]   A supernodal approach to sparse partial pivoting, SIAM Journal on Matrix Analysis and Applications, 20 (3), 1999, 720–755. - - -

[13][14]   Software, 16 (1) 1990, 1–17.

[14][15]   Transactions on Mathematical Software, 14 (1) 1988, 1–17.

[15][16]   .

[16][17]    23.

[17][18]   Transactions on Mathematical Software, 26 (4), 2000, 527–55

[18][19]   algebraic multigrid by aggregation, Numerical Lin. Algebra with Applications, 2016, 23:501-518 + + +

[19][20]   MPI: The Complete Reference. Volume 2 - The MPI-2 Extensions, MIT Press, 1998. - - -

[20][21]   Mathematical Software, 5 (3), 1979, 308–323.

[21][22]   ACM Transactions on Mathematical Software, 29 (2), 2003, 110̵

[22][23]   Numerical Linear Algebra with Applications, 15 (5), 2008, 473R

[23][24]   2003.

[24][25]   University Press, 1996.

[25][26]   Press, 1998.

[26][27]    class="cmr-12">U. Trottenberg, C. Oosterlee, Multigrid, Academic Press, 2001. + + +

[27][28]   Aggregation Strategies on Massively Parallel Machines, in J. Donnelley, editor, Proceedings of SuperComputing 2000, Dallas, 2000. - - -

[28][29]   (3) 1996, 179–196.

[29][30]   16, (2013) 59–76.

[30][31]   3, 2627]), to be used in the iterative solution of linear systems, 3, 2223]are available, which can becombined with weighted versions of Jacobi, hybrid forward/backward Gauss-Seidel,block-Jacobi, and additive Schwarz smoothers. An algebraic approach is used to +class="cmr-12">block-Jacobi, and additive Schwarz smoothers. Also 1versions of Jacobi, block-Jacobigenerate a hierarchy of coarse-level matrices and operators, without explicitly using +class="cmr-12">and Gauss-Seidel smoothers are available. An algebraic approach is used to generate aany information on the geometry of the original problem, e.g., the discretization of a +class="cmr-12">hierarchy of coarse-level matrices and operators, without explicitly using anyPDE. To this end, two different coarsening strategies, based on aggregation, are +class="cmr-12">information on the geometry of the original problem, e.g., the discretization of a PDE. +To this end, two different coarsening strategies, based on aggregation, areavailable:
    @@ -145,7 +150,7 @@ class="cmr-12">2, 2829], and already included in the previous versions of the package [910, 89]; + + +
  • the first parallel implementation of a coupled version of Coarsening based @@ -168,25 +176,22 @@ class="cmr-12">on Compatible Weighted Matching introduced in [2930, 3031] and described in - - - details in [1011];
-

Either exact or approximate solvers can be used on the coarsest-level system. Specifically, different sparse LU factorizations from external packages, native @@ -198,7 +203,7 @@ class="cmr-12">Gauss-Seidel, block-Jacobi solvers and recursive call to precondi class="cmr-12">methods are available. All the smoothers can be also exploited as one-level preconditioners. -

AMG4PSBLAS is written in Fortran 2003, following an object-oriented design Single and double precision implementations of AMG4PSBLAS are ava class="cmr-12">for both the real and the complex case, which can be used through a single interface. -

AMG4PSBLAS has been designed to implement scalable and easy-to-use multilevel +

AMG4PSBLAS has been designed to implement scalable and easy-to-use preconditioners in the context of the PSBLAS (Parallel Sparse BLAS) computational +class="cmr-12">multilevel preconditioners in the context of the PSBLAS (Parallel Sparse BLAS) frameworkcomputational framework [1718, 1617]. PSBLAS provides basic linear algebra operators and data +class="cmr-12">. PSBLAS provides basic linear algebra operators +and data management facilities for distributed sparse matrices, kernels for +sequential incomplete factorizations needed for the parallel block-Jacobi and +additive Schwarz smoothers, and parallel Krylov solvers which can be used with +the AMG4PSBLAS 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 management facilities for distributed sparse matrices, as well as parallel Krylov solvers +class="cmr-12">pursue goals such as performance, portability, modularity ed extensibility which can be used with the AMG4PSBLAS preconditioners. The choice of PSBLAS +class="cmr-12">in the development of the preconditioner package. On the other hand, the has been mainly motivated by the need of having a portable and efficient +class="cmr-12">implementation of AMG4PSBLAS, which was driven by the need to face the exascale software infrastructure implementing “de facto” standard parallel sparse linear +class="cmr-12">challenge, has led to some important revisions and extentions of the PSBLAS algebra kernels, to pursue goals such as performance, portability, modularity +class="cmr-12">infrastructure. The inter-process comunication required by AMG4PSBLAS ed extensibility in the development of the preconditioner package. On the +class="cmr-12">is encapsulated in the PSBLAS routines; therefore, AMG4PSBLAS can be other hand, the implementation of AMG4PSBLAS, which was driven by the +class="cmr-12">run on any parallel machine where PSBLAS implementations are available. need to face the exascale challenge, has led to some important revisions and +class="cmr-12">In the most recent version of PSBLAS (release 3.7), a plug-in for GPU is extentions of the PSBLAS infrastructure. The inter-process comunication +class="cmr-12">included; it includes CUDA versions of main vector operations and of sparse required by AMG4PSBLAS is encapsulated in the PSBLAS routines; therefore, +class="cmr-12">matrix-vector multiplication, so that Krylov methods coupled with AMG4PBLAS AMG4PSBLAS can be run on any parallel machine where PSBLAS implementations +class="cmr-12">preconditioners relying on Jacobi and block-Jacobi smoothers with sparse are available. -

approximate inverses on the blocks can be efficiently executed on cluster of +GPUs. +

AMG4PSBLAS 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  7). -

This guide is organized as follows. General information on the distribution of the source code is reported in Section3. The basics for building and applying the preconditioners with the Krylov solvers implemented in PSBLAS are reported - - - in Section3, 2627, 2425] for 2, 2829], for building the sequence of coarse matrices and transfer is implemented, where the smoothed aggregation is applied locally class="cmr-12">submatrix [2728]. A brief description of the AMG preconditioners implemented in 5, 78, 89].

multilevel (i.e., AMG) preconditioners with the Krylov solvers in [1516]. The following steps are required:

    diff --git a/docs/html/userhtmlse8.html b/docs/html/userhtmlse8.html index c70950e5..00aadf20 100644 --- a/docs/html/userhtmlse8.html +++ b/docs/html/userhtmlse8.html @@ -52,7 +52,7 @@ class="cmr-12">PSBLAS error handling routines; for further details see the PSBLA [1516]. diff --git a/docs/html/userhtmlse9.html b/docs/html/userhtmlse9.html index faaf0b4b..75f8455a 100644 --- a/docs/html/userhtmlse9.html +++ b/docs/html/userhtmlse9.html @@ -31,25 +31,61 @@ class="cmr-12">]

    class="cmr-12">A License -

    DA CONTROLLARE E MODIFICARE INCLUDENDO I CREDITS A -MLD2P4 -

    The AMG4PSBLAS is freely distributable under the following copyright -terms: +

    AMG4PSBLAS is freely distributable under the following copyright terms:

    -                           AMG4PSBLAS  version 1.0
    -              Algebraic MultiGrid Preconditioners Package
    +                             AMG4PSBLAS version 1.0
    +    Algebraic Multigrid Package
    +               based on PSBLAS (Parallel Sparse BLAS version 3.7)
    +    (C) Copyright 2021
    +        Salvatore Filippone
    +        Pasqua D’Ambra
    +        Fabio Durastante
    +    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 AMG4PSBLAS 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 AMG4PSBLAS 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.
    +
    +

    + + + +

    AMG4PSBLAS is an evolution (a rather substantial one) of MLD2P4, whose license +we reproduce here to abide by its terms: + + + +

    +                           MLD2P4  version 2.2
    +  MultiLevel Domain Decomposition Parallel Preconditioners Package
                  based on PSBLAS (Parallel Sparse BLAS version 3.5)
    -  (C) Copyright 2008, 2010, 2012, 2015, 2017
    -  Pasqua D’Ambra         IAC-CNR, IT
    -  Fabio Durastante       University of Pisa and IAC-CNR, IT
    -  Salvatore Filippone    University of Rome Tor-Vergata and IAC-CNR, IT
    +  (C) Copyright 2008-2018
    +      Salvatore Filippone
    +      Pasqua D’Ambra
    +      Daniela di Serafino
       Redistribution and use in source and binary forms, with or without
       modification, are permitted provided that the following conditions
       are met:
    @@ -73,7 +109,7 @@ class="cmr-12">terms:
       ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
       POSSIBILITY OF SUCH DAMAGE.
     
    -

    +

    diff --git a/docs/html/userhtmlsu1.html b/docs/html/userhtmlsu1.html index ade73aaa..78b19a99 100644 --- a/docs/html/userhtmlsu1.html +++ b/docs/html/userhtmlsu1.html @@ -36,15 +36,15 @@ class="cmbx-12">BLAS

    [1314, 1415, 2021] Many vendors provide optimized versions of BLAS; if no MPI
    [1920, 2526] A version of MPI is available on most high-performance computing PSBLAS
    [1516, 1718] Parallel Sparse BLAS (PSBLAS) is available from the type of multilevel cycle and how many cycles must be applied;
  1. the aggregation algorithm; +class="cmr-12">the coarsening algorithm;
  2. 2-8. For a description of the meaning of the parameters, please refer -also to Section 4.
    .
    -

    Remark 2. A smoother is usually obtained by combining two objects: single sweep of the Gauss-Seidel solver object, while the point-J is the result of combining the block-Jacobi smoother object with a single sweep of the pointwise-Jacobi solver object. However, for simplicity, shortcuts +class="cmr-12">sweep of the point-Jacobi solver object. However, for simplicity, shortcuts are provided to set point-Jacobi, hybrid (forward) Gauss-Seidel, and hybrid ), 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 @@ -372,7 +366,7 @@ class="cmti-12">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 Table5).
    -

    Remark 3. In general, a coarsest-level solver cannot be used with both the replicated and distributed coarsest-matrix layout; therefore, set class="cmr-12">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 SuperLUovverriding any previous settings. MUMPS, point-Jacobi, hybrid Ga class="cmr-12">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 -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 @@ -421,7 +415,7 @@ class="cmti-12">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 @@ -437,7 +431,7 @@ class="cmr-12">_Dist has been class="cmr-12">previously set, the coarsest-level solver is changed to the default sequential solver. -

    Remark 4. The argument idx . -


    @@ -468,7 +462,7 @@ class="cmr-12">.
    -

    +

+class="td11">

1






what

type

val

deault

cots






’ML_CYCLE’

character(len=*)

’VCYCLE’ -

’WCYCLE’ -

’KCYCLE’ -

’ADD’

’VCYCLE’

Multilevel cycle: V-cycle, W-cycle, K-cycle, +class="td11">

Multilevel cycle: V-cycle, W-cycle, K-cycle, and additive composition.






’OUTER_SWEEPS’

integer

Any integer -

number

Any integer +

number 1

1

Number of multilevel cycles.

Number of multilevel cycles.






-


@@ -567,7 +561,10 @@ applied.
-

+

+ + +

s +

+class="cmtt-10x-x-109">’MIN_COARSE_SIZE_PER_PROCESS’. +class="td11">

1.5

+reaches this value (see Note). +class="cmmi-8">T. +class="td11">

Type of aggregation algorithm: currently, +for the +decoupled aggregation we implement two +measures of strength of connection, the +one by Vaněk, Mandel and Brezina [29], +and the one by Gratton et al [19]. The +coupled aggregation is based on a parallel +version of the half-approximate matching +implemented in the MatchBox-P software +package AGGIUNGERE LINK AL +PACKAGE?

+ +tentative prolongator).
Note. The aggregation algorithm stops when at least one of the following criteria is met: the coarse size threshold, the
+class="cmbx-10x-x-109">Note. The aggregation algorithm stops when at least one of the following criteria is met: the coarse size threshold, the coarse size threshold per process, the
minimum coarsening ratio, or the maximum number of levels is reached. Therefore, the actual number of levels may be
smaller than the specified maximum number of levels.





what

type

val

deault

coments






’MIN_COARSE_SIZE_PER_PROCESS’

integer

Any number -

Any number +

> 0

200

Coarse size threshold per process. The +class="td11">

200

Coarse size threshold per process. The aggregation stops if the global number of variables of the computed coarsest matrix is lower than or equal to this threshold multiplied by the number of processes. -






’MIN_COARSE_SIZE’

integer

Any number -

Any number +

> 0

-1

Coarse size threshold. The aggregation +class="td11">

-1

Coarse size threshold. The aggregation stops if the global number of variables of the computed coarsest matrix is lower than or equal to this threshold (see Note). If negative, it is ignored in favour of the default for ’MIN_COARSE_SIZE_PER_PROCESS’.






’MIN_CR_RATIO’

real

Any number -

Any number +

> 1

1.5

Minimum -coarsening ratio. The aggregation stops if -the ratio between the matrix dimensions -at two consecutive levels is lower than or -equal to this threshold (see Note).

Minimum coarsening +ratio. The aggregation stops if the ratio +between the global matrix dimensions at +two consecutive levels is lower than or +equal to this threshold (see Note).






’MAX_LEVS’

integer

Any integer -

number

Any integer +

number > 1

20

Maximum number of levels. The +class="td11">

20

Maximum number of levels. The aggregation stops if the number of levels -reaches this value (see Note).






’PAR_AGGR_ALG’

character(len=*)

’DEC’, ’SYMDEC’, ’COUPLED’

’DEC’

Parallel aggregation algorithm. -

Currently, only the decoupled -aggregation (DEC) is available; the SYMDEC -option applies decoupled aggregation to -the sparsity pattern of

Parallel aggregation algorithm. +

the SYMDEC option applies decoupled +aggregation to the sparsity pattern of +A + AT .






’AGGR_TYPE’

character(len=*)

’SOC1’

’SOC1’, ’SOC2’, ’MATCHBOXP’

Type of aggregation algorithm: currently, -we implement to measures of strength of -connection, the one by Vaněk, Mandel -and Brezina [28], and the one by Gratton -et al [18].






’AGGR_PROL’

’AGGR_SIZE’ integer

Any integer +

number +power of 2 +and > 2

4

Maximum size of aggregates when the +coupled aggregation based on matching +is applied. For aggressive coarsening +with size of aggregate larger than 8 +we recommend the use of smoothed +prolongators. MODIFICARE +CODICE






’AGGR_PROL’

character(len=*)

character(len=*)

’SMOOTHED’, ’UNSMOOTHED’

’SMOOTHED’

Prolongator used by the aggregation +class="cmtt-10x-x-109">’UNSMOOTHED’

’SMOOTHED’

Prolongator used by the aggregation algorithm: smoothed or unsmoothed (i.e., -tentative prolongator).











+ style="vertical-align:baseline;" id="TBL-5-13-">
+ +

Table 3: Parameters defining the aggregation algorithm.


@@ -775,7 +802,7 @@ class="content">Parameters defining the aggregation algorithm.

+

+class="td11">

Initial ordering of indices for +the decoupled aggregation algorithm: +either natural ordering or sorted by +descending degrees of the nodes in the +matrix graph.

+class="td11">

0.01

< style="vertical-align:baseline;" id="TBL-6-5-">
Note. Different thresholds at different levels, such as those used in [28, Section 5.1], can be easily set by invoking the rou-
+href="userhtmlli4.html#XVANEK_MANDEL_BREZINA">29, Section 5.1], can be easily set by invoking the rou-
tine Parameters defining the aggregation algorithm (continued).


@@ -911,7 +939,7 @@ class="content">Parameters defining the aggregation algorithm (continued). -

+






what

type

val

deault

cots






’AGGR_ORD’

character(len=*)

’NATURAL’ -

’DEGREE’

’NATURAL’

Initial ordering of indices for the -aggregation algorithm: either natural -ordering or sorted by descending -degrees of the nodes in the matrix -graph.






’AGGR_THRESH’

real(kind_parameter)

Any real -

number 

Any real +

number  [0,1]

0.01

The threshold θ in the aggregation -algorithm, see (3) in Section 4.2. See -also the note at the bottom of this table.

The threshold θ in the decoupled +aggregation algorithm, see (3) in +Section 4.2. See also the note at the +bottom of this table.






’AGGR_FILTER’

character(len=*)

’FILTER’ -

’NOFILTER’

’NOFILTER’

Matrix used in computing the smoothed +class="td11">

Matrix used in computing the smoothed prolongator: filtered or unfiltered (see (5) in Section 






+to be replicated, SLUDIST, JACOBI, GS, BJAC and PCG +require it to be distributed, MUMPS can be used with +either a replicated or a distributed matrix. When +any of the previous solvers is specified, the matrix +layout is set to a default value which allows the use +of the solver (see Remark 3, p. 24). Note also that +UMFPACK and SuperLU_Dist are available only in +double precision. Parameters defining the coarse-space correction at the coarsest -


@@ -1088,7 +1131,7 @@ class="content">Parameters defining the coarse-space correction at the coarsest
-

+






what

type

val

deault

cots






’COARSE_MAT’

character(len=*)

’DIST’ -

’REPL’

’REPL’

Coarsest matrix layout: distributed among the +class="td11">

Coarsest matrix layout: distributed among the processes or replicated on each of them.






’COARSE_SOLVE’

character(len=*)

’MUMPS’ -

’UMF’ -

’SLU’ -

’SLUDIST’ -

’JACOBI’ -

’GS’ -

’BJAC’

See Note.

Solver used at the coarsest level: sequential LU +

’BJAC’ +

’PCG’

See Note.

Solver used at the coarsest level: sequential LU from MUMPS, UMFPACK, or SuperLU (plus triangular solve); distributed LU from MUMPS or SuperLU_Dist (plus triangular solve); point-Jacobi, -hybrid Gauss-Seidel or block-Jacobi. -

Note that 1-versions; +preconditioned Conjugate Gradient coupled +with the block-Jacobi preconditioner with +ILU(0) on the blocks. +

Note that UMF and SLU require the coarsest matrix -to be replicated, SLUDIST, JACOBI, GS and BJAC -require it to be distributed, and MUMPS can be used -with either a replicated or a distributed matrix. -When any of the previous solvers is specified, -the matrix layout is set to a default value which -allows the use of the solver (see Remark 3, p. 24). -Note also that UMFPACK and SuperLU_Dist are -available only in double precision.






’COARSE_SUBSOLVE’

character(len=*)

’ILU’ -

’ILUT’ -

’MILU’ -

’MUMPS’ -

’SLU’ -

’UMF’

See Note.

Solver for the diagonal blocks of the coarse matrix, +class="td11">

See Note.

Solver for the diagonal blocks of the coarse matrix, in case the block Jacobi solver is chosen as coarsest-level solver: ILU(p), ILU(p,t), MILU(p), LU from MUMPS, SuperLU or UMFPACK -(plus triangular solve). Note that UMFPACK +(plus triangular solve). Aggiungere Sparse +Approssimate per GPU? Note that UMFPACK and SuperLU_Dist are available only in double precision.

+class="cmtt-10x-x-109">BJAC is +chosen as coarsest-level solver. Aggiungere +criterio di arresto del PCG? @@ -1195,7 +1241,7 @@ class="content">Parameters defining the coarse-space correction at the co -


@@ -1203,7 +1249,7 @@ class="content">Parameters defining the coarse-space correction at the co
-

+






what

type

val

deault

cots






’COARSE_SWEEPS’

integer

Any integer -

number

Any integer +

number > 0

10

Number of sweeps when

10

Number of sweeps when JACOBI, GS or BJAC -is chosen as coarsest-level solver.






’COARSE_FILLIN’

integer

Any integer -

number

Any integer +

number 0

0

Fill-in level

0

Fill-in level p of the ILU factorizations.






’COARSE_ILUTHRS’

real(kind_parameter)

Any real -

number

Any real +

number 0

0

Drop tolerance

0

Drop tolerance t in the ILU(p,t) factorization.

@@ -1417,7 +1470,7 @@ preconditioner. -


@@ -1425,7 +1478,7 @@ preconditioner.
-

+






what

type

val

deault

cots






’SMOOTHER_TYPE’

character(len=*)

’JACOBI’ -

’GS’ -

’BGS’ -

’BJAC’ -

’AS’

’FBGS’

Type of smoother used in the multilevel preconditioner: point-Jacobi, hybrid (forward) Gauss-Seidel, hybrid backward Gauss-Seidel, block-Jacobi, and Additive +class="cmr-10">Gauss-Seidel, block-Jacobi, 1-versions? Schwarz. -

and Additive Schwarz. +

It is ignored by one-level preconditioners.






’SUB_SOLVE’

character(len=*)

’JACOBI’ -

’GS’ -

’BGS’ -

’ILU’ -

’ILUT’ -

’MILU’ -

’MUMPS’ -

’SLU’ -

’UMF’

GS and BGS multilevel class="cmr-10">preconditioners, respectively -

ILU for block-Jacobi and Additive Schwarz one-level preconditioners

preconditioners +1-versions?

The local solver to be used with the smoother or one-level preconditioner (see @@ -1351,20 +1404,20 @@ class="cmr-10">Note for details on hybrid Gauss-Seidel.






’SMOOTHER_SWEEPS’

integer

Any integer -

number 0

1

Number of sweeps of the smoother or one-level preconditioner. In the multilevel @@ -1383,20 +1436,20 @@ class="cmr-10">respectively.






’SUB_OVR’

integer

Any integer -

number 0

1

Number of overlap layers, for Additive Schwarz only.






what

type

val

deault

cots






’SUB_RESTR’

character(len=*)

’HALO’ -

’NONE’

’HALO’

Type of restriction operator, for Additive Schwarz only: for taking into account the class="cmr-10">overlap, NONE for neglecting it. -

Note that HALO must be chosen for the classical @@ -1502,17 +1555,17 @@ class="cmr-10">variant.






’SUB_PROL’

character(len=*)

’SUM’ -

’NONE’

’NONE’

Type of prolongation operator, for Additive Schwarz only: for adding the contributions class="cmr-10">from the overlap, NONE for neglecting them. -

Note that SUM must be chosen for the classical @@ -1535,20 +1588,20 @@ class="cmr-10">RAS variant.






’SUB_FILLIN’

integer

Any integer -

number 0

0

Fill-in level p of the incomplete LU @@ -1557,23 +1610,23 @@ class="cmr-10">factorizations. <






’SUB_ILUTHRS’

real(kind_parameter)

Any real number 0

0

Drop tolerance t in the ILU(p,t) factorization.

’MUMPS_LOC_GLOB’

character(len=*)

LOCAL_SOLVER’ -

GLOBAL_SOLVER’

GLOBAL_SOLVER’

Whether MUMPS should be used as a distributed solver, or as a serial solver acting @@ -1604,17 +1657,17 @@ class="cmr-10">only on the part of the matrix local to each class="cmr-10">process.

’MUMPS_IPAR_ENTRY’

integer

Any integer number

0

Set an entry in the MUMPS integer control array, as chosen via the idx optional argument.

’MUMPS_RPAR_ENTRY’

real

Any real number

0

Set an entry in the MUMPS real control array, as chosen via the Parameters defining the smoother or the details of the one-level -