diff --git a/.gitignore b/.gitignore index 6ecf4e1f..d9e7db98 100644 --- a/.gitignore +++ b/.gitignore @@ -20,3 +20,5 @@ autom4te.cache # the executable from tests runs +# Documentation temporary files +docs/src/userguide.pdf diff --git a/docs/amg4psblas_1.0-guide.pdf b/docs/amg4psblas_1.0-guide.pdf index b3c4f559..03d93877 100644 Binary files a/docs/amg4psblas_1.0-guide.pdf and b/docs/amg4psblas_1.0-guide.pdf differ diff --git a/docs/html/index.html b/docs/html/index.html index 876b4291..b5db3f13 100644 --- a/docs/html/index.html +++ b/docs/html/index.html @@ -59,40 +59,33 @@ class="cmr-12">General Overview class="cmr-12">2 Code Distribution -
  Contributors -
  Citing AMG4PSBLAS
3 Configuring and Building AMG4PSBLAS -
  3.1 Prerequisites -
  3.2 Optional third party libraries -
  3.3 Configuration options -
  3.4 Bug reporting -
  3.5 Example and test programs @@ -100,13 +93,11 @@ class="cmr-12">Example and test programs class="cmr-12">4
Getting Started
-
  4.1 Examples -
  4.2 GPU example @@ -114,71 +105,62 @@ class="cmr-12">GPU example class="cmr-12">5
User Interface
-
  5.1 Method init -
  5.2 Method set -
  5.3 Method hierarchy_build -
  5.4 Method smoothers_build -
  5.5 Method build -
  5.6 Method apply -
  5.7 Method free -
  5.8 Method descr -
  5.9 Auxiliary Methods
6 Adding new smoother and solver objects to AMG4PSBLAS
7 Error Handling
A License
B Contributor Covenant Code of Conduct
References diff --git a/docs/html/userhtml.css b/docs/html/userhtml.css index a5ede259..c29347d8 100644 --- a/docs/html/userhtml.css +++ b/docs/html/userhtml.css @@ -22,6 +22,9 @@ .cmmi-8{font-size:72%;font-style: italic;} .cmsy-10x-x-120{font-size:109%;} .cmsy-8{font-size:72%;} +.cmtt-10{font-size:90%;font-family: monospace,monospace;} +.cmtt-10{font-family: monospace,monospace;} +.cmtt-10{font-family: monospace,monospace;} .tctt-1200{font-size:109%;font-family: monospace,monospace;} .cmmi-10x-x-109{font-style: italic;} .cmsy-10x-x-109{} @@ -29,9 +32,6 @@ .cmtt-10x-x-109{font-family: monospace,monospace;} .cmtt-10x-x-109{font-family: monospace,monospace;} .cmcsc-10x-x-109{} -.cmtt-10{font-size:90%;font-family: monospace,monospace;} -.cmtt-10{font-family: monospace,monospace;} -.cmtt-10{font-family: monospace,monospace;} .cmbx-10x-x-109{ font-weight: bold;} .cmbx-10x-x-109{ font-weight: bold;} .cmbx-10x-x-109{ font-weight: bold;} @@ -42,21 +42,26 @@ p.indent{text-indent:0;} p + p{margin-top:1em;} p + div, p + pre {margin-top:1em;} div + p, pre + p {margin-top:1em;} +a { overflow-wrap: break-word; word-wrap: break-word; word-break: break-word; hyphens: auto; } @media print {div.crosslinks {visibility:hidden;}} +table.tabular{border-collapse: collapse; border-spacing: 0;} a img { border-top: 0; border-left: 0; border-right: 0; } center { margin-top:1em; margin-bottom:1em; } td center { margin-top:0em; margin-bottom:0em; } .Canvas { position:relative; } img.math{vertical-align:middle;} +div.par-math-display, div.math-display{text-align:center;} li p.indent { text-indent: 0em } li p:first-child{ margin-top:0em; } li p:last-child, li div:last-child { margin-bottom:0.5em; } +li p:first-child{ margin-bottom:0; } li p~ul:last-child, li p~ol:last-child{ margin-bottom:0.5em; } .enumerate1 {list-style-type:decimal;} .enumerate2 {list-style-type:lower-alpha;} .enumerate3 {list-style-type:lower-roman;} .enumerate4 {list-style-type:upper-alpha;} div.newtheorem { margin-bottom: 2em; margin-top: 2em;} +div.newtheorem .head{font-weight: bold;} .obeylines-h,.obeylines-v {white-space: nowrap; } div.obeylines-v p { margin-top:0; margin-bottom:0; } .overline{ text-decoration:overline; } @@ -82,6 +87,7 @@ div.flushleft {text-align: left;} .framebox-r {text-align:right;} span.thank-mark{ vertical-align: super } span.footnote-mark sup.textsuperscript, span.footnote-mark a sup.textsuperscript{ font-size:80%; } +code.verb{font-family:monospace,monospace;} div.tabular, div.center div.tabular {text-align: center; margin-top:0.5em; margin-bottom:0.5em; } table.tabular td p{margin-top:0em;} table.tabular {margin-left: auto; margin-right: auto;} @@ -100,6 +106,9 @@ table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; } .hline hr, .cline hr{ height : 0px; margin:0px; } .hline td, .cline td{ padding: 0; } .hline hr, .cline hr{border:none;border-top:1px solid black;} +.hline {border-top: 1px solid black;} +.hline + .vspace:last-child{display:none;} +.hline:first-child{border-bottom:1px solid black;border-top:none;} .tabbing-right {text-align:right;} div.float, div.figure {margin-left: auto; margin-right: auto;} div.float img {text-align:center;} @@ -130,9 +139,9 @@ div.caption span.id{font-weight: bold; white-space: nowrap; } h1.partHead{text-align: center} p.bibitem { text-indent: -2em; margin-left: 2em; margin-top:0.6em; margin-bottom:0.6em; } p.bibitem-p { text-indent: 0em; margin-left: 2em; margin-top:0.6em; margin-bottom:0.6em; } +.subsubsectionHead, .likesubsubsectionHead { font-size: 1em; } .paragraphHead, .likeparagraphHead { margin-top:2em; font-weight: bold;} .subparagraphHead, .likesubparagraphHead { font-weight: bold;} -.quote {margin-bottom:0.25em; margin-top:0.25em; margin-left:1em; margin-right:1em; text-align:justify;} .verse{white-space:nowrap; margin-left:2em} div.maketitle {text-align:center;} h2.titleHead{text-align:center;} @@ -140,121 +149,95 @@ div.maketitle{ margin-bottom: 2em; } div.author, div.date {text-align:center;} div.thanks{text-align:left; margin-left:10%; font-size:85%; font-style:italic; } div.author{white-space: nowrap;} -.quotation {margin-bottom:0.25em; margin-top:0.25em; margin-left:1em; } -.abstract p {margin-left:5%; margin-right:5%;} +div.abstract p {margin-left:5%; margin-right:5%;} div.abstract {width:100%;} -.subsectionToc, .likesubsectionToc {margin-left:2em;} -.subsubsectionToc, .likesubsubsectionToc {margin-left:4em;} +.abstracttitle{text-align:center;margin-bottom:1em;} +.subsectionToc, .likesubsectionToc {margin-left:1em;} +.subsubsectionToc, .likesubsubsectionToc {margin-left:2em;} +.paragraphToc, .likeparagraphToc {margin-left:3em;} +.subparagraphToc, .likesubparagraphToc {margin-left:4em;} .ovalbox { padding-left:3pt; padding-right:3pt; border:solid thin; } .Ovalbox-thick { padding-left:3pt; padding-right:3pt; border:solid thick; } .shadowbox { padding-left:3pt; padding-right:3pt; border:solid thin; border-right:solid thick; border-bottom:solid thick; } .doublebox { padding-left:3pt; padding-right:3pt; border-style:double; border:solid thick; } .rotatebox{display: inline-block;} +code.lstinline{font-family:monospace,monospace;} +pre.listings{font-family: monospace,monospace; white-space: pre-wrap; margin-top:0.5em; margin-bottom:0.5em; } .lstlisting .label{margin-right:0.5em; } -div.lstlisting{font-family: monospace,monospace; white-space: nowrap; margin-top:0.5em; margin-bottom:0.5em; } -div.lstinputlisting{ font-family: monospace,monospace; white-space: nowrap; } +pre.lstlisting{font-family: monospace,monospace; white-space: pre-wrap; margin-top:0.5em; margin-bottom:0.5em; } +pre.lstinputlisting{ font-family: monospace,monospace; white-space: pre-wrap; } .lstinputlisting .label{margin-right:0.5em;} -#TBL-1 colgroup{border-left: 1px solid black;border-right:1px solid black;} -#TBL-1{border-collapse:collapse;} -#TBL-1 colgroup{border-left: 1px solid black;border-right:1px solid black;} -#TBL-1{border-collapse:collapse;} -#TBL-1 colgroup{border-left: 1px solid black;border-right:1px solid black;} -#TBL-1{border-collapse:collapse;} -#TBL-1 colgroup{border-left: 1px solid black;border-right:1px solid black;} -#TBL-1{border-collapse:collapse;} -#TBL-4 colgroup{border-left: 1px solid black;border-right:1px solid black;} -#TBL-4{border-collapse:collapse;} -#TBL-4 colgroup{border-left: 1px solid black;border-right:1px solid black;} -#TBL-4{border-collapse:collapse;} -#TBL-4 colgroup{border-left: 1px solid black;border-right:1px solid black;} -#TBL-4{border-collapse:collapse;} -#TBL-4 colgroup{border-left: 1px solid black;border-right:1px solid black;} -#TBL-4{border-collapse:collapse;} -#TBL-4 colgroup{border-left: 1px solid black;border-right:1px solid black;} -#TBL-4{border-collapse:collapse;} -#TBL-4 colgroup{border-left: 1px solid black;border-right:1px solid black;} -#TBL-4{border-collapse:collapse;} -#TBL-5 colgroup{border-left: 1px solid black;border-right:1px solid black;} -#TBL-5{border-collapse:collapse;} -#TBL-5 colgroup{border-left: 1px solid black;border-right:1px solid black;} -#TBL-5{border-collapse:collapse;} -#TBL-5 colgroup{border-left: 1px solid black;border-right:1px solid black;} -#TBL-5{border-collapse:collapse;} -#TBL-5 colgroup{border-left: 1px solid black;border-right:1px solid black;} -#TBL-5{border-collapse:collapse;} -#TBL-5 colgroup{border-left: 1px solid black;border-right:1px solid black;} -#TBL-5{border-collapse:collapse;} -#TBL-5 colgroup{border-left: 1px solid black;border-right:1px solid black;} -#TBL-5{border-collapse:collapse;} +#TBL-1-1{border-left: 1px solid black;} +#TBL-1-1{border-right:1px solid black;} +#TBL-1-2{border-right:1px solid black;} +#TBL-1-3{border-right:1px solid black;} +#TBL-4-1{border-left: 1px solid black;} +#TBL-4-1{border-right:1px solid black;} +#TBL-4-2{border-right:1px solid black;} +#TBL-4-3{border-right:1px solid black;} +#TBL-4-4{border-right:1px solid black;} +#TBL-4-5{border-right:1px solid black;} +#TBL-5-1{border-left: 1px solid black;} +#TBL-5-1{border-right:1px solid black;} +#TBL-5-2{border-right:1px solid black;} +#TBL-5-3{border-right:1px solid black;} +#TBL-5-4{border-right:1px solid black;} +#TBL-5-5{border-right:1px solid black;} td#TBL-5-10-5{border-left:solid black 0.4pt;border-right:solid black 0.4pt;} +td#TBL-5-10-5{border-left:solid black 0.4pt;border-right:solid black 0.4pt;} +td#TBL-5-11-5{border-left:solid black 0.4pt;border-right:solid black 0.4pt;} td#TBL-5-11-5{border-left:solid black 0.4pt;border-right:solid black 0.4pt;} td#TBL-5-12-5{border-left:solid black 0.4pt;border-right:solid black 0.4pt;} -#TBL-6 colgroup{border-left: 1px solid black;border-right:1px solid black;} -#TBL-6{border-collapse:collapse;} -#TBL-6 colgroup{border-left: 1px solid black;border-right:1px solid black;} -#TBL-6{border-collapse:collapse;} -#TBL-6 colgroup{border-left: 1px solid black;border-right:1px solid black;} -#TBL-6{border-collapse:collapse;} -#TBL-6 colgroup{border-left: 1px solid black;border-right:1px solid black;} -#TBL-6{border-collapse:collapse;} -#TBL-6 colgroup{border-left: 1px solid black;border-right:1px solid black;} -#TBL-6{border-collapse:collapse;} -#TBL-6 colgroup{border-left: 1px solid black;border-right:1px solid black;} -#TBL-6{border-collapse:collapse;} +td#TBL-5-12-5{border-left:solid black 0.4pt;border-right:solid black 0.4pt;} +#TBL-6-1{border-left: 1px solid black;} +#TBL-6-1{border-right:1px solid black;} +#TBL-6-2{border-right:1px solid black;} +#TBL-6-3{border-right:1px solid black;} +#TBL-6-4{border-right:1px solid black;} +#TBL-6-5{border-right:1px solid black;} +td#TBL-6-5-5{border-left:solid black 0.4pt;border-right:solid black 0.4pt;} td#TBL-6-5-5{border-left:solid black 0.4pt;border-right:solid black 0.4pt;} td#TBL-6-6-5{border-left:solid black 0.4pt;border-right:solid black 0.4pt;} -#TBL-7 colgroup{border-left: 1px solid black;border-right:1px solid black;} -#TBL-7{border-collapse:collapse;} -#TBL-7 colgroup{border-left: 1px solid black;border-right:1px solid black;} -#TBL-7{border-collapse:collapse;} -#TBL-7 colgroup{border-left: 1px solid black;border-right:1px solid black;} -#TBL-7{border-collapse:collapse;} -#TBL-7 colgroup{border-left: 1px solid black;border-right:1px solid black;} -#TBL-7{border-collapse:collapse;} -#TBL-7 colgroup{border-left: 1px solid black;border-right:1px solid black;} -#TBL-7{border-collapse:collapse;} -#TBL-7 colgroup{border-left: 1px solid black;border-right:1px solid black;} -#TBL-7{border-collapse:collapse;} +td#TBL-6-6-5{border-left:solid black 0.4pt;border-right:solid black 0.4pt;} +#TBL-7-1{border-left: 1px solid black;} +#TBL-7-1{border-right:1px solid black;} +#TBL-7-2{border-right:1px solid black;} +#TBL-7-3{border-right:1px solid black;} +#TBL-7-4{border-right:1px solid black;} +#TBL-7-5{border-right:1px solid black;} +td#TBL-7-5-5{border-left:solid black 0.4pt;border-right:solid black 0.4pt;} td#TBL-7-5-5{border-left:solid black 0.4pt;border-right:solid black 0.4pt;} td#TBL-7-6-5{border-left:solid black 0.4pt;border-right:solid black 0.4pt;} +td#TBL-7-6-5{border-left:solid black 0.4pt;border-right:solid black 0.4pt;} +td#TBL-7-7-5{border-left:solid black 0.4pt;border-right:solid black 0.4pt;} td#TBL-7-7-5{border-left:solid black 0.4pt;border-right:solid black 0.4pt;} td#TBL-7-12-5{border-left:solid black 0.4pt;border-right:solid black 0.4pt;} +td#TBL-7-12-5{border-left:solid black 0.4pt;border-right:solid black 0.4pt;} +td#TBL-7-13-5{border-left:solid black 0.4pt;border-right:solid black 0.4pt;} td#TBL-7-13-5{border-left:solid black 0.4pt;border-right:solid black 0.4pt;} -#TBL-8 colgroup{border-left: 1px solid black;border-right:1px solid black;} -#TBL-8{border-collapse:collapse;} -#TBL-8 colgroup{border-left: 1px solid black;border-right:1px solid black;} -#TBL-8{border-collapse:collapse;} -#TBL-8 colgroup{border-left: 1px solid black;border-right:1px solid black;} -#TBL-8{border-collapse:collapse;} -#TBL-8 colgroup{border-left: 1px solid black;border-right:1px solid black;} -#TBL-8{border-collapse:collapse;} -#TBL-8 colgroup{border-left: 1px solid black;border-right:1px solid black;} -#TBL-8{border-collapse:collapse;} -#TBL-8 colgroup{border-left: 1px solid black;border-right:1px solid black;} -#TBL-8{border-collapse:collapse;} -#TBL-9 colgroup{border-left: 1px solid black;border-right:1px solid black;} -#TBL-9{border-collapse:collapse;} -#TBL-9 colgroup{border-left: 1px solid black;border-right:1px solid black;} -#TBL-9{border-collapse:collapse;} -#TBL-9 colgroup{border-left: 1px solid black;border-right:1px solid black;} -#TBL-9{border-collapse:collapse;} -#TBL-9 colgroup{border-left: 1px solid black;border-right:1px solid black;} -#TBL-9{border-collapse:collapse;} -#TBL-9 colgroup{border-left: 1px solid black;border-right:1px solid black;} -#TBL-9{border-collapse:collapse;} -#TBL-9 colgroup{border-left: 1px solid black;border-right:1px solid black;} -#TBL-9{border-collapse:collapse;} -#TBL-10 colgroup{border-left: 1px solid black;border-right:1px solid black;} -#TBL-10{border-collapse:collapse;} -#TBL-10 colgroup{border-left: 1px solid black;border-right:1px solid black;} -#TBL-10{border-collapse:collapse;} -#TBL-10 colgroup{border-left: 1px solid black;border-right:1px solid black;} -#TBL-10{border-collapse:collapse;} -#TBL-10 colgroup{border-left: 1px solid black;border-right:1px solid black;} -#TBL-10{border-collapse:collapse;} -#TBL-10 colgroup{border-left: 1px solid black;border-right:1px solid black;} -#TBL-10{border-collapse:collapse;} -#TBL-10 colgroup{border-left: 1px solid black;border-right:1px solid black;} -#TBL-10{border-collapse:collapse;} +#TBL-8-1{border-left: 1px solid black;} +#TBL-8-1{border-right:1px solid black;} +#TBL-8-2{border-right:1px solid black;} +#TBL-8-3{border-right:1px solid black;} +#TBL-8-4{border-right:1px solid black;} +#TBL-8-5{border-right:1px solid black;} +#TBL-9-1{border-left: 1px solid black;} +#TBL-9-1{border-right:1px solid black;} +#TBL-9-2{border-right:1px solid black;} +#TBL-9-3{border-right:1px solid black;} +#TBL-9-4{border-right:1px solid black;} +#TBL-9-5{border-right:1px solid black;} +#TBL-10-1{border-left: 1px solid black;} +#TBL-10-1{border-right:1px solid black;} +#TBL-10-2{border-right:1px solid black;} +#TBL-10-3{border-right:1px solid black;} +#TBL-10-4{border-right:1px solid black;} +#TBL-10-5{border-right:1px solid black;} +#TBL-11-1{border-left: 1px solid black;} +#TBL-11-1{border-right:1px solid black;} +#TBL-11-2{border-right:1px solid black;} +#TBL-11-3{border-right:1px solid black;} +#TBL-11-4{border-right:1px solid black;} +#TBL-11-5{border-right:1px solid black;} /* end css.sty */ diff --git a/docs/html/userhtml.html b/docs/html/userhtml.html index 876b4291..b5db3f13 100644 --- a/docs/html/userhtml.html +++ b/docs/html/userhtml.html @@ -59,40 +59,33 @@ class="cmr-12">General Overview
class="cmr-12">2
Code Distribution
-
  Contributors -
  Citing AMG4PSBLAS
3 Configuring and Building AMG4PSBLAS -
  3.1 Prerequisites -
  3.2 Optional third party libraries -
  3.3 Configuration options -
  3.4 Bug reporting -
  3.5 Example and test programs @@ -100,13 +93,11 @@ class="cmr-12">Example and test programs class="cmr-12">4
Getting Started
-
  4.1 Examples -
  4.2 GPU example @@ -114,71 +105,62 @@ class="cmr-12">GPU example class="cmr-12">5
User Interface
-
  5.1 Method init -
  5.2 Method set -
  5.3 Method hierarchy_build -
  5.4 Method smoothers_build -
  5.5 Method build -
  5.6 Method apply -
  5.7 Method free -
  5.8 Method descr -
  5.9 Auxiliary Methods
6 Adding new smoother and solver objects to AMG4PSBLAS
7 Error Handling
A License
B Contributor Covenant Code of Conduct
References diff --git a/docs/html/userhtmlli1.html b/docs/html/userhtmlli1.html index dcc83f43..27911345 100644 --- a/docs/html/userhtmlli1.html +++ b/docs/html/userhtmlli1.html @@ -145,6 +145,13 @@ class="cmr-12">of AMG4PSBLAS.
+

+ + + + + +

Contributors

    -
  • +

    Pasqua D’Ambra, IAC-CNR, IT; -

  • -
  • Fabio Durastante, University of Pisa and IAC-CNR, IT;
  • -
  • +

    Fabio Durastante, University of Pisa and IAC-CNR, IT; +

  • +
  • +

    Salvatore Filippone, University of Rome Tor-Vergata and IAC-CNR, IT;

diff --git a/docs/html/userhtmlli4.html b/docs/html/userhtmlli4.html index 2a339025..a943f3f2 100644 --- a/docs/html/userhtmlli4.html +++ b/docs/html/userhtmlli4.html @@ -25,7 +25,7 @@ href="userhtmlse2.html#userhtmlli4.html" >up]

Citing AMG4PSBLAS

When use the library, please cite the following: @@ -41,6 +41,7 @@ class="cmr-12">When use the library, please cite the following:        archivePrefix = {arXiv},        year={2021}      } + @Misc{psctoolkit-web-page,        author = {D’Ambra, Pasqua and Durastante, Fabio and Filippone, Salvatore},        title =  {{PSCToolkit} {W}eb page}, @@ -56,6 +57,9 @@ class="cmr-12">When use the library, please cite the following: + + +

References

@@ -303,22 +303,41 @@ class="cmr-12">  P. D’Ambra, F D’Ambra, F. Durastante, S. Filippone, AMG preconditioners for Linear Solvers towards Extreme Scale, 2020, arXiv:2006.16147v3. +class="cmr-12">, SIAM Journal on Scientific Computing + 43, no. 5 (2021): S679-S703.

[15]   P. D’Ambra, F. Durastante, S. Filippone, S. Massei, S. Thomas + Optimal Polynomial Smoothers for Parallel AMG, 2024, arXiv:2407.09848. +

+

+ [16]   T.)

[16][17]   SIAM Journal on Matrix Analysis and Applications, 20 (3), 1999, 7

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

[18][19]   extended set of FORTRAN Basic Linear Algebra Subprograms< class="cmr-12">, ACM Transactions on Mathematical Software, 14 (1) 1988, 1–17. + + +

[19][20]   Clusters, in Proc. of ParCo 2001, Parallel Computing, Advances and Current Issues, 2002. - - -

[20][21]   .

[21][22]    23.

[22][23]   Transactions on Mathematical Software, 26 (4), 2000, 527–55

[23][24]   2016, 23:501-518

[24][25]   , MIT Press, 1998.

[25][26]   Algebra Subprograms for FORTRAN usage, ACM Transactions on Mathematical Software, 5 (3), 1979, 308–323. + + +

[26][27]   J. Lottes, Optimal polynomial smoothers for multigrid V-cycles, + Numerical Linear Algebra with Applications 30.6 (2023): e2518. +

+

+ [28]   Distributed-memory Sparse Direct Solver for Unsymmetric Linear S class="cmr-12">, ACM Transactions on Mathematical Software, 29 (2), 2003, 110–140. - - -

[27][29]   Numerical Linear Algebra with Applications, 15 (5), 2008, 473R

[28][30]   2003.

[29][31]   University Press, 1996.

[30][32]   Press, 1998.

[31][33]    Oosterlee, Multigrid, Academic Press, 2001.

[32][34]   Aggregation Strategies on Massively Parallel Machines, in J. Donnelley, editor, Proceedings of SuperComputing 2000, Dallas, 2000. + + +

[33][35]   (3) 1996, 179–196.

+ + +

Note that the module amg_prec_modNote that the module amg_prec_mod, containing the definition of the preconditioner data type and the interfaces to the routines of AMG4PSBLAS, must be used in any program calling such routines. The modules psb_base_modin any program calling such routines. The modules psb_base_mod, for the sparse matrix and communication descriptor data types, and psb_krylov_modsparse matrix and communication descriptor data types, and psb_krylov_mod, for interfacing with the Krylov solvers, must be also used (see Sectionproblems. However, this does not necessarily correspond to the sh class="cmr-12">on parallel computers.

-  4.1 Examples -
  4.2 GPU example diff --git a/docs/html/userhtmlse5.html b/docs/html/userhtmlse5.html index a7e1fb0e..aa19b30e 100644 --- a/docs/html/userhtmlse5.html +++ b/docs/html/userhtmlse5.html @@ -33,28 +33,20 @@ class="cmr-12">5 User Interface

The basic user interface of AMG4PBLAS consists of eight methods. The six methods -init, set, build, hierarchy_build, smoothers_build and apply 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 preconditioner implemented in the package. The method free deallocates the preconditioner data structure, while descr preconditioner data structure, while descr prints a description of the preconditioner setup by the user. For backward compatibility, methods are also accessible as @@ -67,53 +59,44 @@ class="cmr-12">real/complex and single/double precision data; arguments with app must be passed to the method, i.e.,

+ + +

The new solver object is then dynamically included in the preconditioner structure, to which the preconditioner will conform, even though class="cmr-12">the AMG4PSBLAS library has not been modified to account for this new development. - - -

It is possible to define new values for the keyword WHAT in the set 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 @@ -147,8 +113,7 @@ class="cmr-12">any keyword/value pair that does not pertain to a given solver is class="cmr-12">ignored.

An example is provided in the source code distribution under the folder -tests/newslvtests/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 @@ -165,61 +130,51 @@ class="cmr-12">The interfaces for the calls shown above are defined using

-

+

smoother

class(amg_x_base_smoother_type)

+ preconditioner. + style="vertical-align:baseline;" id="TBL-23-3-">

smoother

class(amg_x_base_smoother_type)

The user-defined new smoother to be employed in the -preconditioner.

solver

class(amg_x_base_solver_type)

solver

class(amg_x_base_solver_type)

The user-defined new solver to be employed in the preconditioner.

+ style="vertical-align:baseline;" id="TBL-23-4-">

The user-defined new solver to be employed in the preconditioner.

The other arguments are defined in the way described in Sec. 5.2. As an example, in the -tests/newslv code we define a new object of type amg_d_tlu_solver_typetests/newslv code we define a new object of type amg_d_tlu_solver_type, and we pass it as follows: -

+   
+
   ! sparse matrix and preconditioner
   type(psb_dspmat_type) :: a
   type(amg_dprec_type)  :: prec
   type(amg_d_tlu_solver_type) :: tlusv
+
 ......
   !
   !  prepare the preconditioner: an ML with defaults, but with TLU solver at
@@ -230,6 +185,7 @@ class="cmr-12">pass it as follows:
   nlv = prec%get_nlevs()
   call prec%set(tlusv,   info,ilev=1,ilmax=max(1,nlv-1))
   call prec%smoothers_build(a,desc_a,info)
+
 

@@ -241,6 +197,9 @@ class="cmr-12">pass it as follows: + + +

-
Table 5: Parameters defining the solver at the coarsest level (continued).
@@ -1495,7 +1205,7 @@ class="content">Parameters defining the solver at the coarsest level (continued)
s +class="td11">

BJAC_STOP +

+class="td11">

BJAC_TRACE +

+class="td11">

BJAC_ITRACE +

+class="td11">

BJAC_RESCHECK +

+class="td11">

BJAC_STOPTOL +

+ Minimal Residual method with restarting. + Refer to the PSBLAS guide [21] for further + information. + + for the coarse Krylov solver. + + The same caveat from Table 5 applies here. + +class="td11">

KRM_GLOBAL +

+class="td11">

The stopping tolerance.

+ methods, otherwise it is ignored. + + the relative residual reduction in the 2-norm is + used instead; refer to the PSBLAS [21] guide + for the details. + +class="td11">

KRM_ITMAX +

+ an informational message about convergence + every KRM_ITRACE iterations. If = 0 print a + message in case of convergence failure. + + first fill-in for the approximate inverses. +





what

what

daa type

val

e

val

default

t

coments






BJAC_STOP

character(len=*)

FALSE -

TRUE

FALSE

Select whether to use a stopping criterion for -the Block-Jacobi method used as a coarse -solver.

character(len=*) +

FALSE +

TRUE +

FALSE +

Select whether to use a stopping criterion for + the Block-Jacobi method used as a coarse + solver. +






BJAC_TRACE

character(len=*)

FALSE -

TRUE

FALSE

Select whether to print a trace for the -calculated residual for the Block-Jacobi -method used as a coarse solver.

character(len=*) +

FALSE +

TRUE +

FALSE +

Select whether to print a trace for the + calculated residual for the Block-Jacobi + method used as a coarse solver. +






BJAC_ITRACE

integer

Any integer -

> 0

-1

Number of iterations after which a trace is to -be printed.

integer +

Any integer +

> 0 +

-1 +

Number of iterations after which a trace is to + be printed. +






BJAC_RESCHECK

integer

Any integer -

> 0

-1

Number of iterations after which a residual is -to be calculated.

integer +

Any integer +

> 0 +

-1 +

Number of iterations after which a residual is + to be calculated. +






BJAC_STOPTOL

real(kind_parameter)

Any real -

< 1

0

Tolerance for the stopping criterion on the -residual.

real(kind_parameter) +

Any real +

< 1 +

0 +

Tolerance for the stopping criterion on the + residual. +






KRM_METHOD

character(len=*)

CG -

FCG -

CGS -

CGR -

BICG -

BICGSTAB -

BICGSTABL -

RGMRES

FCG

A string that defines the iterative method to -be used when employing a Krylov method -KRM as a coarse solver.

KRM_METHOD +

character(len=*) +

CG +

FCG +

CGS +

CGR +

BICG +

BICGSTAB +

BICGSTABL +

RGMRES +

FCG +

A string that defines the iterative method to + be used when employing a Krylov method + KRM as a coarse solver. CG the Conjugate -Gradient method; FCG the Flexible Conjugate -Gradient method; CGS the Conjugate Gradient -Stabilized -method; GCR the Generalized Conjugate -Residual method; FCG the Flexible Conjugate -Gradient method; BICG the Bi-Conjugate -Gradient method; BICGSTAB the Bi-Conjugate -Gradient Stabilized method; BICGSTABL the -Bi-Conjugate Gradient Stabilized method -with restarting; RGMRES the Generalized -Minimal Residual method with restarting. -Refer to the PSBLAS guide [20] for further -information.






KRM_KPREC

character(len=*)

Table 1

BJAC

The one-level -preconditioners from the Table 

KRM_KPREC +

character(len=*) +

Table 1 +

BJAC +

The one-level + preconditioners from the Table 1 can be used -for the coarse Krylov solver.






KRM_SUB_SOLVE

character(len=*)

Table 5

ILU

Solver for the diagonal blocks of the coarsest -matrix preconditioner, in case the block Jacobi -solver is chosen -as KRM_KPREC: ILU(

KRM_SUB_SOLVE +

character(len=*) +

Table 5 +

ILU +

Solver for the diagonal blocks of the coarsest + matrix preconditioner, in case the block Jacobi + solver is chosen + as KRM_KPREC: ILU(p), ILU(p,t), MILU(p), -LU from MUMPS, SuperLU or UMFPACK -(plus triangular solve), Approximate Inverses -INVK(p,q), INVT(p11,t2) and AINV(t); -The same caveat from Table 5 applies here.






KRM_GLOBAL

character(len=*)

TRUE, -FALSE

FALSE

Choose between a global Krylov solver, all -unknowns on a single node, or a distributed -one. The default choice is the distributed -solver.

character(len=*) +

TRUE, + FALSE +

FALSE +

Choose between a global Krylov solver, all + unknowns on a single node, or a distributed + one. The default choice is the distributed + solver. +






KRM_EPS

real(kind_parameter)

Real

KRM_EPS

real(kind_parameter)

Real < 1

10

10-6

The stopping tolerance.






KRM_IRST

integer

Integer -

1

30

An integer specifying the restart parameter. -This is employed for the

KRM_IRST +

integer +

Integer +

1 +

30 +

An integer specifying the restart parameter. + This is employed for the BiCGSTABL or RGMRES -methods, otherwise it is ignored.






KRM_ISTOPC

integer

Integers -1,2,3

2

If

KRM_ISTOPC +

integer +

Integers + 1,2,3 +

2 +

If 1 then the method uses the normwise -backward error in the infinity norm; if 2, the -it uses the relative residual in the 2-norm; if 3 -the relative residual reduction in the 2-norm is -used instead; refer to the PSBLAS [20] guide -for the details.






KRM_ITMAX

integer

Integer -

1

40

The maximum number of iterations to -perform.

integer +

Integer +

1 +

40 +

The maximum number of iterations to + perform. +






KRM_ITRACE

integer

Integer -

0

-1

If

KRM_ITRACE +

integer +

Integer +

0 +

-1 +

If > 0 print out -an informational message about convergence -every KRM_ITRACE iterations. If = 0 print a -message in case of convergence failure.






KRM_FILLIN

integer

Integer -

0

0

Fill-in level

KRM_FILLIN +

integer +

Integer +

0 +

0 +

Fill-in level p of the ILU factorizations and -first fill-in for the approximate inverses.






+class="td11">
+ -
Table 6: Additional parameters defining the solver at the coarsest level.
@@ -1946,7 +1571,7 @@ class="content">Additional parameters defining the solver at the coarsest level. >

s +class="cmr-10">-point-Jacobi and Additive + Schwarz, polynomial accelerators; see [15] +

It is ignored by one-level preconditioners. +

+ Note for details on hybrid Gauss-Seidel. + + respectively. Is ignored if the smoother is + POLY + +class="cmr-10">1 + and 30 +





what

what

daa type

val

e

val

default

t

coments






SMOOTHER_TYPE

character(len=*)

JACOBI -

GS -

BGS -

BJAC -

AS -

L1-JACOBI -

L1-BJAC -

L1-FBGS

FBGS

SMOOTHER_TYPE +

character(len=*) +

JACOBI +

GS +

BGS +

BJAC +

AS +

L1-JACOBI +

L1-BJAC +

L1-FBGS +

POLY +

FBGS +

Type of smoother used in the multilevel -preconditioner: point-Jacobi, hybrid -(forward) Gauss-Seidel, hybrid backward -Gauss-Seidel, block-Jacobi, 1-Jacobi, -1–hybrid (forward) Gauss-Seidel, -–hybrid (forward) + Gauss-Seidel, 1-point-Jacobi and Additive Schwarz. -

It is ignored by one-level preconditioners.






SUB_SOLVE

character(len=*)

JACOBI -GS -

BGS -

ILU -

ILUT -

MILU -

MUMPS -

SLU -

UMF -

INVT -

INVK -

AINV

SUB_SOLVE +

character(len=*) +

JACOBI + GS +

BGS +

ILU +

ILUT +

MILU +

MUMPS +

SLU +

UMF +

INVT +

INVK +

AINV +

GS and BGS for pre- -and post-smoothers of -multilevel -preconditioners, -respectively -

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

preconditioners +

The local solver to be used with the -smoother or one-level preconditioner (see -Remark 2, page 24): point-Jacobi, hybrid -(forward) Gauss-Seidel, hybrid backward -Gauss-Seidel, ILU(p), ILU(p,t), MILU(p), -LU from MUMPS, -SuperLU or UMFPACK (plus triangular -solve), Approximate Inverses INVK(p,q), -INVT(p12) and AINV(t); note -that approximate inverses are specifically -suited for GPUs since they do not employ -triangular system solve kernels, see [3]. See -Note for details on hybrid Gauss-Seidel.






SMOOTHER_SWEEPS

integer

SMOOTHER_SWEEPS +

integer +

Any integer -

number 0

1

0 +

1 +

Number of sweeps of the smoother or -one-level preconditioner. In the multilevel -case, no pre-smother or post-smoother -is used if this parameter is set to 0 -together with pos=PRE or pos=POSTtogether with pos=PRE or pos=POST, -respectively.






SUB_OVR

integer

POLY_DEGREE +

integer +

Any integer -

number 0

1

Number of overlap layers, for Additive -Schwarz only.

1 +

Degree of the polynomial accelerator, is + equal to the number of matrix-vector + products performed by the smoother. Is + ignored if the smoother is not POLY +






+class="td11">
Table 7: Parameters defining the smoother or the details of the one-level @@ -2278,7 +1839,7 @@ preconditioner.
-


@@ -2286,9 +1847,9 @@ preconditioner.
-

+

s + + its RAS variant. + + NONEfor its RAS variant. + + factorizations. + + factorization. + + process. + + argument. + + argument. +





what

what

daa type

val

e

val

default

t

coments






SUB_RESTR

character(len=*)

HALO -

NONE

HALO

SUB_OVR +

integer +

Any integer +

number 0 +

1 +

Number of overlap layers, for Additive + Schwarz only. +

SUB_RESTR +

character(len=*) +

HALO +

NONE +

HALO +

Type of restriction operator, for Additive -Schwarz only: HALO for taking into account -the overlap, NONE the overlap, NONE for neglecting it. -

Note that HALO must be chosen for the -classical Addditive Schwarz smoother and -its RAS variant.






SUB_PROL

character(len=*)

SUM -

NONE

NONE

SUB_PROL +

character(len=*) +

SUM +

NONE +

NONE +

Type of prolongation operator, for Additive -Schwarz only: SUM Schwarz only: SUM for adding the -contributions from the overlap, NONE contributions from the overlap, NONE for -neglecting them. -

Note that SUM

Note that SUM must be chosen for the -classical Additive Schwarz smoother, and -NONE for its RAS variant.






SUB_FILLIN

integer

SUB_FILLIN +

integer +

Any integer -

number 0

0

0 +

0 +

Fill-in level p of the incomplete LU -factorizations.






SUB_ILUTHRS

real(kind_parameter)

Any real -

SUB_ILUTHRS +

real(kind_parameter) +

Any real + number 0

0

0 +

0 +

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






MUMPS_LOC_GLOB

character(len=*)

LOCAL_SOLVER -

GLOBAL_SOLVER

GLOBAL_SOLVER

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 -only on the part of the matrix local to each -process.






MUMPS_IPAR_ENTRY

integer

Any integer -number

0

MUMPS_IPAR_ENTRY +

integer +

Any integer + number +

0 +

Set an entry in the MUMPS integer control -array, as chosen via the idx 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 idx

MUMPS_RPAR_ENTRY +

real +

Any real number +

0 +

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






+ style="vertical-align:baseline;" id="TBL-10-10-">
Table 8: Parameters defining the smoother or the details of the one-level preconditioner @@ -2566,6 +2098,219 @@ class="content">Parameters defining the smoother or the details of the one-level +

+ +
+ + + +


+ + + +
+

+

+ + + +





what

data type

val

default

comments






POLY_VARIANT +

character(len=*) +

CHEB_4 +

CHEB_4_OPT +

CHEB_1_OPT +

CHEB_4 +

Select the type of + polynomial accelerator. + The CHEB_4 and + CHEB_4_OPT types + are those based on the + Chebyshev + polynomials of + the 4th-kind described + in [27]. The + CHEB_1_OPT version + is the one described + in [15] and based on + the Chebyshev + polynomials of the + 1st-kind. +






POLY_RHO_ESTIMATE +

character(len=*) +

POLY_RHO_EST_POWER +

POLY_RHO_EST_POWER +

Algorithm for + estimating the spectral + radius of the smoother + to + which the polynomial + acceleration is applied. + The only implemented + algorithm is the power + method; see also the + two following options. +






POLY_RHO_ESTIMATE_ITERATIONS +

integer +

Any integer +

number 1 +

20 +

Number of iterations + for the spectral radius + estimate. +






POLY_RHO_BA +

real(kind_parameter) +

Any real +

number (0,1] +

1 +

Sets an estimate of + the spectral radius of + the base smoother to + which the polynomial + accelerator is applied. +






+
Table 9: Parameters defining the smoother or the details of the one-level preconditioner +(continued).
+ + +

@@ -2574,7 +2319,7 @@ class="content">Parameters defining the smoother or the details of the one-level -