diff --git a/docs/html/WARNINGS b/docs/html/WARNINGS new file mode 100644 index 00000000..5b6c6c23 --- /dev/null +++ b/docs/html/WARNINGS @@ -0,0 +1,12 @@ +No implementation found for style `pstricks' +No implementation found for style `fancybox' +No implementation found for style `ifthen' +No implementation found for style `listings' + +redefining command \thepage + +Substitution of arg to newlabelxx delayed. + +? brace missing for \oldcontentsline + +? brace missing for \textrm diff --git a/docs/html/footnode.html b/docs/html/footnode.html index 9b6f0db5..17cb8332 100644 --- a/docs/html/footnode.html +++ b/docs/html/footnode.html @@ -14,7 +14,7 @@ - + @@ -137,8 +137,8 @@ sample scatter/gather routines. . -
... follows4
+
... follows4
The string is case-insensitive
.
@@ -173,12 +173,12 @@ sample scatter/gather routines.
 .
 
-
... method5
+
... method5
Note: the implementation is for $FCG(1)$.
.
diff --git a/docs/html/images.aux b/docs/html/images.aux
new file mode 100644
index 00000000..07599084
--- /dev/null
+++ b/docs/html/images.aux
@@ -0,0 +1,18 @@
+\relax 
+\providecommand\hyper@newdestlabel[2]{}
+\providecommand\HyperFirstAtBeginDocument{\AtBeginDocument}
+\HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined
+\global\let\oldcontentsline\contentsline
+\gdef\contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}}
+\global\let\oldnewlabel\newlabel
+\gdef\newlabel#1#2{\newlabelxx{#1}#2}
+\gdef\newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}}
+\AtEndDocument{\ifx\hyper@anchor\@undefined
+\let\contentsline\oldcontentsline
+\let\newlabel\oldnewlabel
+\fi}
+\fi}
+\global\let\hyper@last\relax 
+\gdef\HyperFirstAtBeginDocument#1{#1}
+\providecommand*\HyPL@Entry[1]{}
+\HyPL@Entry{0<>}
diff --git a/docs/html/images.log b/docs/html/images.log
new file mode 100644
index 00000000..fc4875b5
--- /dev/null
+++ b/docs/html/images.log
@@ -0,0 +1,507 @@
+This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017/Debian) (preloaded format=latex 2019.9.9)  21 NOV 2019 13:53
+entering extended mode
+ restricted \write18 enabled.
+ %&-line parsing enabled.
+**./images.tex
+(./images.tex
+LaTeX2e <2017-04-15>
+Babel <3.18> and hyphenation patterns for 10 language(s) loaded.
+
+(/usr/share/texlive/texmf-dist/tex/latex/base/article.cls
+Document Class: article 2014/09/29 v1.4h Standard LaTeX document class
+(/usr/share/texlive/texmf-dist/tex/latex/base/size10.clo
+File: size10.clo 2014/09/29 v1.4h Standard LaTeX file (size option)
+)
+\c@part=\count79
+\c@section=\count80
+\c@subsection=\count81
+\c@subsubsection=\count82
+\c@paragraph=\count83
+\c@subparagraph=\count84
+\c@figure=\count85
+\c@table=\count86
+\abovecaptionskip=\skip41
+\belowcaptionskip=\skip42
+\bibindent=\dimen102
+) (/usr/share/texlive/texmf-dist/tex/latex/pstricks/pstricks.sty
+Package: pstricks 2018/01/06 v0.67 LaTeX wrapper for `PSTricks' (RN,HV)
+(/usr/share/texlive/texmf-dist/tex/generic/iftex/iftex.sty
+Package: iftex 2013/04/04 v0.2 Provides if(tex) conditional for PDFTeX, XeTeX, 
+and LuaTeX
+) (/usr/share/texlive/texmf-dist/tex/latex/tools/shellesc.sty
+Package: shellesc 2016/06/07 v0.02a unified shell escape interface for LaTeX
+Package shellesc Info: Restricted shell escape enabled on input line 69.
+) (/usr/share/texlive/texmf-dist/tex/latex/xcolor/xcolor.sty
+Package: xcolor 2016/05/11 v2.12 LaTeX color extensions (UK)
+(/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/color.cfg
+File: color.cfg 2016/01/02 v1.6 sample color configuration
+)
+Package xcolor Info: Driver file: dvips.def on input line 225.
+(/usr/share/texlive/texmf-dist/tex/latex/graphics-def/dvips.def
+File: dvips.def 2017/06/20 v3.1d Graphics/color driver for dvips
+)
+Package xcolor Info: Model `cmy' substituted by `cmy0' on input line 1348.
+Package xcolor Info: Model `RGB' extended on input line 1364.
+Package xcolor Info: Model `HTML' substituted by `rgb' on input line 1366.
+Package xcolor Info: Model `Hsb' substituted by `hsb' on input line 1367.
+Package xcolor Info: Model `tHsb' substituted by `hsb' on input line 1368.
+Package xcolor Info: Model `HSB' substituted by `hsb' on input line 1369.
+Package xcolor Info: Model `Gray' substituted by `gray' on input line 1370.
+Package xcolor Info: Model `wave' substituted by `hsb' on input line 1371.
+) (/usr/share/texlive/texmf-dist/tex/generic/xkeyval/pst-xkey.tex
+File: pst-xkey.tex 2005/11/25 v1.6 PSTricks specialization of xkeyval (HA)
+(/usr/share/texlive/texmf-dist/tex/latex/xkeyval/xkeyval.sty
+Package: xkeyval 2014/12/03 v2.7a package option processing (HA)
+(/usr/share/texlive/texmf-dist/tex/generic/xkeyval/xkeyval.tex (/usr/share/texl
+ive/texmf-dist/tex/generic/xkeyval/xkvutils.tex
+\XKV@toks=\toks14
+\XKV@tempa@toks=\toks15
+(/usr/share/texlive/texmf-dist/tex/generic/xkeyval/keyval.tex))
+\XKV@depth=\count87
+File: xkeyval.tex 2014/12/03 v2.7a key=value parser (HA)
+))) (/usr/share/texlive/texmf-dist/tex/generic/pstricks/pstricks.tex (/usr/shar
+e/texlive/texmf-dist/tex/generic/pstricks/pst-fp.tex `pst-fp' v0.05, 2010/01/17
+ (hv)
+\pstFP@xs=\count88
+\pstFP@xia=\count89
+\pstFP@xib=\count90
+\pstFP@xfa=\count91
+\pstFP@xfb=\count92
+\pstFP@rega=\count93
+\pstFP@regb=\count94
+\pstFP@regs=\count95
+\pstFP@times=\count96
+) (/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-common.tex
+\pgfutil@everybye=\toks16
+\pgfutil@tempdima=\dimen103
+\pgfutil@tempdimb=\dimen104
+
+(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-common-lists.t
+ex)) (/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex
+\pgfkeys@pathtoks=\toks17
+\pgfkeys@temptoks=\toks18
+
+(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeysfiltered.code.t
+ex
+\pgfkeys@tmptoks=\toks19
+)) (/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgffor.code.tex (/u
+sr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex (/usr/share/t
+exlive/texmf-dist/tex/generic/pgf/math/pgfmathcalc.code.tex (/usr/share/texlive
+/texmf-dist/tex/generic/pgf/math/pgfmathutil.code.tex
+\pgf@x=\dimen105
+\pgf@xa=\dimen106
+\pgf@xb=\dimen107
+\pgf@xc=\dimen108
+\pgf@y=\dimen109
+\pgf@ya=\dimen110
+\pgf@yb=\dimen111
+\pgf@yc=\dimen112
+\c@pgf@counta=\count97
+\c@pgf@countb=\count98
+\c@pgf@countc=\count99
+\c@pgf@countd=\count100
+\pgfutil@tempcnta=\count101
+\pgfutil@tempcntb=\count102
+) (/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathparser.code.tex
+\pgfmath@dimen=\dimen113
+\pgfmath@count=\count103
+\pgfmath@box=\box26
+\pgfmath@toks=\toks20
+\pgfmath@stack@operand=\toks21
+\pgfmath@stack@operation=\toks22
+) (/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.code.tex
+
+(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.basic.code
+.tex)
+(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.trigonomet
+ric.code.tex)
+(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.random.cod
+e.tex)
+(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.comparison
+.code.tex)
+(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.base.code.
+tex)
+(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.round.code
+.tex)
+(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.misc.code.
+tex)
+(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.integerari
+thmetics.code.tex))) (/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmat
+hfloat.code.tex
+\c@pgfmathroundto@lastzeros=\count104
+))
+\pgffor@iter=\dimen114
+\pgffor@skip=\dimen115
+\pgffor@stack=\toks23
+\pgffor@toks=\toks24
+)
+\psLoopIndex=\count105
+`PSTricks' v2.82  <2018/01/06> (tvz,hv)
+\pst@dima=\dimen116
+\pst@dimb=\dimen117
+\pst@dimc=\dimen118
+\pst@dimd=\dimen119
+\pst@dimg=\dimen120
+\pst@dimh=\dimen121
+\pst@dimm=\dimen122
+\pst@dimn=\dimen123
+\pst@dimo=\dimen124
+\pst@dimp=\dimen125
+\pst@hbox=\box27
+\pst@ibox=\box28
+\pst@boxg=\box29
+\pst@cnta=\count106
+\pst@cntb=\count107
+\pst@cntc=\count108
+\pst@cntd=\count109
+\pst@cntg=\count110
+\pst@cnth=\count111
+\pst@cntm=\count112
+\pst@cntn=\count113
+\pst@cnto=\count114
+\pst@cntp=\count115
+\@zero=\count116
+\pst@toks=\toks25
+(/usr/share/texlive/texmf-dist/tex/generic/pstricks/pstricks.con)
+\psunit=\dimen126
+\psxunit=\dimen127
+\psyunit=\dimen128
+\pst@C@@rType=\count117
+\pslinewidth=\dimen129
+\psk@startLW=\dimen130
+\psk@endLW=\dimen131
+\pst@customdefs=\toks26
+\pslinearc=\dimen132
+\pst@symbolStep=\dimen133
+\pst@symbolWidth=\dimen134
+\pst@symbolLinewidth=\dimen135
+\everypsbox=\toks27
+\psframesep=\dimen136
+\pslabelsep=\dimen137
+\sh@wgridXunit=\dimen138
+\sh@wgridYunit=\dimen139
+\pst@shift=\dimen140
+)
+File: pstricks.tex 2018/01/06 v2.82 `PSTricks' (tvz,hv)
+(/usr/share/texlive/texmf-dist/tex/generic/pstricks/pst-fp.tex)
+File: pst-fp.tex 2018/01/06 v2.82 `PST-fp' (hv)
+) (/usr/share/texlive/texmf-dist/tex/latex/fancybox/fancybox.sty
+Package: fancybox 2010/05/15 1.4
+Style option: `fancybox' v1.4 <2010/05/15> (tvz)
+\@fancybox=\box30
+\shadowsize=\dimen141
+\@Sbox=\box31
+\do@VerbBox=\toks28
+\the@fancyput=\toks29
+\this@fancyput=\toks30
+\EndVerbatimTokens=\toks31
+\Verbatim@Outfile=\write3
+\Verbatim@Infile=\read1
+) (/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amsfonts.sty
+Package: amsfonts 2013/01/14 v3.01 Basic AMSFonts support
+\@emptytoks=\toks32
+\symAMSa=\mathgroup4
+\symAMSb=\mathgroup5
+LaTeX Font Info:    Overwriting math alphabet `\mathfrak' in version `bold'
+(Font)                  U/euf/m/n --> U/euf/b/n on input line 106.
+) (/usr/share/texlive/texmf-dist/tex/latex/hyperref/hyperref.sty
+Package: hyperref 2018/02/06 v6.86b Hypertext links for LaTeX
+(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/hobsub-hyperref.sty
+Package: hobsub-hyperref 2016/05/16 v1.14 Bundle oberdiek, subset hyperref (HO)
+
+(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/hobsub-generic.sty
+Package: hobsub-generic 2016/05/16 v1.14 Bundle oberdiek, subset generic (HO)
+Package: hobsub 2016/05/16 v1.14 Construct package bundles (HO)
+Package: infwarerr 2016/05/16 v1.4 Providing info/warning/error messages (HO)
+Package: ltxcmds 2016/05/16 v1.23 LaTeX kernel commands for general use (HO)
+Package: ifluatex 2016/05/16 v1.4 Provides the ifluatex switch (HO)
+Package ifluatex Info: LuaTeX not detected.
+Package: ifvtex 2016/05/16 v1.6 Detect VTeX and its facilities (HO)
+Package ifvtex Info: VTeX not detected.
+Package: intcalc 2016/05/16 v1.2 Expandable calculations with integers (HO)
+Package: ifpdf 2017/03/15 v3.2 Provides the ifpdf switch
+Package: etexcmds 2016/05/16 v1.6 Avoid name clashes with e-TeX commands (HO)
+Package etexcmds Info: Could not find \expanded.
+(etexcmds)             That can mean that you are not using pdfTeX 1.50 or
+(etexcmds)             that some package has redefined \expanded.
+(etexcmds)             In the latter case, load this package earlier.
+Package: kvsetkeys 2016/05/16 v1.17 Key value parser (HO)
+Package: kvdefinekeys 2016/05/16 v1.4 Define keys (HO)
+Package: pdftexcmds 2018/01/21 v0.26 Utility functions of pdfTeX for LuaTeX (HO
+)
+Package pdftexcmds Info: LuaTeX not detected.
+Package pdftexcmds Info: \pdf@primitive is available.
+Package pdftexcmds Info: \pdf@ifprimitive is available.
+Package pdftexcmds Info: \pdfdraftmode is ignored in DVI mode.
+Package: pdfescape 2016/05/16 v1.14 Implements pdfTeX's escape features (HO)
+Package: bigintcalc 2016/05/16 v1.4 Expandable calculations on big integers (HO
+)
+Package: bitset 2016/05/16 v1.2 Handle bit-vector datatype (HO)
+Package: uniquecounter 2016/05/16 v1.3 Provide unlimited unique counter (HO)
+)
+Package hobsub Info: Skipping package `hobsub' (already loaded).
+Package: letltxmacro 2016/05/16 v1.5 Let assignment for LaTeX macros (HO)
+Package: hopatch 2016/05/16 v1.3 Wrapper for package hooks (HO)
+Package: xcolor-patch 2016/05/16 xcolor patch
+Package: atveryend 2016/05/16 v1.9 Hooks at the very end of document (HO)
+Package atveryend Info: \enddocument detected (standard20110627).
+Package: atbegshi 2016/06/09 v1.18 At begin shipout hook (HO)
+Package: refcount 2016/05/16 v3.5 Data extraction from label references (HO)
+Package: hycolor 2016/05/16 v1.8 Color options for hyperref/bookmark (HO)
+) (/usr/share/texlive/texmf-dist/tex/generic/ifxetex/ifxetex.sty
+Package: ifxetex 2010/09/12 v0.6 Provides ifxetex conditional
+) (/usr/share/texlive/texmf-dist/tex/latex/oberdiek/auxhook.sty
+Package: auxhook 2016/05/16 v1.4 Hooks for auxiliary files (HO)
+) (/usr/share/texlive/texmf-dist/tex/latex/oberdiek/kvoptions.sty
+Package: kvoptions 2016/05/16 v3.12 Key value format for package options (HO)
+)
+\@linkdim=\dimen142
+\Hy@linkcounter=\count118
+\Hy@pagecounter=\count119
+(/usr/share/texlive/texmf-dist/tex/latex/hyperref/pd1enc.def
+File: pd1enc.def 2018/02/06 v6.86b Hyperref: PDFDocEncoding definition (HO)
+)
+\Hy@SavedSpaceFactor=\count120
+(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/hyperref.cfg
+File: hyperref.cfg 2002/06/06 v1.2 hyperref configuration of TeXLive
+)
+Package hyperref Info: Option `bookmarks' set `true' on input line 4383.
+Package hyperref Info: Option `bookmarksnumbered' set `true' on input line 4383
+.
+Package hyperref Info: Option `bookmarksopen' set `false' on input line 4383.
+Package hyperref Info: Option `plainpages' set `false' on input line 4383.
+Package hyperref Info: Option `pdfpagelabels' set `true' on input line 4383.
+Package hyperref Info: Option `colorlinks' set `true' on input line 4383.
+Package hyperref Info: Hyper figures OFF on input line 4509.
+Package hyperref Info: Link nesting OFF on input line 4514.
+Package hyperref Info: Hyper index ON on input line 4517.
+Package hyperref Info: Plain pages OFF on input line 4524.
+Package hyperref Info: Backreferencing OFF on input line 4529.
+Package hyperref Info: Implicit mode ON; LaTeX internals redefined.
+Package hyperref Info: Bookmarks ON on input line 4762.
+\c@Hy@tempcnt=\count121
+(/usr/share/texlive/texmf-dist/tex/latex/url/url.sty
+\Urlmuskip=\muskip10
+Package: url 2013/09/16  ver 3.4  Verb mode for urls, etc.
+)
+LaTeX Info: Redefining \url on input line 5115.
+\XeTeXLinkMargin=\dimen143
+\Fld@menulength=\count122
+\Field@Width=\dimen144
+\Fld@charsize=\dimen145
+Package hyperref Info: Hyper figures OFF on input line 6369.
+Package hyperref Info: Link nesting OFF on input line 6374.
+Package hyperref Info: Hyper index ON on input line 6377.
+Package hyperref Info: backreferencing OFF on input line 6384.
+Package hyperref Info: Link coloring ON on input line 6387.
+Package hyperref Info: Link coloring with OCG OFF on input line 6394.
+Package hyperref Info: PDF/A mode OFF on input line 6399.
+LaTeX Info: Redefining \ref on input line 6439.
+LaTeX Info: Redefining \pageref on input line 6443.
+\Hy@abspage=\count123
+\c@Item=\count124
+\c@Hfootnote=\count125
+)
+Package hyperref Info: Driver (default): hdvips.
+(/usr/share/texlive/texmf-dist/tex/latex/hyperref/hdvips.def
+File: hdvips.def 2018/02/06 v6.86b Hyperref driver for dvips
+(/usr/share/texlive/texmf-dist/tex/latex/hyperref/pdfmark.def
+File: pdfmark.def 2018/02/06 v6.86b Hyperref definitions for pdfmark specials
+\pdf@docset=\toks33
+\pdf@box=\box32
+\pdf@toks=\toks34
+\pdf@defaulttoks=\toks35
+\HyField@AnnotCount=\count126
+\Fld@listcount=\count127
+\c@bookmark@seq@number=\count128
+(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/rerunfilecheck.sty
+Package: rerunfilecheck 2016/05/16 v1.8 Rerun checks for auxiliary files (HO)
+Package uniquecounter Info: New unique counter `rerunfilecheck' on input line 2
+82.
+)
+\Hy@SectionHShift=\skip43
+)) (/usr/share/texlive/texmf-dist/tex/latex/base/ifthen.sty
+Package: ifthen 2014/09/29 v1.1c Standard LaTeX ifthen package (DPC)
+) (/usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty
+Package: graphicx 2017/06/01 v1.1a Enhanced LaTeX Graphics (DPC,SPQR)
+(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty
+Package: graphics 2017/06/25 v1.2c Standard LaTeX Graphics (DPC,SPQR)
+(/usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty
+Package: trig 2016/01/03 v1.10 sin cos tan (DPC)
+) (/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/graphics.cfg
+File: graphics.cfg 2016/06/04 v1.11 sample graphics configuration
+)
+Package graphics Info: Driver file: dvips.def on input line 99.
+)
+\Gin@req@height=\dimen146
+\Gin@req@width=\dimen147
+)
+\c@theorem=\count129
+\c@corollary=\count130
+(/usr/share/texlive/texmf-dist/tex/latex/listings/listings.sty
+\lst@mode=\count131
+\lst@gtempboxa=\box33
+\lst@token=\toks36
+\lst@length=\count132
+\lst@currlwidth=\dimen148
+\lst@column=\count133
+\lst@pos=\count134
+\lst@lostspace=\dimen149
+\lst@width=\dimen150
+\lst@newlines=\count135
+\lst@lineno=\count136
+\lst@maxwidth=\dimen151
+(/usr/share/texlive/texmf-dist/tex/latex/listings/lstmisc.sty
+File: lstmisc.sty 2015/06/04 1.6 (Carsten Heinz)
+\c@lstnumber=\count137
+\lst@skipnumbers=\count138
+\lst@framebox=\box34
+) (/usr/share/texlive/texmf-dist/tex/latex/listings/listings.cfg
+File: listings.cfg 2015/06/04 1.6 listings configuration
+))
+Package: listings 2015/06/04 1.6 (Carsten Heinz)
+\c@subroutine=\count139
+\c@example=\count140
+(/usr/share/texlive/texmf-dist/tex/latex/base/inputenc.sty
+Package: inputenc 2015/03/17 v1.2c Input encoding file
+\inpenc@prehook=\toks37
+\inpenc@posthook=\toks38
+(/usr/share/texlive/texmf-dist/tex/latex/base/latin1.def
+File: latin1.def 2015/03/17 v1.2c Input encoding file
+))
+\sizebox=\box35
+\lthtmlwrite=\write4
+(./images.aux (/home/cirdan/VersioniPSBLAS/8Bytes/psblas3/docs/src/tmp/intro.au
+x) (/home/cirdan/VersioniPSBLAS/8Bytes/psblas3/docs/src/tmp/datastruct.aux) (/h
+ome/cirdan/VersioniPSBLAS/8Bytes/psblas3/docs/src/tmp/psbrout.aux) (/home/cirda
+n/VersioniPSBLAS/8Bytes/psblas3/docs/src/tmp/commrout.aux) (/home/cirdan/Versio
+niPSBLAS/8Bytes/psblas3/docs/src/tmp/toolsrout.aux) (/home/cirdan/VersioniPSBLA
+S/8Bytes/psblas3/docs/src/tmp/penv.aux) (/home/cirdan/VersioniPSBLAS/8Bytes/psb
+las3/docs/src/tmp/error.aux) (/home/cirdan/VersioniPSBLAS/8Bytes/psblas3/docs/s
+rc/tmp/util.aux) (/home/cirdan/VersioniPSBLAS/8Bytes/psblas3/docs/src/tmp/precs
+.aux) (/home/cirdan/VersioniPSBLAS/8Bytes/psblas3/docs/src/tmp/methods.aux))
+\openout1 = `images.aux'.
+
+LaTeX Font Info:    Checking defaults for OML/cmm/m/it on input line 149.
+LaTeX Font Info:    ... okay on input line 149.
+LaTeX Font Info:    Checking defaults for T1/cmr/m/n on input line 149.
+LaTeX Font Info:    ... okay on input line 149.
+LaTeX Font Info:    Checking defaults for OT1/cmr/m/n on input line 149.
+LaTeX Font Info:    ... okay on input line 149.
+LaTeX Font Info:    Checking defaults for OMS/cmsy/m/n on input line 149.
+LaTeX Font Info:    ... okay on input line 149.
+LaTeX Font Info:    Checking defaults for OMX/cmex/m/n on input line 149.
+LaTeX Font Info:    ... okay on input line 149.
+LaTeX Font Info:    Checking defaults for U/cmr/m/n on input line 149.
+LaTeX Font Info:    ... okay on input line 149.
+LaTeX Font Info:    Checking defaults for PD1/pdf/m/n on input line 149.
+LaTeX Font Info:    ... okay on input line 149.
+\AtBeginShipoutBox=\box36
+Package hyperref Info: Link coloring ON on input line 149.
+(/usr/share/texlive/texmf-dist/tex/latex/hyperref/nameref.sty
+Package: nameref 2016/05/21 v2.44 Cross-referencing by name of section
+(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/gettitlestring.sty
+Package: gettitlestring 2016/05/16 v1.5 Cleanup title references (HO)
+)
+\c@section@level=\count141
+)
+LaTeX Info: Redefining \ref on input line 149.
+LaTeX Info: Redefining \pageref on input line 149.
+LaTeX Info: Redefining \nameref on input line 149.
+(./images.out) (./images.out)
+\@outlinefile=\write5
+\openout5 = `images.out'.
+
+\c@lstlisting=\count142
+
+latex2htmlLength hsize=349.0pt
+
+latex2htmlLength vsize=682.0pt
+
+latex2htmlLength hoffset=0.0pt
+
+latex2htmlLength voffset=0.0pt
+
+latex2htmlLength topmargin=0.0pt
+
+latex2htmlLength topskip=0.00003pt
+
+latex2htmlLength headheight=0.0pt
+
+latex2htmlLength headsep=0.0pt
+
+latex2htmlLength parskip=0.0pt plus 1.0pt
+
+latex2htmlLength oddsidemargin=28.0pt
+
+latex2htmlLength evensidemargin=79.0pt
+
+LaTeX Font Info:    Try loading font information for OMS+cmr on input line 225.
+
+(/usr/share/texlive/texmf-dist/tex/latex/base/omscmr.fd
+File: omscmr.fd 2014/09/29 v2.5h Standard LaTeX font definitions
+)
+LaTeX Font Info:    Font shape `OMS/cmr/m/n' in size <9> not available
+(Font)              Font shape `OMS/cmsy/m/n' tried instead on input line 225.
+LaTeX Font Info:    Try loading font information for U+msa on input line 228.
+(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd
+File: umsa.fd 2013/01/14 v3.01 AMS symbols A
+)
+LaTeX Font Info:    Try loading font information for U+msb on input line 228.
+(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd
+File: umsb.fd 2013/01/14 v3.01 AMS symbols B
+)
+
+! LaTeX Error: Misplaced \endSbox! Should be in LR mode.
+
+See the LaTeX manual or LaTeX Companion for explanation.
+Type  H   for immediate help.
+ ...                                              
+                                                  
+l.229   \end{Sbox}
+                  %
+You're in trouble here.  Try typing    to proceed.
+If that doesn't work, type  X   to quit.
+
+l2hSize :Sbox7771:0.0pt::0.0pt::0.0pt.
+[1
+
+
+
+]
+
+! LaTeX Error: Misplaced \endSbox! Should be in LR mode.
+
+See the LaTeX manual or LaTeX Companion for explanation.
+Type  H   for immediate help.
+ ...                                              
+                                                  
+l.260   \end{Sbox}
+                  %
+You're in trouble here.  Try typing    to proceed.
+If that doesn't work, type  X   to quit.
+
+l2hSize :Sbox7788:0.0pt::0.0pt::0.0pt.
+[2
+
+
+]
+Package atveryend Info: Empty hook `BeforeClearDocument' on input line 273.
+Package atveryend Info: Empty hook `AfterLastShipout' on input line 273.
+(./images.aux)
+Package atveryend Info: Empty hook `AtVeryEndDocument' on input line 273.
+Package atveryend Info: Executing hook `AtEndAfterFileList' on input line 273.
+Package rerunfilecheck Info: File `images.out' has not changed.
+(rerunfilecheck)             Checksum: D41D8CD98F00B204E9800998ECF8427E;0.
+Package atveryend Info: Empty hook `AtVeryVeryEnd' on input line 273.
+ ) 
+Here is how much of TeX's memory you used:
+ 13704 strings out of 494799
+ 227394 string characters out of 6177696
+ 322233 words of memory out of 5000000
+ 16868 multiletter control sequences out of 15000+600000
+ 6061 words of font info for 25 fonts, out of 8000000 for 9000
+ 81 hyphenation exceptions out of 8191
+ 36i,6n,40p,409b,1382s stack positions out of 5000i,500n,10000p,200000b,80000s
+
+Output written on images.dvi (2 pages, 3212 bytes).
diff --git a/docs/html/images.out b/docs/html/images.out
new file mode 100644
index 00000000..e69de29b
diff --git a/docs/html/images.pl b/docs/html/images.pl
new file mode 100644
index 00000000..2fcccff4
--- /dev/null
+++ b/docs/html/images.pl
@@ -0,0 +1,1182 @@
+# LaTeX2HTML 2018 (Released Feb 1, 2018)
+# Associate images original text with physical files.
+
+
+$key = q/(0dotsnp-1);MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$(0\dots np-1)$|; 
+
+$key = q/(1dotsmg);MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$(1\dots mg)$|; 
+
+$key = q/(1dotsnp);MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$(1\dots np)$|; 
+
+$key = q/(i+irw-1),ja(j),val(j);MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$(i+irw-1),ja(j),val(j)$|; 
+
+$key = q/-1;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$-1$|; 
+
+$key = q/-1<=root<=np-1;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$-1<= root <= np-1$|; 
+
+$key = q/-1leiamlenp-1;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$-1 \le iam \le np-1$|; 
+
+$key = q/-1lerootlenp-1;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$-1\le root\le np-1$|; 
+
+$key = q/0,1;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$0,1$|; 
+
+$key = q/0;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$0$|; 
+
+$key = q/0<=dst<=np-1;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$0<= dst <= np-1$|; 
+
+$key = q/0<=m<=size(dat,1);MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$0<= m <= size(dat,1)$|; 
+
+$key = q/0<=root<=np-1;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$0<= root <= np-1$|; 
+
+$key = q/0<=src<=np-1;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$0<= src <= np-1$|; 
+
+$key = q/0leiamlenp-1;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$0 \le iam \le np-1$|; 
+
+$key = q/0leidlenp-1;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$0 \le id \le np-1$|; 
+
+$key = q/0lepv(i)|; 
+
+$key = q/1;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$1$|; 
+
+$key = q/1dotsn;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$1\dots n$|; 
+
+$key = q/1dotsn_{hbox{row}_i};MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$1\dots n_{\hbox{row}_i}$|; 
+
+$key = q/=0;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$=0$|; 
+
+$key = q/>0;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$>0$|; 
+
+$key = q/A;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$A$|; 
+
+$key = q/A^T;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$A^T$|; 
+
+$key = q/CG;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$CG$|; 
+
+$key = q/D;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$D$|; 
+
+$key = q/FCG(1);MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$FCG(1)$|; 
+
+$key = q/I;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$I$|; 
+
+$key = q/ILU(0);MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$ILU(0)$|; 
+
+$key = q/IX;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$IX$|; 
+
+$key = q/N_I=nl;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$N_I=nl$|; 
+
+$key = q/O(n^2);MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$O(n^2)$|; 
+
+$key = q/O(nlogn);MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$O(n \log n)$|; 
+
+$key = q/P^T;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$P^T$|; 
+
+$key = q/P^{T};MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$P^{T}$|; 
+
+$key = q/P_a;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$P_a$|; 
+
+$key = q/P_aP^T;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$P_aP^T$|; 
+
+$key = q/Q;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$Q$|; 
+
+$key = q/T;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$T$|; 
+
+$key = q/X;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$X$|; 
+
+$key = q/a;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$a$|; 
+
+$key = q/a_{ij}ne0;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$a_{ij} \ne0$|; 
+
+$key = q/alpha;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$\alpha$|; 
+
+$key = q/amax;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$amax$|; 
+
+$key = q/asum;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$asum$|; 
+
+$key = q/beta;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$\beta$|; 
+
+$key = q/calB;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$\cal B$|; 
+
+$key = q/calH;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$\cal H$|; 
+
+$key = q/calI;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$\cal I$|; 
+
+$key = q/collect;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$collect$|; 
+
+$key = q/dat;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$dat$|; 
+
+$key = q/dat_i;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$dat_i$|; 
+
+$key = q/diag(1)=1(noscaling);MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$diag(1) = 1 (no scaling)$|; 
+
+$key = q/dot;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$dot$|; 
+
+$key = q/dst;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$dst$|; 
+
+$key = q/fbox{TheSbox};MSF=1.6;AAT/;
+$cached_env_img{$key} = q|\fbox{\TheSbox}|; 
+
+$key = q/flag=psb_sort_keep_idx_;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$flag = psb\_sort\_keep\_idx\_$|; 
+
+$key = q/flag=psb_sort_ovw_idx_;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$flag = psb\_sort\_ovw\_idx\_$|; 
+
+$key = q/glob_x;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$glob\_x$|; 
+
+$key = q/glob_x_{1:m,1:n};MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$glob\_x_{1:m,1:n}$|; 
+
+$key = q/i+irw-1;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$i+irw-1$|; 
+
+$key = q/i;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$i$|; 
+
+$key = q/i=1,dots,nz;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$i=1,\dots,nz$|; 
+
+$key = q/i=1,nr;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$i=1,nr$|; 
+
+$key = q/ia(i),ja(i),val(i);MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$ia(i),ja(i),val(i)$|; 
+
+$key = q/ia(i),ja(i);MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$ia(i),ja(i)$|; 
+
+$key = q/ia(i);MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$ia(i)$|; 
+
+$key = q/iam=-1;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$iam=-1$|; 
+
+$key = q/id;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$id$|; 
+
+$key = q/iin{1dotsmg};MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$i\in \{1\dots mg\}$|; 
+
+$key = q/includegraphics[scale=0.45]{figuresslashtry8x8.eps};FSF=1.6;AAT/;
+$cached_env_img{$key} = q|\includegraphics[scale=0.45]{figures/try8x8.eps}|; 
+
+$key = q/includegraphics[scale=0.45]{figuresslashtry8x8};FSF=1.6;AAT/;
+$cached_env_img{$key} = q|\includegraphics[scale=0.45]{figures/try8x8}|; 
+
+$key = q/includegraphics[scale=0.65]{figuresslashpoints.eps};FSF=1.6;AAT/;
+$cached_env_img{$key} = q|\includegraphics[scale=0.65]{figures/points.eps}|; 
+
+$key = q/includegraphics[scale=0.65]{figuresslashpsblas.eps};FSF=1.6;AAT/;
+$cached_env_img{$key} = q|\includegraphics[scale=0.65]{figures/psblas.eps}|; 
+
+$key = q/includegraphics[scale=0.65]{figuresslashpsblas};FSF=1.6;AAT/;
+$cached_env_img{$key} = q|\includegraphics[scale=0.65]{figures/psblas}|; 
+
+$key = q/includegraphics[scale=0.65]{figuresslashtry8x8_ov.eps};FSF=1.6;AAT/;
+$cached_env_img{$key} = q|\includegraphics[scale=0.65]{figures/try8x8_ov.eps}|; 
+
+$key = q/includegraphics[scale=0.65]{figuresslashtry8x8_ov};FSF=1.6;AAT/;
+$cached_env_img{$key} = q|\includegraphics[scale=0.65]{figures/try8x8_ov}|; 
+
+$key = q/irst>0;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$irst>0$|; 
+
+$key = q/irw(i);MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$irw(i)$|; 
+
+$key = q/itmax=1000;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$itmax = 1000$|; 
+
+$key = q/itmaxge1;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$itmax \ge 1$|; 
+
+$key = q/itrace;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$itrace$|; 
+
+$key = q/itrace=-1;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$itrace = -1$|; 
+
+$key = q/ix(1:n);MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$ix(1:n)$|; 
+
+$key = q/ix(:);MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$ix(:)$|; 
+
+$key = q/ix(i);MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$ix(i)$|; 
+
+$key = q/ix(i)leftarrowi;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$ix(i) \leftarrow
+i$|; 
+
+$key = q/j;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$j$|; 
+
+$key = q/j=irp(i),dots,irp(i+1)-1;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$j=irp(i),\dots,irp(i+1)-1$|; 
+
+$key = q/ja(i);MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$ja(i)$|; 
+
+$key = q/lidx(1:nl);MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$lidx(1:nl)$|; 
+
+$key = q/loc_x_i;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$loc\_x_i$|; 
+
+$key = q/m;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$m$|; 
+
+$key = q/mg;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$mg$|; 
+
+$key = q/n;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$n$|; 
+
+$key = q/n_{hbox{row}_i}+1dotsn_{hbox{col}_i};MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$n_{\hbox{row}_i}+1\dots n_{\hbox{col}_i}$|; 
+
+$key = q/nlge0;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$nl\ge 0$|; 
+
+$key = q/nnz;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$nnz$|; 
+
+$key = q/np-1;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$np-1$|; 
+
+$key = q/np;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$np$|; 
+
+$key = q/nr+1;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$nr+1$|; 
+
+$key = q/nrm2;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$nrm2$|; 
+
+$key = q/nv>1;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$nv>1$|; 
+
+$key = q/nz;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$nz$|; 
+
+$key = q/nzin+nz;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$nzin+nz$|; 
+
+$key = q/ptype;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$ptype$|; 
+
+$key = q/r_i=b-Ax_i;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$r_i=b-Ax_i$|; 
+
+$key = q/res;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$res$|; 
+
+$key = q/root=-1;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$root=-1$|; 
+
+$key = q/rotatebox{-90}{includegraphics[scale=0.65]{figuresslashpoints}};FSF=1.6;AAT/;
+$cached_env_img{$key} = q|\rotatebox{-90}{\includegraphics[scale=0.65]{figures/points}}|; 
+
+$key = q/row;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$row$|; 
+
+$key = q/scatter;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$scatter$|; 
+
+$key = q/size(dat,1);MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$size(dat,1)$|; 
+
+$key = q/slash;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$/$|; 
+
+$key = q/src;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$src$|; 
+
+$key = q/trans=N;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$trans = N$|; 
+
+$key = q/unitd=U;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$unitd = U$|; 
+
+$key = q/update_type=psb_avg_;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$update\_type = psb\_avg\_ $|; 
+
+$key = q/val;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$val$|; 
+
+$key = q/vg(i);MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$vg(i)$|; 
+
+$key = q/vg;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$vg$|; 
+
+$key = q/vl(1:nl);MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$vl(1:nl)$|; 
+
+$key = q/vl;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$vl$|; 
+
+$key = q/x(i);MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$x(i)$|; 
+
+$key = q/x(i)=0;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$x(i) = 0$|; 
+
+$key = q/x;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$x$|; 
+
+$key = q/x_i,y;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$x_i, y$|; 
+
+$key = q/x_i;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$x_i$|; 
+
+$key = q/x_{:,:};MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$x_{:, :}$|; 
+
+$key = q/y(i)=0;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$y(i) = 0$|; 
+
+$key = q/y;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$y$|; 
+
+$key = q/y_{:,:};MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$y_{:, :}$|; 
+
+$key = q/{displaymath}14{displaymath};MSF=1.6;AAT/;
+$cached_env_img{$key} = q|\begin{displaymath}\verb\vert psb_version_string_\vert\end{displaymath}|; 
+
+$key = q/{displaymath}amaxleftarrowmax_i{(|re(x_i)|+|im(x_i)|)}{displaymath};MSF=1.6;AAT/;
+$cached_env_img{$key} = q|\begin{displaymath}amax \leftarrow \max_i {(\vert re(x_i)\vert + \vert im(x_i)\vert)}\end{displaymath}|; 
+
+$key = q/{displaymath}amaxleftarrowmax_i|x_i|{displaymath};MSF=1.6;AAT/;
+$cached_env_img{$key} = q|\begin{displaymath}amax \leftarrow \max_i \vert x_i\vert\end{displaymath}|; 
+
+$key = q/{displaymath}asumleftarrow|re(x)|_1+|im(x)|_1{displaymath};MSF=1.6;AAT/;
+$cached_env_img{$key} = q|\begin{displaymath}asum \leftarrow \Vert re(x)\Vert _1 + \Vert im(x)\Vert _1\end{displaymath}|; 
+
+$key = q/{displaymath}asumleftarrow|x_i|{displaymath};MSF=1.6;AAT/;
+$cached_env_img{$key} = q|\begin{displaymath}asum \leftarrow \Vert x_i\Vert\end{displaymath}|; 
+
+$key = q/{displaymath}dotleftarrowx(i)y(i).{displaymath};MSF=1.6;AAT/;
+$cached_env_img{$key} = q|\begin{displaymath}dot \leftarrow x(i) y(i).\end{displaymath}|; 
+
+$key = q/{displaymath}dotleftarrowx^Hy{displaymath};MSF=1.6;AAT/;
+$cached_env_img{$key} = q|\begin{displaymath}dot \leftarrow x^H y\end{displaymath}|; 
+
+$key = q/{displaymath}dotleftarrowx^Ty{displaymath};MSF=1.6;AAT/;
+$cached_env_img{$key} = q|\begin{displaymath}dot \leftarrow x^T y\end{displaymath}|; 
+
+$key = q/{displaymath}err=frac{|r_i|}{(|A||x_i|+|b|)}|; 
+
+$key = q/{displaymath}err=frac{|r_i|}{|b|_2}|; 
+
+$key = q/{displaymath}err=frac{|r_i|}{|r_0|_2}|; 
+
+$key = q/{displaymath}glob_xleftarrowcollect(loc_x_i){displaymath};MSF=1.6;AAT/;
+$cached_env_img{$key} = q|\begin{displaymath}glob\_x \leftarrow collect(loc\_x_i) \end{displaymath}|; 
+
+$key = q/{displaymath}loc_x_ileftarrowscatter(glob_x){displaymath};MSF=1.6;AAT/;
+$cached_env_img{$key} = q|\begin{displaymath}loc\_x_i \leftarrow scatter(glob\_x) \end{displaymath}|; 
+
+$key = q/{displaymath}nrm1leftarrow|A|_1{displaymath};MSF=1.6;AAT/;
+$cached_env_img{$key} = q|\begin{displaymath}nrm1 \leftarrow \Vert A\Vert _1 \end{displaymath}|; 
+
+$key = q/{displaymath}nrm2leftarrowsqrt{x^Hx}{displaymath};MSF=1.6;AAT/;
+$cached_env_img{$key} = q|\begin{displaymath}nrm2 \leftarrow \sqrt{x^H x}\end{displaymath}|; 
+
+$key = q/{displaymath}nrm2leftarrowsqrt{x^Tx}{displaymath};MSF=1.6;AAT/;
+$cached_env_img{$key} = q|\begin{displaymath}nrm2 \leftarrow \sqrt{x^T x}\end{displaymath}|; 
+
+$key = q/{displaymath}nrmileftarrow|A|_infty{displaymath};MSF=1.6;AAT/;
+$cached_env_img{$key} = q|\begin{displaymath}nrmi \leftarrow \Vert A\Vert _\infty \end{displaymath}|; 
+
+$key = q/{displaymath}res(i)leftarrowmax_k|x(k,i)|{displaymath};MSF=1.6;AAT/;
+$cached_env_img{$key} = q|\begin{displaymath}res(i) \leftarrow \max_k \vert x(k,i)\vert \end{displaymath}|; 
+
+$key = q/{displaymath}res(i)leftarrowx(:,i)^Ty(:,i){displaymath};MSF=1.6;AAT/;
+$cached_env_img{$key} = q|\begin{displaymath}res(i) \leftarrow x(:,i)^T y(:,i)\end{displaymath}|; 
+
+$key = q/{displaymath}res(i)leftarrow|re(x)|_1+|im(x)|_1{displaymath};MSF=1.6;AAT/;
+$cached_env_img{$key} = q|\begin{displaymath}res(i) \leftarrow \Vert re(x)\Vert _1 + \Vert im(x)\Vert _1\end{displaymath}|; 
+
+$key = q/{displaymath}res(i)leftarrow|x(:,i)|_2{displaymath};MSF=1.6;AAT/;
+$cached_env_img{$key} = q|\begin{displaymath}res(i) \leftarrow \Vert x(:,i)\Vert _2 \end{displaymath}|; 
+
+$key = q/{displaymath}res(i)leftarrow|x_i|{displaymath};MSF=1.6;AAT/;
+$cached_env_img{$key} = q|\begin{displaymath}res(i) \leftarrow \Vert x_i\Vert\end{displaymath}|; 
+
+$key = q/{displaymath}res=sqrt{sum_idat_i^2},{displaymath};MSF=1.6;AAT/;
+$cached_env_img{$key} = q|\begin{displaymath}res = \sqrt{\sum_i dat_i^2},\end{displaymath}|; 
+
+$key = q/{displaymath}slashleftarrow1slashx(i).{displaymath};MSF=1.6;AAT/;
+$cached_env_img{$key} = q|\begin{displaymath}/ \leftarrow 1/x(i).\end{displaymath}|; 
+
+$key = q/{displaymath}slashleftarrowx(i)slashy(i).{displaymath};MSF=1.6;AAT/;
+$cached_env_img{$key} = q|\begin{displaymath}/ \leftarrow x(i)/y(i).\end{displaymath}|; 
+
+$key = q/{displaymath}xleftarrowQx{displaymath};MSF=1.6;AAT/;
+$cached_env_img{$key} = q|\begin{displaymath}x \leftarrow Q x \end{displaymath}|; 
+
+$key = q/{displaymath}xleftarrowx{displaymath};MSF=1.6;AAT/;
+$cached_env_img{$key} = q|\begin{displaymath}x \leftarrow x \end{displaymath}|; 
+
+$key = q/{displaymath}yleftarrowalpha>x+betay{displaymath};MSF=1.6;AAT/;
+$cached_env_img{$key} = q|\begin{displaymath}y \leftarrow \alpha\> x+ \beta y \end{displaymath}|; 
+
+$key = q/{displaymath}yleftarrowalphaA^Hx+betay{displaymath};MSF=1.6;AAT/;
+$cached_env_img{$key} = q|\begin{displaymath}
+y \leftarrow \alpha A^H x + \beta y
+\end{displaymath}|; 
+
+$key = q/{displaymath}yleftarrowalphaA^Tx+betay{displaymath};MSF=1.6;AAT/;
+$cached_env_img{$key} = q|\begin{displaymath}
+y \leftarrow \alpha A^T x + \beta y
+\end{displaymath}|; 
+
+$key = q/{displaymath}yleftarrowalphaAx+betay{displaymath};MSF=1.6;AAT/;
+$cached_env_img{$key} = q|\begin{displaymath}
+y \leftarrow \alpha A x + \beta y
+\end{displaymath}|; 
+
+$key = q/{eqnarraystar}y&leftarrow&alphaT^{-1}x+betayy&leftarrow&alphaDT^{-1}x+betayy&lefhaDT^{-H}x+betayy&leftarrow&alphaT^{-H}Dx+betay{eqnarraystar};MSF=1.6;TAGS=R;AAT/;
+$cached_env_img{$key} = q|\begin{eqnarray*}
+y &\leftarrow& \alpha T^{-1} x + \beta y\\\\
+y &\leftarrow& \al...
+...-H} x + \beta y\\\\
+y &\leftarrow& \alpha T^{-H} D x + \beta y\\\\
+\end{eqnarray*}|; 
+
+$key = q/{lstlisting}callhb_read(a,iret,iunit,filename,b,mtitle){lstlisting};AAT/;
+$cached_env_img{$key} = q|\begin{lstlisting}
+call hb_read(a, iret, iunit, filename, b, mtitle)
+\end{lstlisting}|; 
+
+$key = q/{lstlisting}callhb_write(a,iret,iunit,filename,key,rhs,mtitle){lstlisting};AAT/;
+$cached_env_img{$key} = q|\begin{lstlisting}
+call hb_write(a, iret, iunit, filename, key, rhs, mtitle)
+\end{lstlisting}|; 
+
+$key = q/{lstlisting}callmm_array_read(b,iret,iunit,filename){lstlisting};AAT/;
+$cached_env_img{$key} = q|\begin{lstlisting}
+call mm_array_read(b, iret, iunit, filename)
+\end{lstlisting}|; 
+
+$key = q/{lstlisting}callmm_array_write(b,iret,iunit,filename){lstlisting};AAT/;
+$cached_env_img{$key} = q|\begin{lstlisting}
+call mm_array_write(b, iret, iunit, filename)
+\end{lstlisting}|; 
+
+$key = q/{lstlisting}callmm_mat_read(a,iret,iunit,filename){lstlisting};AAT/;
+$cached_env_img{$key} = q|\begin{lstlisting}
+call mm_mat_read(a, iret, iunit, filename)
+\end{lstlisting}|; 
+
+$key = q/{lstlisting}callmm_mat_write(a,mtitle,iret,iunit,filename){lstlisting};AAT/;
+$cached_env_img{$key} = q|\begin{lstlisting}
+call mm_mat_write(a, mtitle, iret, iunit, filename)
+\end{lstlisting}|; 
+
+$key = q/{lstlisting}callpsb_error(icontxt){lstlisting};AAT/;
+$cached_env_img{$key} = q|\begin{lstlisting}
+call psb_error(icontxt)
+\end{lstlisting}|; 
+
+$key = q/{lstlisting}callpsb_errpush(err_c,r_name,i_err,a_err){lstlisting};AAT/;
+$cached_env_img{$key} = q|\begin{lstlisting}
+call psb_errpush(err_c, r_name, i_err, a_err)
+\end{lstlisting}|; 
+
+$key = q/{lstlisting}callpsb_gather(glob_x,loc_x,desc_a,info,root)callpsb_gather(glob_x,loc_x,desc_a,info,root){lstlisting};AAT/;
+$cached_env_img{$key} = q|\begin{lstlisting}
+call psb_gather(glob_x, loc_x, desc_a, info, root)
+call psb_gather(glob_x, loc_x, desc_a, info, root)
+\end{lstlisting}|; 
+
+$key = q/{lstlisting}callpsb_halo(x,desc_a,info)callpsb_halo(x,desc_a,info,work,data){lstlisting};AAT/;
+$cached_env_img{$key} = q|\begin{lstlisting}
+call psb_halo(x, desc_a, info)
+call psb_halo(x, desc_a, info, work, data)
+\end{lstlisting}|; 
+
+$key = q/{lstlisting}callpsb_krylov(method,a,prec,b,x,eps,desc_a,info,&&itmax,iter,err,itrace,irst,istop,cond){lstlisting};AAT/;
+$cached_env_img{$key} = q|\begin{lstlisting}
+call psb_krylov(method,a,prec,b,x,eps,desc_a,info,&
+& itmax,iter,err,itrace,irst,istop,cond)
+\end{lstlisting}|; 
+
+$key = q/{lstlisting}callpsb_ovrl(x,desc_a,info)callpsb_ovrl(x,desc_a,info,update=update_type,work=work){lstlisting};AAT/;
+$cached_env_img{$key} = q|\begin{lstlisting}
+call psb_ovrl(x, desc_a, info)
+call psb_ovrl(x, desc_a, info, update=update_type, work=work)
+\end{lstlisting}|; 
+
+$key = q/{lstlisting}callpsb_scatter(glob_x,loc_x,desc_a,info,root,mold){lstlisting};AAT/;
+$cached_env_img{$key} = q|\begin{lstlisting}
+call psb_scatter(glob_x, loc_x, desc_a, info, root, mold)
+\end{lstlisting}|; 
+
+$key = q/{lstlisting}callpsb_set_erraction(err_act){lstlisting};AAT/;
+$cached_env_img{$key} = q|\begin{lstlisting}
+call psb_set_erraction(err_act)
+\end{lstlisting}|; 
+
+$key = q/{lstlisting}callpsb_set_errverbosity(v){lstlisting};AAT/;
+$cached_env_img{$key} = q|\begin{lstlisting}
+call psb_set_errverbosity(v)
+\end{lstlisting}|; 
+
+$key = q/{lstlisting}vres(1)=psb_geamax(x1,desc_a,info,global=.false.)vres(2)=psb_geamax(eamax(x3,desc_a,info,global=.false.)callpsb_amx(ictxt,vres(1:3)){lstlisting};AAT/;
+$cached_env_img{$key} = q|\begin{lstlisting}
+vres(1) = psb_geamax(x1,desc_a,info,global=.false.)
+vres(2)...
+...(x3,desc_a,info,global=.false.)
+call psb_amx(ictxt,vres(1:3))
+\end{lstlisting}|; 
+
+$key = q/{lstlisting}vres(1)=psb_geasum(x1,desc_a,info,global=.false.)vres(2)=psb_geasum(easum(x3,desc_a,info,global=.false.)callpsb_sum(ictxt,vres(1:3)){lstlisting};AAT/;
+$cached_env_img{$key} = q|\begin{lstlisting}
+vres(1) = psb_geasum(x1,desc_a,info,global=.false.)
+vres(2)...
+...(x3,desc_a,info,global=.false.)
+call psb_sum(ictxt,vres(1:3))
+\end{lstlisting}|; 
+
+$key = q/{lstlisting}vres(1)=psb_gedot(x1,y1,desc_a,info,global=.false.)vres(2)=psb_gedotot(x3,y3,desc_a,info,global=.false.)callpsb_sum(ictxt,vres(1:3)){lstlisting};AAT/;
+$cached_env_img{$key} = q|\begin{lstlisting}
+vres(1) = psb_gedot(x1,y1,desc_a,info,global=.false.)
+vres(...
+...,y3,desc_a,info,global=.false.)
+call psb_sum(ictxt,vres(1:3))
+\end{lstlisting}|; 
+
+$key = q/{lstlisting}vres(1)=psb_genrm2(x1,desc_a,info,global=.false.)vres(2)=psb_genrm2(nrm2(x3,desc_a,info,global=.false.)callpsb_nrm2(ictxt,vres(1:3)){lstlisting};AAT/;
+$cached_env_img{$key} = q|\begin{lstlisting}
+vres(1) = psb_genrm2(x1,desc_a,info,global=.false.)
+vres(2)...
+...x3,desc_a,info,global=.false.)
+call psb_nrm2(ictxt,vres(1:3))
+\end{lstlisting}|; 
+
+$key = q/|{calI}_i|+|{calB}_i|+|{calH}_i|;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$\vert{\cal I}_i\vert + \vert{\cal B}_i\vert +\vert{\cal H}_i\vert$|; 
+
+$key = q/|{calI}_i|+|{calB}_i|;MSF=1.6;AAT/;
+$cached_env_img{$key} = q|$\vert{\cal I}_i\vert + \vert{\cal B}_i\vert$|; 
+
+1;
+
diff --git a/docs/html/images.tex b/docs/html/images.tex
new file mode 100644
index 00000000..2191e46c
--- /dev/null
+++ b/docs/html/images.tex
@@ -0,0 +1,273 @@
+\batchmode
+\documentclass[10pt,a4paper,twoside]{article}
+
+\usepackage{pstricks}
+\usepackage{fancybox}
+\usepackage{amsfonts}
+\usepackage[bookmarks=true,             bookmarksnumbered=true,             bookmarksopen=false,             plainpages=false,            pdfpagelabels,            colorlinks,             linkcolor=blue]{hyperref}
+\usepackage{ifthen}
+\usepackage{graphicx}
+
+\newtheorem{theorem}{Theorem} 
+\newtheorem{corollary}{Corollary} \usepackage{listings}
+
+
+\pdfoutput=0
+
+
+
+\newcounter{subroutine}[subsection] 
+\newcounter{example}[subroutine] \makeatletter%
+\providecommand{\subsubroutine}[2]{%
+\stepcounter{subroutine}%
+      \subsection*{\flushleft #1---#2 \endflushleft}%
+      \addcontentsline{toc}{subsubsection}{#1}%
+      \markright{#1}}%%
+\providecommand{\subsubsubroutine}[2]{%
+\stepcounter{subroutine}%
+      \subsubsection*{\flushleft #1---#2 \endflushleft}%
+      \addcontentsline{toc}{paragraph}{#1}%
+      \markright{#1}}%%
+\providecommand{\examplename}{Example}%
+\providecommand{\syntaxname}{Syntax} 
+
+\makeatother%
+\providecommand{\example}{\stepcounter{example}%
+\section*{Example~\arabic{example}}} 
+
+%
+\providecommand{\precdata}{\hyperlink{precdata}{{\tt psb\_prec\_type}}}%
+\providecommand{\descdata}{\hyperlink{descdata}{{\tt psb\_desc\_type}}}%
+\providecommand{\spdata}{\hyperlink{spdata}{{\tt psb\_Tspmat\_type}}}%
+\providecommand{\vdata}{\hyperlink{vdata}{{\tt psb\_T\_vect\_type}}}%
+\providecommand{\spbasedata}{\hypertarget{spbasedata}{{\tt psb\_T\_base\_sparse\_mat}}}%
+\providecommand{\vbasedata}{\hypertarget{vbasedata}{{\tt psb\_T\_base\_vect\_type}}} 
+
+
+
+
+\usepackage[latin1]{inputenc}
+
+
+
+\makeatletter
+
+\makeatletter
+\count@=\the\catcode`\_ \catcode`\_=8 
+\newenvironment{tex2html_wrap}{}{}%
+\catcode`\<=12\catcode`\_=\count@
+\newcommand{\providedcommand}[1]{\expandafter\providecommand\csname #1\endcsname}%
+\newcommand{\renewedcommand}[1]{\expandafter\providecommand\csname #1\endcsname{}%
+  \expandafter\renewcommand\csname #1\endcsname}%
+\newcommand{\newedenvironment}[1]{\newenvironment{#1}{}{}\renewenvironment{#1}}%
+\let\newedcommand\renewedcommand
+\let\renewedenvironment\newedenvironment
+\makeatother
+\let\mathon=$
+\let\mathoff=$
+\ifx\AtBeginDocument\undefined \newcommand{\AtBeginDocument}[1]{}\fi
+\newbox\sizebox
+\setlength{\hoffset}{0pt}\setlength{\voffset}{0pt}
+\addtolength{\textheight}{\footskip}\setlength{\footskip}{0pt}
+\addtolength{\textheight}{\topmargin}\setlength{\topmargin}{0pt}
+\addtolength{\textheight}{\headheight}\setlength{\headheight}{0pt}
+\addtolength{\textheight}{\headsep}\setlength{\headsep}{0pt}
+\setlength{\textwidth}{349pt}
+\newwrite\lthtmlwrite
+\makeatletter
+\let\realnormalsize=\normalsize
+\global\topskip=2sp
+\def\preveqno{}\let\real@float=\@float \let\realend@float=\end@float
+\def\@float{\let\@savefreelist\@freelist\real@float}
+\def\liih@math{\ifmmode$\else\bad@math\fi}
+\def\end@float{\realend@float\global\let\@freelist\@savefreelist}
+\let\real@dbflt=\@dbflt \let\end@dblfloat=\end@float
+\let\@largefloatcheck=\relax
+\let\if@boxedmulticols=\iftrue
+\def\@dbflt{\let\@savefreelist\@freelist\real@dbflt}
+\def\adjustnormalsize{\def\normalsize{\mathsurround=0pt \realnormalsize
+ \parindent=0pt\abovedisplayskip=0pt\belowdisplayskip=0pt}%
+ \def\phantompar{\csname par\endcsname}\normalsize}%
+\def\lthtmltypeout#1{{\let\protect\string \immediate\write\lthtmlwrite{#1}}}%
+\newcommand\lthtmlhboxmathA{\adjustnormalsize\setbox\sizebox=\hbox\bgroup\kern.05em }%
+\newcommand\lthtmlhboxmathB{\adjustnormalsize\setbox\sizebox=\hbox to\hsize\bgroup\hfill }%
+\newcommand\lthtmlvboxmathA{\adjustnormalsize\setbox\sizebox=\vbox\bgroup %
+ \let\ifinner=\iffalse \let\)\liih@math }%
+\newcommand\lthtmlboxmathZ{\@next\next\@currlist{}{\def\next{\voidb@x}}%
+ \expandafter\box\next\egroup}%
+\newcommand\lthtmlmathtype[1]{\gdef\lthtmlmathenv{#1}}%
+\newcommand\lthtmllogmath{\dimen0\ht\sizebox \advance\dimen0\dp\sizebox
+  \ifdim\dimen0>.95\vsize
+   \lthtmltypeout{%
+*** image for \lthtmlmathenv\space is too tall at \the\dimen0, reducing to .95 vsize ***}%
+   \ht\sizebox.95\vsize \dp\sizebox\z@ \fi
+  \lthtmltypeout{l2hSize %
+:\lthtmlmathenv:\the\ht\sizebox::\the\dp\sizebox::\the\wd\sizebox.\preveqno}}%
+\newcommand\lthtmlfigureA[1]{\let\@savefreelist\@freelist
+       \lthtmlmathtype{#1}\lthtmlvboxmathA}%
+\newcommand\lthtmlpictureA{\bgroup\catcode`\_=8 \lthtmlpictureB}%
+\newcommand\lthtmlpictureB[1]{\lthtmlmathtype{#1}\egroup
+       \let\@savefreelist\@freelist \lthtmlhboxmathB}%
+\newcommand\lthtmlpictureZ[1]{\hfill\lthtmlfigureZ}%
+\newcommand\lthtmlfigureZ{\lthtmlboxmathZ\lthtmllogmath\copy\sizebox
+       \global\let\@freelist\@savefreelist}%
+\newcommand\lthtmldisplayA{\bgroup\catcode`\_=8 \lthtmldisplayAi}%
+\newcommand\lthtmldisplayAi[1]{\lthtmlmathtype{#1}\egroup\lthtmlvboxmathA}%
+\newcommand\lthtmldisplayB[1]{\edef\preveqno{(\theequation)}%
+  \lthtmldisplayA{#1}\let\@eqnnum\relax}%
+\newcommand\lthtmldisplayZ{\lthtmlboxmathZ\lthtmllogmath\lthtmlsetmath}%
+\newcommand\lthtmlinlinemathA{\bgroup\catcode`\_=8 \lthtmlinlinemathB}
+\newcommand\lthtmlinlinemathB[1]{\lthtmlmathtype{#1}\egroup\lthtmlhboxmathA
+  \vrule height1.5ex width0pt }%
+\newcommand\lthtmlinlineA{\bgroup\catcode`\_=8 \lthtmlinlineB}%
+\newcommand\lthtmlinlineB[1]{\lthtmlmathtype{#1}\egroup\lthtmlhboxmathA}%
+\newcommand\lthtmlinlineZ{\egroup\expandafter\ifdim\dp\sizebox>0pt %
+  \expandafter\centerinlinemath\fi\lthtmllogmath\lthtmlsetinline}
+\newcommand\lthtmlinlinemathZ{\egroup\expandafter\ifdim\dp\sizebox>0pt %
+  \expandafter\centerinlinemath\fi\lthtmllogmath\lthtmlsetmath}
+\newcommand\lthtmlindisplaymathZ{\egroup %
+  \centerinlinemath\lthtmllogmath\lthtmlsetmath}
+\def\lthtmlsetinline{\hbox{\vrule width.1em \vtop{\vbox{%
+  \kern.1em\copy\sizebox}\ifdim\dp\sizebox>0pt\kern.1em\else\kern.3pt\fi
+  \ifdim\hsize>\wd\sizebox \hrule depth1pt\fi}}}
+\def\lthtmlsetmath{\hbox{\vrule width.1em\kern-.05em\vtop{\vbox{%
+  \kern.1em\kern0.8 pt\hbox{\hglue.17em\copy\sizebox\hglue0.8 pt}}\kern.3pt%
+  \ifdim\dp\sizebox>0pt\kern.1em\fi \kern0.8 pt%
+  \ifdim\hsize>\wd\sizebox \hrule depth1pt\fi}}}
+\def\centerinlinemath{%
+  \dimen1=\ifdim\ht\sizebox<\dp\sizebox \dp\sizebox\else\ht\sizebox\fi
+  \advance\dimen1by.5pt \vrule width0pt height\dimen1 depth\dimen1 
+ \dp\sizebox=\dimen1\ht\sizebox=\dimen1\relax}
+
+\def\lthtmlcheckvsize{\ifdim\ht\sizebox<\vsize 
+  \ifdim\wd\sizebox<\hsize\expandafter\hfill\fi \expandafter\vfill
+  \else\expandafter\vss\fi}%
+\providecommand{\selectlanguage}[1]{}%
+\makeatletter \tracingstats = 1 
+
+
+\begin{document}
+\pagestyle{empty}\thispagestyle{empty}\lthtmltypeout{}%
+\lthtmltypeout{latex2htmlLength hsize=\the\hsize}\lthtmltypeout{}%
+\lthtmltypeout{latex2htmlLength vsize=\the\vsize}\lthtmltypeout{}%
+\lthtmltypeout{latex2htmlLength hoffset=\the\hoffset}\lthtmltypeout{}%
+\lthtmltypeout{latex2htmlLength voffset=\the\voffset}\lthtmltypeout{}%
+\lthtmltypeout{latex2htmlLength topmargin=\the\topmargin}\lthtmltypeout{}%
+\lthtmltypeout{latex2htmlLength topskip=\the\topskip}\lthtmltypeout{}%
+\lthtmltypeout{latex2htmlLength headheight=\the\headheight}\lthtmltypeout{}%
+\lthtmltypeout{latex2htmlLength headsep=\the\headsep}\lthtmltypeout{}%
+\lthtmltypeout{latex2htmlLength parskip=\the\parskip}\lthtmltypeout{}%
+\lthtmltypeout{latex2htmlLength oddsidemargin=\the\oddsidemargin}\lthtmltypeout{}%
+\makeatletter
+\if@twoside\lthtmltypeout{latex2htmlLength evensidemargin=\the\evensidemargin}%
+\else\lthtmltypeout{latex2htmlLength evensidemargin=\the\oddsidemargin}\fi%
+\lthtmltypeout{}%
+\makeatother
+\setcounter{page}{1}
+\onecolumn
+
+% !!! IMAGES START HERE !!!
+
+\begingroup 
+\renewcommand{\thepage}{toc}
+\endgroup
+\stepcounter{section}
+\stepcounter{section}
+\stepcounter{subsection}
+\stepcounter{subsection}
+\stepcounter{subsection}
+\stepcounter{subsubsection}
+\stepcounter{subsection}
+\stepcounter{section}
+\stepcounter{subsection}
+\stepcounter{subsubsection}
+\stepcounter{subsubsection}
+\stepcounter{subsection}
+\stepcounter{subsubsection}
+\stepcounter{subsubsection}
+\stepcounter{subsection}
+\stepcounter{subsubsection}
+\stepcounter{subsection}
+\stepcounter{subsection}
+\stepcounter{section}
+\stepcounter{section}
+\stepcounter{section}
+\stepcounter{section}
+\stepcounter{section}
+{\newpage\clearpage
+\lthtmlfigureA{Sbox7771}%
+\begin{Sbox}
+    \begin{minipage}[tl]{0.95\textwidth}
+\small
+\begin{lstlisting}
+subroutine psb_foo(some args, info)
+   ...
+   if(error detected) then
+      info=errcode1
+      call psb_errpush('psb_foo', errcode1)
+      goto 9999
+   end if
+   ...
+   call psb_bar(some args, info)
+   if(info .ne. zero) then
+      info=errcode2
+      call psb_errpush('psb_foo', errcode2)
+      goto 9999
+   end if
+   ...
+9999 continue
+   if (err_act .eq. act_abort) then
+     call psb_error(icontxt)
+     return
+   else
+     return
+   end if
+\par
+end subroutine psb_foo
+\end{lstlisting}
+    \end{minipage}
+  \end{Sbox}%
+\lthtmlfigureZ
+\lthtmlcheckvsize\clearpage}
+
+
+
+\setlength{\fboxsep}{8pt}%
+
+\setlength{\fboxsep}{8pt}
+{\newpage\clearpage
+\lthtmlfigureA{Sbox7788}%
+\begin{Sbox}
+    \begin{minipage}[tl]{0.95\textwidth}
+\begin{verbatim}
+
+==========================================================
+Process: 0.  PSBLAS Error (4010) in subroutine: df_sample           
+Error from call to subroutine mat dist            
+==========================================================
+Process: 0.  PSBLAS Error (4010) in subroutine: mat_distv           
+Error from call to subroutine psb_spasb           
+==========================================================
+Process: 0.  PSBLAS Error (4010) in subroutine: psb_spasb           
+Error from call to subroutine psb_cest            
+==========================================================
+Process: 0.  PSBLAS Error (136) in subroutine: psb_cest            
+Format FOO is unknown
+==========================================================
+Aborting...\end{verbatim}
+
+    \end{minipage}
+  \end{Sbox}%
+\lthtmlfigureZ
+\lthtmlcheckvsize\clearpage}
+
+
+
+\setlength{\fboxsep}{8pt}%
+
+\setlength{\fboxsep}{8pt}
+\stepcounter{section}
+\stepcounter{section}
+\stepcounter{section}
+
+\end{document}
diff --git a/docs/html/img1.png b/docs/html/img1.png
index 2ac27f96..e7280f00 100644
Binary files a/docs/html/img1.png and b/docs/html/img1.png differ
diff --git a/docs/html/img10.png b/docs/html/img10.png
index 41dbbad6..e94e2a07 100644
Binary files a/docs/html/img10.png and b/docs/html/img10.png differ
diff --git a/docs/html/img100.png b/docs/html/img100.png
index 89a17445..f6badca2 100644
Binary files a/docs/html/img100.png and b/docs/html/img100.png differ
diff --git a/docs/html/img101.png b/docs/html/img101.png
index f539ffeb..991e37ce 100644
Binary files a/docs/html/img101.png and b/docs/html/img101.png differ
diff --git a/docs/html/img102.png b/docs/html/img102.png
index bbb0a1c0..c8269e63 100644
Binary files a/docs/html/img102.png and b/docs/html/img102.png differ
diff --git a/docs/html/img103.png b/docs/html/img103.png
index b6226f3c..61f04c6d 100644
Binary files a/docs/html/img103.png and b/docs/html/img103.png differ
diff --git a/docs/html/img104.png b/docs/html/img104.png
index 2f140eb1..3aa2f86d 100644
Binary files a/docs/html/img104.png and b/docs/html/img104.png differ
diff --git a/docs/html/img105.png b/docs/html/img105.png
index 66bf5520..d20f20eb 100644
Binary files a/docs/html/img105.png and b/docs/html/img105.png differ
diff --git a/docs/html/img106.png b/docs/html/img106.png
index bd84d15a..6b570c4f 100644
Binary files a/docs/html/img106.png and b/docs/html/img106.png differ
diff --git a/docs/html/img107.png b/docs/html/img107.png
index 6c716f7e..55ae005a 100644
Binary files a/docs/html/img107.png and b/docs/html/img107.png differ
diff --git a/docs/html/img108.png b/docs/html/img108.png
new file mode 100644
index 00000000..452a9c87
Binary files /dev/null and b/docs/html/img108.png differ
diff --git a/docs/html/img109.png b/docs/html/img109.png
index 660cca8c..0d45d2e5 100644
Binary files a/docs/html/img109.png and b/docs/html/img109.png differ
diff --git a/docs/html/img11.png b/docs/html/img11.png
index 31bd2fc6..5af308a8 100644
Binary files a/docs/html/img11.png and b/docs/html/img11.png differ
diff --git a/docs/html/img110.png b/docs/html/img110.png
index 1aaed1e9..ece1e70b 100644
Binary files a/docs/html/img110.png and b/docs/html/img110.png differ
diff --git a/docs/html/img111.png b/docs/html/img111.png
index 583cb484..4cbf0c49 100644
Binary files a/docs/html/img111.png and b/docs/html/img111.png differ
diff --git a/docs/html/img112.png b/docs/html/img112.png
new file mode 100644
index 00000000..3a753508
Binary files /dev/null and b/docs/html/img112.png differ
diff --git a/docs/html/img113.png b/docs/html/img113.png
new file mode 100644
index 00000000..709c9898
Binary files /dev/null and b/docs/html/img113.png differ
diff --git a/docs/html/img114.png b/docs/html/img114.png
new file mode 100644
index 00000000..c7a30bbd
Binary files /dev/null and b/docs/html/img114.png differ
diff --git a/docs/html/img115.png b/docs/html/img115.png
new file mode 100644
index 00000000..3ee61bda
Binary files /dev/null and b/docs/html/img115.png differ
diff --git a/docs/html/img116.png b/docs/html/img116.png
index ea78705b..566ec9d7 100644
Binary files a/docs/html/img116.png and b/docs/html/img116.png differ
diff --git a/docs/html/img117.png b/docs/html/img117.png
index 74f211e1..f17fc72a 100644
Binary files a/docs/html/img117.png and b/docs/html/img117.png differ
diff --git a/docs/html/img118.png b/docs/html/img118.png
index 5e9904d5..585737f0 100644
Binary files a/docs/html/img118.png and b/docs/html/img118.png differ
diff --git a/docs/html/img119.png b/docs/html/img119.png
index fdfd3db7..89de8dc3 100644
Binary files a/docs/html/img119.png and b/docs/html/img119.png differ
diff --git a/docs/html/img120.png b/docs/html/img120.png
index 76e4d307..ebc00eda 100644
Binary files a/docs/html/img120.png and b/docs/html/img120.png differ
diff --git a/docs/html/img121.png b/docs/html/img121.png
index 4c559110..61df3677 100644
Binary files a/docs/html/img121.png and b/docs/html/img121.png differ
diff --git a/docs/html/img122.png b/docs/html/img122.png
index 8e8e8c7b..401353f2 100644
Binary files a/docs/html/img122.png and b/docs/html/img122.png differ
diff --git a/docs/html/img123.png b/docs/html/img123.png
index 56826b8b..01f60011 100644
Binary files a/docs/html/img123.png and b/docs/html/img123.png differ
diff --git a/docs/html/img124.png b/docs/html/img124.png
index e205726f..c0d01a75 100644
Binary files a/docs/html/img124.png and b/docs/html/img124.png differ
diff --git a/docs/html/img125.png b/docs/html/img125.png
index 0df61bc1..ee72c1c3 100644
Binary files a/docs/html/img125.png and b/docs/html/img125.png differ
diff --git a/docs/html/img126.png b/docs/html/img126.png
index dabbe84d..1f336182 100644
Binary files a/docs/html/img126.png and b/docs/html/img126.png differ
diff --git a/docs/html/img127.png b/docs/html/img127.png
index 8164fce6..2e10826d 100644
Binary files a/docs/html/img127.png and b/docs/html/img127.png differ
diff --git a/docs/html/img128.png b/docs/html/img128.png
index 8ae7e6e5..7dcbbf59 100644
Binary files a/docs/html/img128.png and b/docs/html/img128.png differ
diff --git a/docs/html/img129.png b/docs/html/img129.png
index 03e5d035..5971190f 100644
Binary files a/docs/html/img129.png and b/docs/html/img129.png differ
diff --git a/docs/html/img13.png b/docs/html/img13.png
index e5506884..8fa140bf 100644
Binary files a/docs/html/img13.png and b/docs/html/img13.png differ
diff --git a/docs/html/img130.png b/docs/html/img130.png
index 84c60af3..c39e7eb2 100644
Binary files a/docs/html/img130.png and b/docs/html/img130.png differ
diff --git a/docs/html/img131.png b/docs/html/img131.png
index 8aa2fd47..8d05ac1e 100644
Binary files a/docs/html/img131.png and b/docs/html/img131.png differ
diff --git a/docs/html/img132.png b/docs/html/img132.png
index 8c725ced..eb2ae848 100644
Binary files a/docs/html/img132.png and b/docs/html/img132.png differ
diff --git a/docs/html/img133.png b/docs/html/img133.png
index 31abeeb7..70e23fad 100644
Binary files a/docs/html/img133.png and b/docs/html/img133.png differ
diff --git a/docs/html/img134.png b/docs/html/img134.png
index 8fbf5a93..afdff9bd 100644
Binary files a/docs/html/img134.png and b/docs/html/img134.png differ
diff --git a/docs/html/img135.png b/docs/html/img135.png
index ae2386e3..59f6cf6c 100644
Binary files a/docs/html/img135.png and b/docs/html/img135.png differ
diff --git a/docs/html/img136.png b/docs/html/img136.png
index af2771c5..c43d1238 100644
Binary files a/docs/html/img136.png and b/docs/html/img136.png differ
diff --git a/docs/html/img137.png b/docs/html/img137.png
index c6cc0692..8fecd122 100644
Binary files a/docs/html/img137.png and b/docs/html/img137.png differ
diff --git a/docs/html/img138.png b/docs/html/img138.png
index 28bf892d..74b25797 100644
Binary files a/docs/html/img138.png and b/docs/html/img138.png differ
diff --git a/docs/html/img139.png b/docs/html/img139.png
index 69fa8cc7..50b5104b 100644
Binary files a/docs/html/img139.png and b/docs/html/img139.png differ
diff --git a/docs/html/img14.png b/docs/html/img14.png
index c2806ce0..d8e32028 100644
Binary files a/docs/html/img14.png and b/docs/html/img14.png differ
diff --git a/docs/html/img140.png b/docs/html/img140.png
index 0d2507d5..05dfb193 100644
Binary files a/docs/html/img140.png and b/docs/html/img140.png differ
diff --git a/docs/html/img141.png b/docs/html/img141.png
index f659c90c..2c6ef8d9 100644
Binary files a/docs/html/img141.png and b/docs/html/img141.png differ
diff --git a/docs/html/img142.png b/docs/html/img142.png
index eb9a94fb..cbc74cec 100644
Binary files a/docs/html/img142.png and b/docs/html/img142.png differ
diff --git a/docs/html/img143.png b/docs/html/img143.png
index 3df4bd77..6bb04de6 100644
Binary files a/docs/html/img143.png and b/docs/html/img143.png differ
diff --git a/docs/html/img144.png b/docs/html/img144.png
index 6eaa0e93..ed3d364a 100644
Binary files a/docs/html/img144.png and b/docs/html/img144.png differ
diff --git a/docs/html/img145.png b/docs/html/img145.png
index d3d1573f..16435531 100644
Binary files a/docs/html/img145.png and b/docs/html/img145.png differ
diff --git a/docs/html/img146.png b/docs/html/img146.png
index 7ecedb71..d25261ef 100644
Binary files a/docs/html/img146.png and b/docs/html/img146.png differ
diff --git a/docs/html/img147.png b/docs/html/img147.png
index abb3da9f..1ca4552d 100644
Binary files a/docs/html/img147.png and b/docs/html/img147.png differ
diff --git a/docs/html/img148.png b/docs/html/img148.png
index 151cb99d..db3bcede 100644
Binary files a/docs/html/img148.png and b/docs/html/img148.png differ
diff --git a/docs/html/img149.png b/docs/html/img149.png
index 18cdc957..cb788d91 100644
Binary files a/docs/html/img149.png and b/docs/html/img149.png differ
diff --git a/docs/html/img15.png b/docs/html/img15.png
index d9af05b2..557ff902 100644
Binary files a/docs/html/img15.png and b/docs/html/img15.png differ
diff --git a/docs/html/img150.png b/docs/html/img150.png
index a83c2523..59c6a079 100644
Binary files a/docs/html/img150.png and b/docs/html/img150.png differ
diff --git a/docs/html/img151.png b/docs/html/img151.png
index 1c151bf2..f669eb1a 100644
Binary files a/docs/html/img151.png and b/docs/html/img151.png differ
diff --git a/docs/html/img152.png b/docs/html/img152.png
index e69de29b..1df9a2b4 100644
Binary files a/docs/html/img152.png and b/docs/html/img152.png differ
diff --git a/docs/html/img153.png b/docs/html/img153.png
index 2c8c4c59..986f62fd 100644
Binary files a/docs/html/img153.png and b/docs/html/img153.png differ
diff --git a/docs/html/img154.png b/docs/html/img154.png
index e69de29b..f358d206 100644
Binary files a/docs/html/img154.png and b/docs/html/img154.png differ
diff --git a/docs/html/img155.png b/docs/html/img155.png
index 1b52ccb2..4221886d 100644
Binary files a/docs/html/img155.png and b/docs/html/img155.png differ
diff --git a/docs/html/img156.png b/docs/html/img156.png
index 4ebd6836..714e9362 100644
Binary files a/docs/html/img156.png and b/docs/html/img156.png differ
diff --git a/docs/html/img157.png b/docs/html/img157.png
index f241006d..a32e3e37 100644
Binary files a/docs/html/img157.png and b/docs/html/img157.png differ
diff --git a/docs/html/img158.old b/docs/html/img158.old
new file mode 100644
index 00000000..e69de29b
diff --git a/docs/html/img158.png b/docs/html/img158.png
index 55f17c1a..e69de29b 100644
Binary files a/docs/html/img158.png and b/docs/html/img158.png differ
diff --git a/docs/html/img159.png b/docs/html/img159.png
index 4aecd5d2..c857d6ca 100644
Binary files a/docs/html/img159.png and b/docs/html/img159.png differ
diff --git a/docs/html/img16.png b/docs/html/img16.png
index 91546233..d733d22e 100644
Binary files a/docs/html/img16.png and b/docs/html/img16.png differ
diff --git a/docs/html/img160.old b/docs/html/img160.old
new file mode 100644
index 00000000..e69de29b
diff --git a/docs/html/img160.png b/docs/html/img160.png
index bf808fd4..e69de29b 100644
Binary files a/docs/html/img160.png and b/docs/html/img160.png differ
diff --git a/docs/html/img161.png b/docs/html/img161.png
index 3b42a110..dfd97c4b 100644
Binary files a/docs/html/img161.png and b/docs/html/img161.png differ
diff --git a/docs/html/img162.png b/docs/html/img162.png
index 28c31822..36856d84 100644
Binary files a/docs/html/img162.png and b/docs/html/img162.png differ
diff --git a/docs/html/img163.png b/docs/html/img163.png
index 24fb58dc..0f16897e 100644
Binary files a/docs/html/img163.png and b/docs/html/img163.png differ
diff --git a/docs/html/img164.png b/docs/html/img164.png
index 73fe83b6..0e6a371e 100644
Binary files a/docs/html/img164.png and b/docs/html/img164.png differ
diff --git a/docs/html/img165.png b/docs/html/img165.png
index 4258bbd4..1c5b9daf 100644
Binary files a/docs/html/img165.png and b/docs/html/img165.png differ
diff --git a/docs/html/img166.png b/docs/html/img166.png
index e3a508d5..0918f651 100644
Binary files a/docs/html/img166.png and b/docs/html/img166.png differ
diff --git a/docs/html/img167.png b/docs/html/img167.png
index 0c441a44..e06c9ae8 100644
Binary files a/docs/html/img167.png and b/docs/html/img167.png differ
diff --git a/docs/html/img168.png b/docs/html/img168.png
index 2d35de54..1f9a72ac 100644
Binary files a/docs/html/img168.png and b/docs/html/img168.png differ
diff --git a/docs/html/img169.png b/docs/html/img169.png
index 86ab1590..171a75aa 100644
Binary files a/docs/html/img169.png and b/docs/html/img169.png differ
diff --git a/docs/html/img17.png b/docs/html/img17.png
index a16d6eb6..aeb56396 100644
Binary files a/docs/html/img17.png and b/docs/html/img17.png differ
diff --git a/docs/html/img170.png b/docs/html/img170.png
index deb37281..5cd24e26 100644
Binary files a/docs/html/img170.png and b/docs/html/img170.png differ
diff --git a/docs/html/img171.png b/docs/html/img171.png
index cbcd1726..341e3e57 100644
Binary files a/docs/html/img171.png and b/docs/html/img171.png differ
diff --git a/docs/html/img172.png b/docs/html/img172.png
index 881b68af..7054de74 100644
Binary files a/docs/html/img172.png and b/docs/html/img172.png differ
diff --git a/docs/html/img173.png b/docs/html/img173.png
index e803c834..076f48e5 100644
Binary files a/docs/html/img173.png and b/docs/html/img173.png differ
diff --git a/docs/html/img174.png b/docs/html/img174.png
index 62a4ace0..f11c95c0 100644
Binary files a/docs/html/img174.png and b/docs/html/img174.png differ
diff --git a/docs/html/img175.png b/docs/html/img175.png
new file mode 100644
index 00000000..ff19444e
Binary files /dev/null and b/docs/html/img175.png differ
diff --git a/docs/html/img176.png b/docs/html/img176.png
new file mode 100644
index 00000000..b626bb88
Binary files /dev/null and b/docs/html/img176.png differ
diff --git a/docs/html/img177.png b/docs/html/img177.png
new file mode 100644
index 00000000..4c5ed5a3
Binary files /dev/null and b/docs/html/img177.png differ
diff --git a/docs/html/img178.png b/docs/html/img178.png
new file mode 100644
index 00000000..270d9bab
Binary files /dev/null and b/docs/html/img178.png differ
diff --git a/docs/html/img179.png b/docs/html/img179.png
new file mode 100644
index 00000000..1c7be3b5
Binary files /dev/null and b/docs/html/img179.png differ
diff --git a/docs/html/img18.png b/docs/html/img18.png
index a1c96ad5..b7505ba6 100644
Binary files a/docs/html/img18.png and b/docs/html/img18.png differ
diff --git a/docs/html/img180.png b/docs/html/img180.png
new file mode 100644
index 00000000..86faae32
Binary files /dev/null and b/docs/html/img180.png differ
diff --git a/docs/html/img181.png b/docs/html/img181.png
new file mode 100644
index 00000000..8ed7190c
Binary files /dev/null and b/docs/html/img181.png differ
diff --git a/docs/html/img182.png b/docs/html/img182.png
new file mode 100644
index 00000000..45a42b18
Binary files /dev/null and b/docs/html/img182.png differ
diff --git a/docs/html/img183.png b/docs/html/img183.png
new file mode 100644
index 00000000..045d4f07
Binary files /dev/null and b/docs/html/img183.png differ
diff --git a/docs/html/img184.png b/docs/html/img184.png
new file mode 100644
index 00000000..a5d174a3
Binary files /dev/null and b/docs/html/img184.png differ
diff --git a/docs/html/img185.png b/docs/html/img185.png
new file mode 100644
index 00000000..0cd52618
Binary files /dev/null and b/docs/html/img185.png differ
diff --git a/docs/html/img186.png b/docs/html/img186.png
new file mode 100644
index 00000000..953b52c3
Binary files /dev/null and b/docs/html/img186.png differ
diff --git a/docs/html/img187.png b/docs/html/img187.png
new file mode 100644
index 00000000..45adb542
Binary files /dev/null and b/docs/html/img187.png differ
diff --git a/docs/html/img19.png b/docs/html/img19.png
index d0e22d1f..8b3cc057 100644
Binary files a/docs/html/img19.png and b/docs/html/img19.png differ
diff --git a/docs/html/img2.png b/docs/html/img2.png
index ce374483..bc1204e6 100644
Binary files a/docs/html/img2.png and b/docs/html/img2.png differ
diff --git a/docs/html/img20.png b/docs/html/img20.png
index ba7446cb..6b9684ba 100644
Binary files a/docs/html/img20.png and b/docs/html/img20.png differ
diff --git a/docs/html/img21.png b/docs/html/img21.png
index 5211fce1..16920fd3 100644
Binary files a/docs/html/img21.png and b/docs/html/img21.png differ
diff --git a/docs/html/img22.png b/docs/html/img22.png
index 6a7336dd..19b9986c 100644
Binary files a/docs/html/img22.png and b/docs/html/img22.png differ
diff --git a/docs/html/img23.png b/docs/html/img23.png
index 8820cdde..fa052e10 100644
Binary files a/docs/html/img23.png and b/docs/html/img23.png differ
diff --git a/docs/html/img24.png b/docs/html/img24.png
index 87dfb361..35196adf 100644
Binary files a/docs/html/img24.png and b/docs/html/img24.png differ
diff --git a/docs/html/img25.png b/docs/html/img25.png
index 455f551f..872e546b 100644
Binary files a/docs/html/img25.png and b/docs/html/img25.png differ
diff --git a/docs/html/img26.png b/docs/html/img26.png
index 7bb6f1e1..8c581355 100644
Binary files a/docs/html/img26.png and b/docs/html/img26.png differ
diff --git a/docs/html/img27.png b/docs/html/img27.png
index e3b06a48..54f4af44 100644
Binary files a/docs/html/img27.png and b/docs/html/img27.png differ
diff --git a/docs/html/img28.png b/docs/html/img28.png
index 5b4542aa..b594d9fd 100644
Binary files a/docs/html/img28.png and b/docs/html/img28.png differ
diff --git a/docs/html/img29.png b/docs/html/img29.png
index a39cee90..79cf8891 100644
Binary files a/docs/html/img29.png and b/docs/html/img29.png differ
diff --git a/docs/html/img3.png b/docs/html/img3.png
index 869e09eb..61ee834b 100644
Binary files a/docs/html/img3.png and b/docs/html/img3.png differ
diff --git a/docs/html/img30.png b/docs/html/img30.png
index b005f107..f9bd0a35 100644
Binary files a/docs/html/img30.png and b/docs/html/img30.png differ
diff --git a/docs/html/img31.png b/docs/html/img31.png
index b0759f28..ac17f63f 100644
Binary files a/docs/html/img31.png and b/docs/html/img31.png differ
diff --git a/docs/html/img32.png b/docs/html/img32.png
index ed749deb..b5d11a44 100644
Binary files a/docs/html/img32.png and b/docs/html/img32.png differ
diff --git a/docs/html/img33.png b/docs/html/img33.png
index 050f3cdd..dd77d103 100644
Binary files a/docs/html/img33.png and b/docs/html/img33.png differ
diff --git a/docs/html/img34.png b/docs/html/img34.png
index 75e66a30..8fdb9283 100644
Binary files a/docs/html/img34.png and b/docs/html/img34.png differ
diff --git a/docs/html/img35.png b/docs/html/img35.png
index 9fb422bb..a185f8ec 100644
Binary files a/docs/html/img35.png and b/docs/html/img35.png differ
diff --git a/docs/html/img36.png b/docs/html/img36.png
index 8300ccd3..87fedc7b 100644
Binary files a/docs/html/img36.png and b/docs/html/img36.png differ
diff --git a/docs/html/img37.png b/docs/html/img37.png
index 8dc1fd2c..34780cb0 100644
Binary files a/docs/html/img37.png and b/docs/html/img37.png differ
diff --git a/docs/html/img38.png b/docs/html/img38.png
index 2a6bc064..9ed3c928 100644
Binary files a/docs/html/img38.png and b/docs/html/img38.png differ
diff --git a/docs/html/img39.png b/docs/html/img39.png
index 753930a8..65c6b504 100644
Binary files a/docs/html/img39.png and b/docs/html/img39.png differ
diff --git a/docs/html/img4.png b/docs/html/img4.png
index 587ad0cb..a5ecda3f 100644
Binary files a/docs/html/img4.png and b/docs/html/img4.png differ
diff --git a/docs/html/img40.png b/docs/html/img40.png
index e7b8816a..18cdf165 100644
Binary files a/docs/html/img40.png and b/docs/html/img40.png differ
diff --git a/docs/html/img41.png b/docs/html/img41.png
index ef745239..61ae82f8 100644
Binary files a/docs/html/img41.png and b/docs/html/img41.png differ
diff --git a/docs/html/img42.png b/docs/html/img42.png
index 90788f0b..93aeb898 100644
Binary files a/docs/html/img42.png and b/docs/html/img42.png differ
diff --git a/docs/html/img43.png b/docs/html/img43.png
index a6a14a3f..ddbcb358 100644
Binary files a/docs/html/img43.png and b/docs/html/img43.png differ
diff --git a/docs/html/img44.png b/docs/html/img44.png
index f806e0d8..5ef68fbc 100644
Binary files a/docs/html/img44.png and b/docs/html/img44.png differ
diff --git a/docs/html/img45.png b/docs/html/img45.png
index 0d8a92b1..6db14f7a 100644
Binary files a/docs/html/img45.png and b/docs/html/img45.png differ
diff --git a/docs/html/img46.png b/docs/html/img46.png
index dfafa7c9..8a05f9b8 100644
Binary files a/docs/html/img46.png and b/docs/html/img46.png differ
diff --git a/docs/html/img47.png b/docs/html/img47.png
index 571e8fe6..8886c404 100644
Binary files a/docs/html/img47.png and b/docs/html/img47.png differ
diff --git a/docs/html/img48.png b/docs/html/img48.png
index ffc91461..cf61ecd8 100644
Binary files a/docs/html/img48.png and b/docs/html/img48.png differ
diff --git a/docs/html/img49.png b/docs/html/img49.png
index 92a76423..2b4f6a1e 100644
Binary files a/docs/html/img49.png and b/docs/html/img49.png differ
diff --git a/docs/html/img5.png b/docs/html/img5.png
index 89608988..ad004662 100644
Binary files a/docs/html/img5.png and b/docs/html/img5.png differ
diff --git a/docs/html/img50.png b/docs/html/img50.png
index 5dcfb65a..d7303ff4 100644
Binary files a/docs/html/img50.png and b/docs/html/img50.png differ
diff --git a/docs/html/img51.png b/docs/html/img51.png
index f6335409..57fa3dfb 100644
Binary files a/docs/html/img51.png and b/docs/html/img51.png differ
diff --git a/docs/html/img52.png b/docs/html/img52.png
index 5c562331..0c074573 100644
Binary files a/docs/html/img52.png and b/docs/html/img52.png differ
diff --git a/docs/html/img53.png b/docs/html/img53.png
index be2cba0e..c56945fb 100644
Binary files a/docs/html/img53.png and b/docs/html/img53.png differ
diff --git a/docs/html/img54.png b/docs/html/img54.png
index d8ade475..7a9a1811 100644
Binary files a/docs/html/img54.png and b/docs/html/img54.png differ
diff --git a/docs/html/img55.png b/docs/html/img55.png
index 0b94ce1b..80ca5a95 100644
Binary files a/docs/html/img55.png and b/docs/html/img55.png differ
diff --git a/docs/html/img56.png b/docs/html/img56.png
index 38055651..a2d8c23c 100644
Binary files a/docs/html/img56.png and b/docs/html/img56.png differ
diff --git a/docs/html/img57.png b/docs/html/img57.png
index bbdf4b88..e49a3dc8 100644
Binary files a/docs/html/img57.png and b/docs/html/img57.png differ
diff --git a/docs/html/img58.png b/docs/html/img58.png
index 2cb46436..3e2caadf 100644
Binary files a/docs/html/img58.png and b/docs/html/img58.png differ
diff --git a/docs/html/img59.png b/docs/html/img59.png
index 0896a6f5..c06940f9 100644
Binary files a/docs/html/img59.png and b/docs/html/img59.png differ
diff --git a/docs/html/img6.png b/docs/html/img6.png
index d96fe963..9ca07ef2 100644
Binary files a/docs/html/img6.png and b/docs/html/img6.png differ
diff --git a/docs/html/img60.png b/docs/html/img60.png
index 31482d5d..8ab759fe 100644
Binary files a/docs/html/img60.png and b/docs/html/img60.png differ
diff --git a/docs/html/img61.png b/docs/html/img61.png
index add7a3da..520bef9e 100644
Binary files a/docs/html/img61.png and b/docs/html/img61.png differ
diff --git a/docs/html/img62.png b/docs/html/img62.png
index 9c888139..8e0ff8da 100644
Binary files a/docs/html/img62.png and b/docs/html/img62.png differ
diff --git a/docs/html/img63.png b/docs/html/img63.png
index 4626cda8..819da009 100644
Binary files a/docs/html/img63.png and b/docs/html/img63.png differ
diff --git a/docs/html/img64.png b/docs/html/img64.png
index 63497b06..1653a0fb 100644
Binary files a/docs/html/img64.png and b/docs/html/img64.png differ
diff --git a/docs/html/img65.png b/docs/html/img65.png
index 0f08edcc..a8a8f666 100644
Binary files a/docs/html/img65.png and b/docs/html/img65.png differ
diff --git a/docs/html/img66.png b/docs/html/img66.png
index 5fc28604..099c7bbd 100644
Binary files a/docs/html/img66.png and b/docs/html/img66.png differ
diff --git a/docs/html/img67.png b/docs/html/img67.png
index 0fe6d6fe..0c5f5899 100644
Binary files a/docs/html/img67.png and b/docs/html/img67.png differ
diff --git a/docs/html/img68.png b/docs/html/img68.png
index 5fc28604..364c435c 100644
Binary files a/docs/html/img68.png and b/docs/html/img68.png differ
diff --git a/docs/html/img69.png b/docs/html/img69.png
index 624c6cca..b7138b96 100644
Binary files a/docs/html/img69.png and b/docs/html/img69.png differ
diff --git a/docs/html/img7.png b/docs/html/img7.png
index a26eabf7..0c867f94 100644
Binary files a/docs/html/img7.png and b/docs/html/img7.png differ
diff --git a/docs/html/img70.png b/docs/html/img70.png
index 2539460a..1e347c62 100644
Binary files a/docs/html/img70.png and b/docs/html/img70.png differ
diff --git a/docs/html/img71.png b/docs/html/img71.png
index 36fe0d5b..d0d4e7a6 100644
Binary files a/docs/html/img71.png and b/docs/html/img71.png differ
diff --git a/docs/html/img72.png b/docs/html/img72.png
index f75a7319..810b69c9 100644
Binary files a/docs/html/img72.png and b/docs/html/img72.png differ
diff --git a/docs/html/img73.png b/docs/html/img73.png
index 6cc3ae5c..ec9322e9 100644
Binary files a/docs/html/img73.png and b/docs/html/img73.png differ
diff --git a/docs/html/img74.png b/docs/html/img74.png
index 90e36a4d..810b69c9 100644
Binary files a/docs/html/img74.png and b/docs/html/img74.png differ
diff --git a/docs/html/img75.png b/docs/html/img75.png
index fed43124..82f4ee3c 100644
Binary files a/docs/html/img75.png and b/docs/html/img75.png differ
diff --git a/docs/html/img76.png b/docs/html/img76.png
index 334a44a7..83bc1969 100644
Binary files a/docs/html/img76.png and b/docs/html/img76.png differ
diff --git a/docs/html/img77.png b/docs/html/img77.png
index 650cef03..2a05686f 100644
Binary files a/docs/html/img77.png and b/docs/html/img77.png differ
diff --git a/docs/html/img78.png b/docs/html/img78.png
index c3fd2d55..089b17f6 100644
Binary files a/docs/html/img78.png and b/docs/html/img78.png differ
diff --git a/docs/html/img79.png b/docs/html/img79.png
index 9057bcf5..083e5b1e 100644
Binary files a/docs/html/img79.png and b/docs/html/img79.png differ
diff --git a/docs/html/img8.png b/docs/html/img8.png
index d7424dc1..1b047adf 100644
Binary files a/docs/html/img8.png and b/docs/html/img8.png differ
diff --git a/docs/html/img80.png b/docs/html/img80.png
index 5a0d1ca4..d3448151 100644
Binary files a/docs/html/img80.png and b/docs/html/img80.png differ
diff --git a/docs/html/img81.png b/docs/html/img81.png
index 6619889a..94fe3652 100644
Binary files a/docs/html/img81.png and b/docs/html/img81.png differ
diff --git a/docs/html/img82.png b/docs/html/img82.png
index 44cbaea8..e58c5e69 100644
Binary files a/docs/html/img82.png and b/docs/html/img82.png differ
diff --git a/docs/html/img83.png b/docs/html/img83.png
index 2f1e81d3..ba4e5268 100644
Binary files a/docs/html/img83.png and b/docs/html/img83.png differ
diff --git a/docs/html/img84.png b/docs/html/img84.png
index 5246c0b8..40453aa0 100644
Binary files a/docs/html/img84.png and b/docs/html/img84.png differ
diff --git a/docs/html/img85.png b/docs/html/img85.png
index 615372d4..2f88b08e 100644
Binary files a/docs/html/img85.png and b/docs/html/img85.png differ
diff --git a/docs/html/img86.png b/docs/html/img86.png
index 04513fb5..5dd0b395 100644
Binary files a/docs/html/img86.png and b/docs/html/img86.png differ
diff --git a/docs/html/img87.png b/docs/html/img87.png
index d280160a..0e932c93 100644
Binary files a/docs/html/img87.png and b/docs/html/img87.png differ
diff --git a/docs/html/img88.png b/docs/html/img88.png
index 89a30141..00cb49e6 100644
Binary files a/docs/html/img88.png and b/docs/html/img88.png differ
diff --git a/docs/html/img89.png b/docs/html/img89.png
index 168fcb95..3a49b4c5 100644
Binary files a/docs/html/img89.png and b/docs/html/img89.png differ
diff --git a/docs/html/img9.png b/docs/html/img9.png
index 2a67babe..67fce13f 100644
Binary files a/docs/html/img9.png and b/docs/html/img9.png differ
diff --git a/docs/html/img90.png b/docs/html/img90.png
index ec5fdcea..47d09bbb 100644
Binary files a/docs/html/img90.png and b/docs/html/img90.png differ
diff --git a/docs/html/img91.png b/docs/html/img91.png
index 79d7ada7..ce2a8b22 100644
Binary files a/docs/html/img91.png and b/docs/html/img91.png differ
diff --git a/docs/html/img92.png b/docs/html/img92.png
index 7a1571be..bde63772 100644
Binary files a/docs/html/img92.png and b/docs/html/img92.png differ
diff --git a/docs/html/img93.png b/docs/html/img93.png
index 79cf58a6..ae65520d 100644
Binary files a/docs/html/img93.png and b/docs/html/img93.png differ
diff --git a/docs/html/img94.png b/docs/html/img94.png
index 6d9db303..d9252802 100644
Binary files a/docs/html/img94.png and b/docs/html/img94.png differ
diff --git a/docs/html/img95.png b/docs/html/img95.png
index 48aa78e3..93115ef1 100644
Binary files a/docs/html/img95.png and b/docs/html/img95.png differ
diff --git a/docs/html/img96.png b/docs/html/img96.png
index 8c52c838..5cf34e0e 100644
Binary files a/docs/html/img96.png and b/docs/html/img96.png differ
diff --git a/docs/html/img97.png b/docs/html/img97.png
index c4a1e7ad..e7744ab3 100644
Binary files a/docs/html/img97.png and b/docs/html/img97.png differ
diff --git a/docs/html/img98.png b/docs/html/img98.png
index df9999c4..eb768677 100644
Binary files a/docs/html/img98.png and b/docs/html/img98.png differ
diff --git a/docs/html/img99.png b/docs/html/img99.png
index 33d40e54..302cd009 100644
Binary files a/docs/html/img99.png and b/docs/html/img99.png differ
diff --git a/docs/html/index.html b/docs/html/index.html
index e3200a83..cccebd92 100644
--- a/docs/html/index.html
+++ b/docs/html/index.html
@@ -20,18 +20,18 @@
 
 
 
@@ -61,345 +61,351 @@ Dec 1st, 2018
 
 
 
+

+

Notes

    -
  1. For processes in the virtual parallel machine the identifier - will satisfy $0 \le iam \le np-1$; + WIDTH="180" HEIGHT="30" ALIGN="MIDDLE" BORDER="0" + SRC="img131.png" + ALT="$flag = psb\_sort\_ovw\_idx\_$"> then the entries in $ix(1:n)$ + where $n$ is the size of $x$ are initialized to +$ix(i) \leftarrow
+i$; thus, upon return from the subroutine, for each + index $i$ we have in $ix(i)$ the position that the item $x(i)$ + occupied in the original data sequence;
  2. -
  3. If the user has requested on psb_init a number of - processes less than the total available in the parallel execution - environment, the remaining processes will have on return If +$flag = psb\_sort\_keep\_idx\_$ the routine will assume that + the entries in $iam=-1$; - the only call involving icontxt that any such process may - execute is to psb_exit. + ALT="$ix(:)$"> have already been initialized by the user; +
  4. +
  5. The three sorting algorithms have a similar $O(n \log n)$ expected + running time; in the average case quicksort will be the + fastest and merge-sort the slowest. However note that: + +
      +
    1. The worst case running time for quicksort is $O(n^2)$; the algorithm + implemented here follows the well-known median-of-three heuristics, + but the worst case may still apply; +
    2. +
    3. The worst case running time for merge-sort and heap-sort is + $O(n \log n)$ as the average case; +
    4. +
    5. The merge-sort algorithm is implemented to take advantage of + subsequences that may be already in the desired ordering prior to + the subroutine call; this situation is relatively common when + dealing with groups of indices of sparse matrix entries, thus + merge-sort is the preferred choice when a sorting is needed + by other routines in the library.
    +
  6. +
+ +

-


+ + + diff --git a/docs/html/node102.html b/docs/html/node102.html index ef55917c..10f2e367 100644 --- a/docs/html/node102.html +++ b/docs/html/node102.html @@ -3,8 +3,8 @@ -psb_exit -- Exit from PSBLAS parallel environment - +Parallel environment routines + @@ -14,136 +14,93 @@ - - - + + + -

-psb_exit -- Exit from PSBLAS parallel - environment -

- -

-

-call psb_exit(icontxt)
-call psb_exit(icontxt,close)
-
- -

-This subroutine exits from the PSBLAS parallel virtual machine. -

-
Type:
-
Synchronous. -
-
On Entry
-
-
-
icontxt
-
the communication context identifying the virtual - parallel machine. +

+
-Scope: global. -
-Type: required. -
-Intent: in. -
-Specified as: an integer variable. -

-
close
-
Whether to close all data structures related to the - virtual parallel machine, besides those associated with icontxt. -
-Scope: global. -
-Type: optional. -
-Intent: in. -
-Specified as: a logical variable, default value: true. -
-
- -

-Notes - -

    -
  1. This routine may be called even if a previous call to - psb_info has returned with $iam=-1$; indeed, it it is the only - routine that may be called with argument icontxt in this - situation. -
  2. -
  3. A call to this routine with close=.true. implies a call - to MPI_Finalize, after which no parallel routine may be called. -
  4. -
  5. If the user whishes to use multiple communication contexts in the - same program, or to enter and exit multiple times into the parallel - environment, this routine may be called to - selectively close the contexts with close=.false., while on - the last call it should be called with close=.true. to - shutdown in a clean way the entire parallel environment. -
  6. -
+Parallel environment routines +

+


+ +Subsections - - + + +

diff --git a/docs/html/node103.html b/docs/html/node103.html index 86979e32..419c426d 100644 --- a/docs/html/node103.html +++ b/docs/html/node103.html @@ -3,8 +3,8 @@ -psb_get_mpicomm -- Get the MPI communicator - +psb_init -- Initializes PSBLAS parallel environment + @@ -16,67 +16,97 @@ - + -

-psb_get_mpicomm -- Get the MPI communicator +

+psb_init -- Initializes PSBLAS parallel + environment

-call psb_get_mpicomm(icontxt, icomm)
+call psb_init(icontxt, np, basectxt, ids)
 

-This subroutine returns the MPI communicator associated with a PSBLAS context +This subroutine initializes the PSBLAS parallel environment, defining +a virtual parallel machine.

Type:
-
Asynchronous. +
Synchronous.
On Entry
-
icontxt
-
the communication context identifying the virtual - parallel machine. +
np
+
Number of processes in the PSBLAS virtual parallel machine.
Scope: global.
-Type: required. +Type: optional.
Intent: in.
-Specified as: an integer variable. +Specified as: an integer value. Default: use all available processes. +
+
basectxt
+
the initial communication context. The new context + will be defined from the processes participating in the initial one. +
+Scope: global. +
+Type: optional. +
+Intent: in. +
+Specified as: an integer value. Default: use MPI_COMM_WORLD. +
+
ids
+
Identities of the processes to use for the new context; the + argument is ignored when np is not specified. This allows the + processes in the new environment to be in an order different from the + original one. +
+Scope: global. +
+Type: optional. +
+Intent: in. +
+Specified as: an integer array. Default: use the indices $(0\dots np-1)$.
@@ -85,19 +115,63 @@ Specified as: an integer variable.
On Return
-
icomm
-
The MPI communicator associated with the PSBLAS virtual parallel machine. +
icontxt
+
the communication context identifying the virtual + parallel machine. Note that this is always a duplicate of + basectxt, so that library communications are completely + separated from other communication operations.
Scope: global.
Type: required.
Intent: out. -
+
+Specified as: an integer variable. +

-


+Notes + +
    +
  1. A call to this routine must precede any other PSBLAS call. +
  2. +
  3. It is an error to specify a value for $np$ greater than the + number of processes available in the underlying base parallel + environment. +
  4. +
+ +

+ +

+ diff --git a/docs/html/node104.html b/docs/html/node104.html index 2c8cd368..6eda8e7e 100644 --- a/docs/html/node104.html +++ b/docs/html/node104.html @@ -3,8 +3,8 @@ -psb_get_rank -- Get the MPI rank - +psb_info -- Return information about PSBLAS parallel environment + @@ -16,52 +16,51 @@ - + -

-psb_get_rank -- Get the MPI rank +

+psb_info -- Return information about PSBLAS parallel + environment

-call psb_get_rank(rank, icontxt, id)
+call psb_info(icontxt, iam, np)
 

-This subroutine returns the MPI rank of the PSBLAS process $id$ +This subroutine returns information about the PSBLAS parallel environment, defining +a virtual parallel machine.

Type:
Asynchronous. @@ -81,43 +80,65 @@ Intent: in.
Specified as: an integer variable.
-
id
-
Identifier of a process in the PSBLAS virtual parallel machine. +
+ +

+

+
On Return
+
+
+
iam
+
Identifier of current process in the PSBLAS virtual parallel machine.
Scope: local.
Type: required.
-Intent: in. +Intent: out.
Specified as: an integer value. $0 \le id \le np-1$
-
- -

-

-
On Return
-
-
-
rank
-
The MPI rank associated with the PSBLAS process $id$. + WIDTH="139" HEIGHT="31" ALIGN="MIDDLE" BORDER="0" + SRC="img141.png" + ALT="$-1 \le iam \le np-1$">
+
np
+
Number of processes in the PSBLAS virtual parallel machine.
-Scope: local. +Scope: global.
Type: required.
Intent: out. -
+
+Specified as: an integer variable.
+

+Notes + +

    +
  1. For processes in the virtual parallel machine the identifier + will satisfy +$0 \le iam \le np-1$; +
  2. +
  3. If the user has requested on psb_init a number of + processes less than the total available in the parallel execution + environment, the remaining processes will have on return $iam=-1$; + the only call involving icontxt that any such process may + execute is to psb_exit. +
  4. +
+



diff --git a/docs/html/node105.html b/docs/html/node105.html index a93ed542..a9efb2cb 100644 --- a/docs/html/node105.html +++ b/docs/html/node105.html @@ -3,8 +3,8 @@ -psb_wtime -- Wall clock timing - +psb_exit -- Exit from PSBLAS parallel environment + @@ -16,66 +16,134 @@ - + -

-psb_wtime -- Wall clock timing +

+psb_exit -- Exit from PSBLAS parallel + environment

-time = psb_wtime()
+call psb_exit(icontxt)
+call psb_exit(icontxt,close)
 

-This function returns a wall clock timer. The resolution of the timer -is dependent on the underlying parallel environment implementation. +This subroutine exits from the PSBLAS parallel virtual machine.

Type:
-
Asynchronous. +
Synchronous.
-
On Exit
+
On Entry
-
Function value
-
the elapsed time in seconds. +
icontxt
+
the communication context identifying the virtual + parallel machine.
-Returned as: a real(psb_dpk_) variable. +Scope: global. +
+Type: required. +
+Intent: in. +
+Specified as: an integer variable. +
+
close
+
Whether to close all data structures related to the + virtual parallel machine, besides those associated with icontxt. +
+Scope: global. +
+Type: optional. +
+Intent: in. +
+Specified as: a logical variable, default value: true.

-


+Notes + +
    +
  1. This routine may be called even if a previous call to + psb_info has returned with $iam=-1$; indeed, it it is the only + routine that may be called with argument icontxt in this + situation. +
  2. +
  3. A call to this routine with close=.true. implies a call + to MPI_Finalize, after which no parallel routine may be called. +
  4. +
  5. If the user whishes to use multiple communication contexts in the + same program, or to enter and exit multiple times into the parallel + environment, this routine may be called to + selectively close the contexts with close=.false., while on + the last call it should be called with close=.true. to + shutdown in a clean way the entire parallel environment. +
  6. +
+ +

+ +

+ diff --git a/docs/html/node106.html b/docs/html/node106.html index 74bd3f51..047d0ff4 100644 --- a/docs/html/node106.html +++ b/docs/html/node106.html @@ -3,8 +3,8 @@ -psb_barrier -- Sinchronization point parallel environment - +psb_get_mpicomm -- Get the MPI communicator + @@ -16,54 +16,52 @@ - + -

-psb_barrier -- Sinchronization point parallel - environment +

+psb_get_mpicomm -- Get the MPI communicator

-call psb_barrier(icontxt)
+call psb_get_mpicomm(icontxt, icomm)
 

-This subroutine acts as an explicit synchronization point for the PSBLAS -parallel virtual machine. +This subroutine returns the MPI communicator associated with a PSBLAS context

Type:
-
Synchronous. +
Asynchronous.
On Entry
@@ -82,6 +80,22 @@ Specified as: an integer variable.
+

+

+
On Return
+
+
+
icomm
+
The MPI communicator associated with the PSBLAS virtual parallel machine. +
+Scope: global. +
+Type: required. +
+Intent: out. +
+
+



diff --git a/docs/html/node107.html b/docs/html/node107.html index 0f37acf3..a7b9c720 100644 --- a/docs/html/node107.html +++ b/docs/html/node107.html @@ -3,8 +3,8 @@ -psb_abort -- Abort a computation - +psb_get_rank -- Get the MPI rank + @@ -16,49 +16,52 @@ - + -

-psb_abort -- Abort a computation +

+psb_get_rank -- Get the MPI rank

-call psb_abort(icontxt)
+call psb_get_rank(rank, icontxt, id)
 

-This subroutine aborts computation on the parallel virtual machine. +This subroutine returns the MPI rank of the PSBLAS process $id$

Type:
Asynchronous. @@ -78,6 +81,41 @@ Intent: in.
Specified as: an integer variable.
+
id
+
Identifier of a process in the PSBLAS virtual parallel machine. +
+Scope: local. +
+Type: required. +
+Intent: in. +
+Specified as: an integer value. +$0 \le id \le np-1$
+
+ +

+

+
On Return
+
+
+
rank
+
The MPI rank associated with the PSBLAS process $id$. +
+Scope: local. +
+Type: required. +
+Intent: out. +

diff --git a/docs/html/node108.html b/docs/html/node108.html index cada5b11..813dd87f 100644 --- a/docs/html/node108.html +++ b/docs/html/node108.html @@ -3,8 +3,8 @@ -psb_bcast -- Broadcast data - +psb_wtime -- Wall clock timing + @@ -16,116 +16,61 @@ - +

-

-psb_bcast -- Broadcast data +

+psb_wtime -- Wall clock timing

-call psb_bcast(icontxt, dat, root)
+time = psb_wtime()
 

-This subroutine implements a broadcast operation based on the -underlying communication library. +This function returns a wall clock timer. The resolution of the timer +is dependent on the underlying parallel environment implementation.

Type:
-
Synchronous. +
Asynchronous.
-
On Entry
+
On Exit
-
icontxt
-
the communication context identifying the virtual - parallel machine. +
Function value
+
the elapsed time in seconds.
-Scope: global. -
-Type: required. -
-Intent: in. -
-Specified as: an integer variable. -
-
dat
-
On the root process, the data to be broadcast. -
-Scope: global. -
-Type: required. -
-Intent: inout. -
-Specified as: an integer, real or complex variable, which may be a -scalar, or a rank 1 or 2 array, or a character or logical variable, -which may be a scalar or rank 1 array. Type, kind, rank and size must agree on all processes. -
-
root
-
Root process holding data to be broadcast. -
-Scope: global. -
-Type: optional. -
-Intent: in. -
-Specified as: an integer value -$0<= root <= np-1$, default 0
-
- -

-

-
On Return
-
-
-
dat
-
On processes other than root, the data to be broadcast. -
-Scope: global. -
-Type: required. -
-Intent: inout. -
-Specified as: an integer, real or complex variable, which may be a -scalar, or a rank 1 or 2 array, or a character or logical scalar. Type, kind, rank and size must agree on all processes. +Returned as: a real(psb_dpk_) variable.
diff --git a/docs/html/node109.html b/docs/html/node109.html index c023b27a..e9725952 100644 --- a/docs/html/node109.html +++ b/docs/html/node109.html @@ -3,8 +3,8 @@ -psb_sum -- Global sum - +psb_barrier -- Sinchronization point parallel environment + @@ -16,50 +16,51 @@ - + -

-psb_sum -- Global sum +

+psb_barrier -- Sinchronization point parallel + environment

-call psb_sum(icontxt, dat, root)
+call psb_barrier(icontxt)
 

-This subroutine implements a sum reduction operation based on the -underlying communication library. +This subroutine acts as an explicit synchronization point for the PSBLAS +parallel virtual machine.

Type:
Synchronous. @@ -79,99 +80,10 @@ Intent: in.
Specified as: an integer variable.
-
dat
-
The local contribution to the global sum. -
-Scope: global. -
-Type: required. -
-Intent: inout. -
-Specified as: an integer, real or complex variable, which may be a -scalar, or a rank 1 or 2 array. Type, kind, rank and size must agree on all processes. -
-
root
-
Process to hold the final sum, or $-1$ to make it available - on all processes. -
-Scope: global. -
-Type: optional. -
-Intent: in. -
-Specified as: an integer value -$-1<= root <= np-1$, default -1.
-
- -

-

-
On Return
-
-
-
dat
-
On destination process(es), the result of the sum operation. -
-Scope: global. -
-Type: required. -
-Intent: inout. -
-Specified as: an integer, real or complex variable, which may be a -scalar, or a rank 1 or 2 array. -
-Type, kind, rank and size must agree on all processes. -

-Notes - -

    -
  1. The dat argument is both input and output, and its - value may be changed even on processes different from the final - result destination. -
  2. -
  3. The dat argument may also be a long integer scalar. -
  4. -
- -

- -

- +

diff --git a/docs/html/node11.html b/docs/html/node11.html index c3adba33..4952cd9b 100644 --- a/docs/html/node11.html +++ b/docs/html/node11.html @@ -23,26 +23,26 @@ diff --git a/docs/html/node110.html b/docs/html/node110.html index 06883b02..df63b41c 100644 --- a/docs/html/node110.html +++ b/docs/html/node110.html @@ -3,8 +3,8 @@ -psb_max -- Global maximum - +psb_abort -- Abort a computation + @@ -16,53 +16,52 @@ - + -

-psb_max -- Global maximum +

+psb_abort -- Abort a computation

-call psb_max(icontxt, dat, root)
+call psb_abort(icontxt)
 

-This subroutine implements a maximum valuereduction -operation based on the underlying communication library. +This subroutine aborts computation on the parallel virtual machine.

Type:
-
Synchronous. +
Asynchronous.
On Entry
@@ -79,98 +78,10 @@ Intent: in.
Specified as: an integer variable.
-
dat
-
The local contribution to the global maximum. -
-Scope: local. -
-Type: required. -
-Intent: inout. -
-Specified as: an integer or real variable, which may be a -scalar, or a rank 1 or 2 array. Type, kind, rank and size must agree on all processes. -
-
root
-
Process to hold the final maximum, or $-1$ to make it available - on all processes. -
-Scope: global. -
-Type: optional. -
-Intent: in. -
-Specified as: an integer value -$-1<= root <= np-1$, default -1. -

-

-
On Return
-
-
-
dat
-
On destination process(es), the result of the maximum operation. -
-Scope: global. -
-Type: required. -
-Intent: in. -
-Specified as: an integer or real variable, which may be a -scalar, or a rank 1 or 2 array. Type, kind, rank and size must agree on all processes. -
-
- -

-Notes - -

    -
  1. The dat argument is both input and output, and its - value may be changed even on processes different from the final - result destination. -
  2. -
  3. The dat argument may also be a long integer scalar. -
  4. -
- -

- -

- +

diff --git a/docs/html/node111.html b/docs/html/node111.html index 76e40bd5..febe6db2 100644 --- a/docs/html/node111.html +++ b/docs/html/node111.html @@ -3,8 +3,8 @@ -psb_min -- Global minimum - +psb_bcast -- Broadcast data + @@ -16,50 +16,50 @@ - + -

-psb_min -- Global minimum +

+psb_bcast -- Broadcast data

-call psb_min(icontxt, dat, root)
+call psb_bcast(icontxt, dat, root)
 

-This subroutine implements a minimum value reduction -operation based on the underlying communication library. +This subroutine implements a broadcast operation based on the +underlying communication library.

Type:
Synchronous. @@ -80,23 +80,20 @@ Intent: in. Specified as: an integer variable.
dat
-
The local contribution to the global minimum. +
On the root process, the data to be broadcast.
-Scope: local. +Scope: global.
Type: required.
Intent: inout.
-Specified as: an integer or real variable, which may be a -scalar, or a rank 1 or 2 array. Type, kind, rank and size must agree on all processes. +Specified as: an integer, real or complex variable, which may be a +scalar, or a rank 1 or 2 array, or a character or logical variable, +which may be a scalar or rank 1 array. Type, kind, rank and size must agree on all processes.
root
-
Process to hold the final value, or $-1$ to make it available - on all processes. +
Root process holding data to be broadcast.
Scope: global.
@@ -105,13 +102,12 @@ Type: optional. Intent: in.
Specified as: an integer value $-1<= root <= np-1$, default -1. -
+ WIDTH="153" HEIGHT="29" ALIGN="MIDDLE" BORDER="0" + SRC="img146.png" + ALT="$0<= root <= np-1$">, default 0

@@ -120,7 +116,7 @@ Specified as: an integer value - -next - -up - -previous - -contents -
- Next: psb_amx Global - Up: Parallel environment routines - Previous: psb_max Global -   Contents - +


diff --git a/docs/html/node112.html b/docs/html/node112.html index 36e57ef8..7038a6b6 100644 --- a/docs/html/node112.html +++ b/docs/html/node112.html @@ -3,8 +3,8 @@ -psb_amx -- Global maximum absolute value - +psb_sum -- Global sum + @@ -16,50 +16,50 @@ - + -

-psb_amx -- Global maximum absolute value +

+psb_sum -- Global sum

-call psb_amx(icontxt, dat, root)
+call psb_sum(icontxt, dat, root)
 

-This subroutine implements a maximum absolute value reduction -operation based on the underlying communication library. +This subroutine implements a sum reduction operation based on the +underlying communication library.

Type:
Synchronous. @@ -80,9 +80,9 @@ Intent: in. Specified as: an integer variable.
dat
-
The local contribution to the global maximum. +
The local contribution to the global sum.
-Scope: local. +Scope: global.
Type: required.
@@ -92,9 +92,9 @@ Specified as: an integer, real or complex variable, which may be a scalar, or a rank 1 or 2 array. Type, kind, rank and size must agree on all processes.
root
-
Process to hold the final value, or Process to hold the final sum, or $-1$ to make it available on all processes.
@@ -108,10 +108,9 @@ Specified as: an integer value $-1<= root <= np-1$, default -1. -
+ WIDTH="165" HEIGHT="29" ALIGN="MIDDLE" BORDER="0" + SRC="img147.png" + ALT="$-1<= root <= np-1$">, default -1.

@@ -120,7 +119,7 @@ Specified as: an integer value - next - + up - previous - contents
- Next: psb_amn Global - Up: Parallel environment routines - Previous: psb_min Global -   Next: psb_max Global + Up: Parallel environment routines + Previous: psb_bcast Broadcast +   Contents diff --git a/docs/html/node113.html b/docs/html/node113.html index 587b7431..f1e003d0 100644 --- a/docs/html/node113.html +++ b/docs/html/node113.html @@ -3,8 +3,8 @@ -psb_amn -- Global minimum absolute value - +psb_max -- Global maximum + @@ -16,49 +16,49 @@ - +

-

-psb_amn -- Global minimum absolute value +

+psb_max -- Global maximum

-call psb_amn(icontxt, dat, root)
+call psb_max(icontxt, dat, root)
 

-This subroutine implements a minimum absolute value reduction +This subroutine implements a maximum valuereduction operation based on the underlying communication library.

Type:
@@ -80,7 +80,7 @@ Intent: in. Specified as: an integer variable.
dat
-
The local contribution to the global minimum. +
The local contribution to the global maximum.
Scope: local.
@@ -88,13 +88,13 @@ Type: required.
Intent: inout.
-Specified as: an integer, real or complex variable, which may be a +Specified as: an integer or real variable, which may be a scalar, or a rank 1 or 2 array. Type, kind, rank and size must agree on all processes.
root
-
Process to hold the final value, or Process to hold the final maximum, or $-1$ to make it available on all processes.
@@ -108,8 +108,8 @@ Specified as: an integer value $-1<= root <= np-1$, default -1.
@@ -120,18 +120,16 @@ Specified as: an integer value - next - + up - previous - contents
- Next: psb_nrm2 Global - Up: Parallel environment routines - Previous: psb_amx Global -   Next: psb_min Global + Up: Parallel environment routines + Previous: psb_sum Global +   Contents diff --git a/docs/html/node114.html b/docs/html/node114.html index 0f1bd184..15ca157e 100644 --- a/docs/html/node114.html +++ b/docs/html/node114.html @@ -3,8 +3,8 @@ -psb_nrm2 -- Global 2-norm reduction - +psb_min -- Global minimum + @@ -16,49 +16,49 @@ - + -

-psb_nrm2 -- Global 2-norm reduction +

+psb_min -- Global minimum

-call psb_nrm2(icontxt, dat, root)
+call psb_min(icontxt, dat, root)
 

-This subroutine implements a 2-norm value reduction +This subroutine implements a minimum value reduction operation based on the underlying communication library.

Type:
@@ -88,13 +88,13 @@ Type: required.
Intent: inout.
-Specified as: a real variable, which may be a -scalar, or a rank 1 array. Kind, rank and size must agree on all processes. +Specified as: an integer or real variable, which may be a +scalar, or a rank 1 or 2 array. Type, kind, rank and size must agree on all processes.
root
Process to hold the final value, or $-1$ to make it available on all processes.
@@ -108,8 +108,8 @@ Specified as: an integer value $-1<= root <= np-1$, default -1.
@@ -120,7 +120,7 @@ Specified as: an integer value - -\begin{displaymath}res = \sqrt{\sum_i dat_i^2},\end{displaymath} - -
-

-with care taken to avoid unnecessary overflow. -
  • The dat argument is both input and output, and its value may be changed even on processes different from the final result destination.
  • +
  • The dat argument may also be a long integer scalar. +
  • diff --git a/docs/html/node115.html b/docs/html/node115.html index 2da350d6..afa24b62 100644 --- a/docs/html/node115.html +++ b/docs/html/node115.html @@ -3,8 +3,8 @@ -psb_snd -- Send data - +psb_amx -- Global maximum absolute value + @@ -16,52 +16,53 @@ - + -

    -psb_snd -- Send data +

    +psb_amx -- Global maximum absolute value

    -call psb_snd(icontxt, dat, dst, m)
    +call psb_amx(icontxt, dat, root)
     

    -This subroutine sends a packet of data to a destination. +This subroutine implements a maximum absolute value reduction +operation based on the underlying communication library.

    Type:
    -
    Synchronous: see usage notes. +
    Synchronous.
    On Entry
    @@ -79,65 +80,38 @@ Intent: in. Specified as: an integer variable.
    dat
    -
    The data to be sent. +
    The local contribution to the global maximum.
    Scope: local.
    Type: required.
    -Intent: in. +Intent: inout.
    Specified as: an integer, real or complex variable, which may be a -scalar, or a rank 1 or 2 array, or a character or logical scalar. Type, kind and rank must agree on sender and receiver process; if $m$ is -not specified, size must agree as well. +scalar, or a rank 1 or 2 array. Type, kind, rank and size must agree on all processes.
    -
    dst
    -
    Destination process. -
    -Scope: global. -
    -Type: required. -
    -Intent: in. -
    -Specified as: an integer value -$0<= dst <= np-1$. -
    -
    m
    -
    Number of rows. +
    root
    +
    Process to hold the final value, or $-1$ to make it available + on all processes.
    Scope: global.
    -Type: Optional. +Type: optional.
    Intent: in.
    Specified as: an integer value $0<= m <= size(dat,1)$. -
    -When $dat$ is a rank 2 array, specifies the number of rows to be sent -independently of the leading dimension $size(dat,1)$; must have the -same value on sending and receiving processes. -
    + ALT="$-1<= root <= np-1$">, default -1. +

    @@ -145,17 +119,29 @@ same value on sending and receiving processes.

    On Return
    +
    dat
    +
    On destination process(es), the result of the maximum operation. +
    +Scope: global. +
    +Type: required. +
    +Intent: inout. +
    +Specified as: an integer, real or complex variable, which may be a +scalar, or a rank 1 or 2 array. Type, kind, rank and size must agree on all processes. +

    Notes

      -
    1. This subroutine implies a synchronization, but only between the - calling process and the destination process $dst$. +
    2. The dat argument is both input and output, and its + value may be changed even on processes different from the final + result destination. +
    3. +
    4. The dat argument may also be a long integer scalar.
    @@ -163,26 +149,26 @@ same value on sending and receiving processes. diff --git a/docs/html/node116.html b/docs/html/node116.html index 6f0eaa1e..6ed39834 100644 --- a/docs/html/node116.html +++ b/docs/html/node116.html @@ -3,8 +3,8 @@ -psb_rcv -- Receive data - +psb_amn -- Global minimum absolute value + @@ -14,53 +14,55 @@ + - + -

    -psb_rcv -- Receive data +

    +psb_amn -- Global minimum absolute value

    -call psb_rcv(icontxt, dat, src, m)
    +call psb_amn(icontxt, dat, root)
     

    -This subroutine receives a packet of data to a destination. +This subroutine implements a minimum absolute value reduction +operation based on the underlying communication library.

    Type:
    -
    Synchronous: see usage notes. +
    Synchronous.
    On Entry
    @@ -77,50 +79,39 @@ Intent: in.
    Specified as: an integer variable.
    -
    src
    -
    Source process. +
    dat
    +
    The local contribution to the global minimum.
    -Scope: global. +Scope: local.
    Type: required.
    -Intent: in. +Intent: inout.
    -Specified as: an integer value -$0<= src <= np-1$. -
    -
    m
    -
    Number of rows. +Specified as: an integer, real or complex variable, which may be a +scalar, or a rank 1 or 2 array. Type, kind, rank and size must agree on all processes. +
    +
    root
    +
    Process to hold the final value, or $-1$ to make it available + on all processes.
    Scope: global.
    -Type: Optional. +Type: optional.
    Intent: in.
    Specified as: an integer value $0<= m <= size(dat,1)$. -
    -When $dat$ is a rank 2 array, specifies the number of rows to be sent -independently of the leading dimension $size(dat,1)$; must have the -same value on sending and receiving processes. -
    + ALT="$-1<= root <= np-1$">, default -1. +

    @@ -129,20 +120,18 @@ same value on sending and receiving processes.

    dat
    -
    The data to be received. +
    On destination process(es), the result of the minimum operation.
    -Scope: local. +Scope: global.
    Type: required.
    Intent: inout.
    Specified as: an integer, real or complex variable, which may be a -scalar, or a rank 1 or 2 array, or a character or logical scalar. Type, kind and rank must agree on sender and receiver process; if $m$ is -not specified, size must agree as well. +scalar, or a rank 1 or 2 array. +
    +Type, kind, rank and size must agree on all processes.
    @@ -150,11 +139,11 @@ not specified, size must agree as well. Notes
      -
    1. This subroutine implies a synchronization, but only between the - calling process and the source process $src$. +
    2. The dat argument is both input and output, and its + value may be changed even on processes different from the final + result destination. +
    3. +
    4. The dat argument may also be a long integer scalar.
    @@ -162,26 +151,26 @@ not specified, size must agree as well. diff --git a/docs/html/node117.html b/docs/html/node117.html index 3f350078..765c6835 100644 --- a/docs/html/node117.html +++ b/docs/html/node117.html @@ -3,8 +3,8 @@ -Error handling - +psb_nrm2 -- Global 2-norm reduction + @@ -15,326 +15,194 @@ - - + + -

    -Error handling -

    +

    +psb_nrm2 -- Global 2-norm reduction +

    -The PSBLAS library error handling policy has been completely rewritten -in version 2.0. The idea behind the design of this new error handling -strategy is to keep error messages on a stack allowing the user to -trace back up to the point where the first error message has been -generated. Every routine in the PSBLAS-2.0 library has, as last -non-optional argument, an integer info variable; whenever, -inside the routine, an error is detected, this variable is set to a -value corresponding to a specific error code. Then this error code is -also pushed on the error stack and then either control is returned to -the caller routine or the execution is aborted, depending on the users -choice. At the time when the execution is aborted, an error message is -printed on standard output with a level of verbosity than can be -chosen by the user. If the execution is not aborted, then, the caller -routine checks the value returned in the info variable and, if -not zero, an error condition is raised. This process continues on all the -levels of nested calls until the level where the user decides to abort -the program execution. - -

    -Figure 9 shows the layout of a generic psb_foo -routine with respect to the PSBLAS-2.0 error handling policy. It is -possible to see how, whenever an error condition is detected, the -info variable is set to the corresponding error code which is, -then, pushed on top of the stack by means of the -psb_errpush. An error condition may be directly detected inside -a routine or indirectly checking the error code returned returned by a -called routine. Whenever an error is encountered, after it has been -pushed on stack, the program execution skips to a point where the -error condition is handled; the error condition is handled either by -returning control to the caller routine or by calling the -psb\_error routine which prints the content of the error stack -and aborts the program execution, according to the choice made by the -user with psb_set_erraction. The default is to print the error -and terminate the program, but the user may choose to handle the error -explicitly. - -

    - -

    - - - -
    Figure 9: -The layout of a generic psb_foo - routine with respect to PSBLAS-2.0 error handling policy.
    -
    - -
    - -\fbox{\TheSbox} -
    -
    - -

    -Figure 10 reports a sample error message generated by -the PSBLAS-2.0 library. This error has been generated by the fact that -the user has chosen the invalid “FOO” storage format to represent -the sparse matrix. From this error message it is possible to see that -the error has been detected inside the psb_cest subroutine -called by psb_spasb ... by process 0 (i.e. the root process). - -

    - -

    - - - -
    Figure 10: -A sample PSBLAS-2.0 error - message. Process 0 detected an error condition inside the psb_cest subroutine
    -
    - -
    - -\fbox{\TheSbox} -
    -
    - -

    -ifstarsubroutinesubroutinepsb_errpushPushes an error code onto the error - stack - -

    -
    -\begin{lstlisting}
-call psb_errpush(err_c, r_name, i_err, a_err)
-\end{lstlisting} -
    +

    +call psb_nrm2(icontxt, dat, root)
    +

    +This subroutine implements a 2-norm value reduction +operation based on the underlying communication library.

    Type:
    -
    Asynchronous. +
    Synchronous.
    -
    On Entry
    +
    On Entry
    -
    err_c
    -
    the error code +
    icontxt
    +
    the communication context identifying the virtual + parallel machine.
    -Scope: local +Scope: global.
    -Type: required +Type: required.
    Intent: in.
    -Specified as: an integer. +Specified as: an integer variable.
    -
    r_name
    -
    the soutine where the error has been caught. -
    -Scope: local -
    -Type: required -
    -Intent: in. -
    -Specified as: a string. -
    -
    i_err
    -
    addional info for error code -
    -Scope: local -
    -Type: optional -
    -Specified as: an integer array -
    -
    a_err
    -
    addional info for error code -
    -Scope: local +
    dat
    +
    The local contribution to the global minimum.
    -Type: optional +Scope: local.
    -Specified as: a string. -
    -
    - -

    -ifstarsubroutinesubroutinepsb_errorPrints the error stack content and aborts - execution - -

    +Type: required.
    -\begin{lstlisting}
-call psb_error(icontxt)
-\end{lstlisting} +Intent: inout.
    - -

    -

    -
    Type:
    -
    Asynchronous. +Specified as: a real variable, which may be a +scalar, or a rank 1 array. Kind, rank and size must agree on all processes.
    -
    On Entry
    -
    -
    -
    icontxt
    -
    the communication context. +
    root
    +
    Process to hold the final value, or $-1$ to make it available + on all processes.
    -Scope: global +Scope: global.
    -Type: optional +Type: optional.
    Intent: in.
    -Specified as: an integer. -
    +Specified as: an integer value +$-1<= root <= np-1$, default -1. +
    -

    -ifstarsubroutinesubroutinepsb_set_errverbositySets the verbosity of error - messages. - -

    -
    -\begin{lstlisting}
-call psb_set_errverbosity(v)
-\end{lstlisting} -
    -

    -
    Type:
    -
    Asynchronous. -
    -
    On Entry
    +
    On Return
    -
    v
    -
    the verbosity level +
    dat
    +
    On destination process(es), the result of the 2-norm reduction.
    -Scope: global +Scope: global.
    -Type: required +Type: required.
    -Intent: in. +Intent: inout. +
    +Specified as: a real variable, which may be a +scalar, or a rank 1 array.
    -Specified as: an integer. +Kind, rank and size must agree on all processes.

    -ifstarsubroutinesubroutinepsb_set_erractionSet the type of action to be - taken upon error condition. +Notes + +

      +
    1. This reduction is appropriate to compute the results of multiple + (local) NRM2 operations at the same time. +
    2. +
    3. Denoting by $dat_i$ the value of the variable $dat$ on process + $i$, the output $res$ is equivalent to the computation of +

      +
      + -

      -
      \begin{lstlisting}
-call psb_set_erraction(err_act)
-\end{lstlisting} -
      - -

      -

      -
      Type:
      -
      Asynchronous. -
      -
      On Entry
      -
      -
      -
      err_act
      -
      the type of action. -
      -Scope: global -
      -Type: required -
      -Intent: in. -
      -Specified as: an integer. Possible values: psb_act_ret, -psb_act_abort. -
      -
      + WIDTH="119" HEIGHT="55" BORDER="0" + SRC="img150.png" + ALT="\begin{displaymath}res = \sqrt{\sum_i dat_i^2},\end{displaymath}"> +
      +
      +

      +with care taken to avoid unnecessary overflow. +
    4. +
    5. The dat argument is both input and output, and its + value may be changed even on processes different from the final + result destination. +
    6. +

    diff --git a/docs/html/node118.html b/docs/html/node118.html index 9e19b009..43baeea3 100644 --- a/docs/html/node118.html +++ b/docs/html/node118.html @@ -3,8 +3,8 @@ -Utilities - +psb_snd -- Send data + @@ -14,78 +14,177 @@ - + - + -

    - +

    +psb_snd -- Send data +

    + +

    +

    +call psb_snd(icontxt, dat, dst, m)
    +
    + +

    +This subroutine sends a packet of data to a destination. +

    +
    Type:
    +
    Synchronous: see usage notes. +
    +
    On Entry
    +
    +
    +
    icontxt
    +
    the communication context identifying the virtual + parallel machine. +
    +Scope: global. +
    +Type: required. +
    +Intent: in. +
    +Specified as: an integer variable. +
    +
    dat
    +
    The data to be sent. +
    +Scope: local. +
    +Type: required. +
    +Intent: in. +
    +Specified as: an integer, real or complex variable, which may be a +scalar, or a rank 1 or 2 array, or a character or logical scalar. Type, kind and rank must agree on sender and receiver process; if $m$ is +not specified, size must agree as well. +
    +
    dst
    +
    Destination process. +
    +Scope: global. +
    +Type: required. +
    +Intent: in. +
    +Specified as: an integer value +$0<= dst <= np-1$. +
    +
    m
    +
    Number of rows.
    -Utilities - +Scope: global. +
    +Type: Optional. +
    +Intent: in. +
    +Specified as: an integer value +$0<= m <= size(dat,1)$. +
    +When $dat$ is a rank 2 array, specifies the number of rows to be sent +independently of the leading dimension $size(dat,1)$; must have the +same value on sending and receiving processes. +
    +

    -We have some utilities available for input and output of -sparse matrices; the interfaces to these routines are available in the -module psb_util_mod. +

    +
    On Return
    +
    +
    +

    -


    - -Subsections +Notes - - -

    +
      +
    1. This subroutine implies a synchronization, but only between the + calling process and the destination process $dst$. +
    2. +
    + +

    + +

    + diff --git a/docs/html/node119.html b/docs/html/node119.html index 31f1fbaf..2d94be94 100644 --- a/docs/html/node119.html +++ b/docs/html/node119.html @@ -3,8 +3,8 @@ -hb_read -- Read a sparse matrix from a file in the Harwell-Boeing format - +psb_rcv -- Receive data + @@ -14,78 +14,112 @@ - - + -

    - hb_read -- Read a sparse matrix from a file in the - Harwell-Boeing format +

    +psb_rcv -- Receive data

    -
    -\begin{lstlisting}
-call hb_read(a, iret, iunit, filename, b, mtitle)
-\end{lstlisting} -
    +

    +call psb_rcv(icontxt, dat, src, m)
    +

    +This subroutine receives a packet of data to a destination.

    Type:
    -
    Asynchronous. +
    Synchronous: see usage notes.
    On Entry
    -
    filename
    -
    The name of the file to be read. +
    icontxt
    +
    the communication context identifying the virtual + parallel machine.
    -Type:optional. +Scope: global.
    -Specified as: a character variable containing a valid file name, or --, in which case the default input unit 5 (i.e. standard input -in Unix jargon) is used. Default: -. -
    -
    iunit
    -
    The Fortran file unit number. +Type: required.
    -Type:optional. +Intent: in.
    -Specified as: an integer value. Only meaningful if filename is not -. +Specified as: an integer variable. +
    +
    src
    +
    Source process. +
    +Scope: global. +
    +Type: required. +
    +Intent: in. +
    +Specified as: an integer value +$0<= src <= np-1$. +
    +
    m
    +
    Number of rows. +
    +Scope: global. +
    +Type: Optional. +
    +Intent: in. +
    +Specified as: an integer value +$0<= m <= size(dat,1)$. +
    +When $dat$ is a rank 2 array, specifies the number of rows to be sent +independently of the leading dimension $size(dat,1)$; must have the +same value on sending and receiving processes.
    @@ -94,64 +128,60 @@ Specified as: an integer value. Only meaningful if filename is not -On Return
    -
    a
    -
    the sparse matrix read from file. +
    dat
    +
    The data to be received.
    -Type:required. +Scope: local.
    -Specified as: a structured data of type spdatapsb_Tspmat_type. -
    -
    b
    -
    Rigth hand side(s). +Type: required.
    -Type: Optional +Intent: inout.
    -An array of type real or complex, rank 2 and having the ALLOCATABLE -attribute; will be allocated and filled in if the input file contains -a right hand side, otherwise will be left in the UNALLOCATED state. -
    -
    mtitle
    -
    Matrix title. -
    -Type: Optional -
    -A charachter variable of length 72 holding a copy of the -matrix title as specified by the Harwell-Boeing format and contained -in the input file. -
    -
    iret
    -
    Error code. -
    -Type: required -
    -An integer value; 0 means no error has been detected. +Specified as: an integer, real or complex variable, which may be a +scalar, or a rank 1 or 2 array, or a character or logical scalar. Type, kind and rank must agree on sender and receiver process; if $m$ is +not specified, size must agree as well.
    +

    +Notes + +

      +
    1. This subroutine implies a synchronization, but only between the + calling process and the source process $src$. +
    2. +
    +

    diff --git a/docs/html/node12.html b/docs/html/node12.html index 165f326d..019a46a1 100644 --- a/docs/html/node12.html +++ b/docs/html/node12.html @@ -23,26 +23,26 @@ @@ -84,7 +84,7 @@ Scope: local. $|{\cal I}_i| + |{\cal B}_i|$ --> $\vert{\cal I}_i\vert + \vert{\cal B}_i\vert$. The returned value is specific to the calling process. diff --git a/docs/html/node120.html b/docs/html/node120.html index 11e1a5b6..21a186b7 100644 --- a/docs/html/node120.html +++ b/docs/html/node120.html @@ -3,8 +3,8 @@ -hb_write -- Write a sparse matrix to a file in the Harwell-Boeing format - +Error handling + @@ -15,51 +15,143 @@ - - + + -

    -hb_write -- Write a sparse matrix to a file - in the Harwell-Boeing format -

    +

    +Error handling +

    + +

    +The PSBLAS library error handling policy has been completely rewritten +in version 2.0. The idea behind the design of this new error handling +strategy is to keep error messages on a stack allowing the user to +trace back up to the point where the first error message has been +generated. Every routine in the PSBLAS-2.0 library has, as last +non-optional argument, an integer info variable; whenever, +inside the routine, an error is detected, this variable is set to a +value corresponding to a specific error code. Then this error code is +also pushed on the error stack and then either control is returned to +the caller routine or the execution is aborted, depending on the users +choice. At the time when the execution is aborted, an error message is +printed on standard output with a level of verbosity than can be +chosen by the user. If the execution is not aborted, then, the caller +routine checks the value returned in the info variable and, if +not zero, an error condition is raised. This process continues on all the +levels of nested calls until the level where the user decides to abort +the program execution. + +

    +Figure 9 shows the layout of a generic psb_foo +routine with respect to the PSBLAS-2.0 error handling policy. It is +possible to see how, whenever an error condition is detected, the +info variable is set to the corresponding error code which is, +then, pushed on top of the stack by means of the +psb_errpush. An error condition may be directly detected inside +a routine or indirectly checking the error code returned returned by a +called routine. Whenever an error is encountered, after it has been +pushed on stack, the program execution skips to a point where the +error condition is handled; the error condition is handled either by +returning control to the caller routine or by calling the +psb\_error routine which prints the content of the error stack +and aborts the program execution, according to the choice made by the +user with psb_set_erraction. The default is to print the error +and terminate the program, but the user may choose to handle the error +explicitly. + +

    + +

    + + + +
    Figure 9: +The layout of a generic psb_foo + routine with respect to PSBLAS-2.0 error handling policy.
    +
    + +
    + +\fbox{\TheSbox} +
    +
    + +

    +Figure 10 reports a sample error message generated by +the PSBLAS-2.0 library. This error has been generated by the fact that +the user has chosen the invalid “FOO” storage format to represent +the sparse matrix. From this error message it is possible to see that +the error has been detected inside the psb_cest subroutine +called by psb_spasb ... by process 0 (i.e. the root process). + +

    + +

    + + + +
    Figure 10: +A sample PSBLAS-2.0 error + message. Process 0 detected an error condition inside the psb_cest subroutine
    +
    + +
    + +\fbox{\TheSbox} +
    +
    + +

    +ifstarsubroutinesubroutinepsb_errpushPushes an error code onto the error + stack


    \begin{lstlisting}
-call hb_write(a, iret, iunit, filename, key, rhs, mtitle)
+call psb_errpush(err_c, r_name, i_err, a_err)
 \end{lstlisting}
    @@ -68,72 +160,154 @@ call hb_write(a, iret, iunit, filename, key, rhs, mtitle)

    Type:
    Asynchronous.
    -
    On Entry
    +
    On Entry
    -
    a
    -
    the sparse matrix to be written. +
    err_c
    +
    the error code
    -Type:required. +Scope: local
    -Specified as: a structured data of type spdatapsb_Tspmat_type. -
    -
    b
    -
    Rigth hand side. +Type: required
    -Type: Optional +Intent: in.
    -An array of type real or complex, rank 1 and having the ALLOCATABLE -attribute; will be allocated and filled in if the input file contains -a right hand side. +Specified as: an integer.
    -
    filename
    -
    The name of the file to be written to. +
    r_name
    +
    the soutine where the error has been caught. +
    +Scope: local +
    +Type: required
    -Type:optional. +Intent: in.
    -Specified as: a character variable containing a valid file name, or --, in which case the default output unit 6 (i.e. standard output -in Unix jargon) is used. Default: -. +Specified as: a string. +
    +
    i_err
    +
    addional info for error code +
    +Scope: local +
    +Type: optional +
    +Specified as: an integer array +
    +
    a_err
    +
    addional info for error code +
    +Scope: local +
    +Type: optional +
    +Specified as: a string. +
    + + +

    +ifstarsubroutinesubroutinepsb_errorPrints the error stack content and aborts + execution + +

    +
    +\begin{lstlisting}
+call psb_error(icontxt)
+\end{lstlisting} +
    + +

    +

    +
    Type:
    +
    Asynchronous.
    -
    iunit
    -
    The Fortran file unit number. +
    On Entry
    +
    +
    +
    icontxt
    +
    the communication context. +
    +Scope: global
    -Type:optional. +Type: optional
    -Specified as: an integer value. Only meaningful if filename is not -. +Intent: in. +
    +Specified as: an integer.
    -
    key
    -
    Matrix key. +
    + +

    +ifstarsubroutinesubroutinepsb_set_errverbositySets the verbosity of error + messages. + +


    -Type: Optional +\begin{lstlisting}
+call psb_set_errverbosity(v)
+\end{lstlisting}
    -A charachter variable of length 8 holding the -matrix key as specified by the Harwell-Boeing format and to be -written to file. + +

    +

    +
    Type:
    +
    Asynchronous.
    -
    mtitle
    -
    Matrix title. +
    On Entry
    +
    +
    +
    v
    +
    the verbosity level +
    +Scope: global
    -Type: Optional +Type: required
    -A charachter variable of length 72 holding the -matrix title as specified by the Harwell-Boeing format and to be -written to file. +Intent: in. +
    +Specified as: an integer.
    +

    +ifstarsubroutinesubroutinepsb_set_erractionSet the type of action to be + taken upon error condition. + +

    +
    +\begin{lstlisting}
+call psb_set_erraction(err_act)
+\end{lstlisting} +
    +

    -
    On Return
    +
    Type:
    +
    Asynchronous. +
    +
    On Entry
    -
    iret
    -
    Error code. +
    err_act
    +
    the type of action. +
    +Scope: global +
    +Type: required
    -Type: required +Intent: in.
    -An integer value; 0 means no error has been detected. +Specified as: an integer. Possible values: psb_act_ret, +psb_act_abort.
    @@ -141,26 +315,26 @@ An integer value; 0 means no error has been detected. diff --git a/docs/html/node121.html b/docs/html/node121.html index 2854dbbe..384e43c7 100644 --- a/docs/html/node121.html +++ b/docs/html/node121.html @@ -3,8 +3,8 @@ -mm_mat_read -- Read a sparse matrix from a file in the MatrixMarket format - +Utilities + @@ -14,103 +14,77 @@ - + - + -

    -mm_mat_read -- Read a sparse matrix from a - file in the MatrixMarket format -

    - -

    -
    -\begin{lstlisting}
-call mm_mat_read(a, iret, iunit, filename)
-\end{lstlisting} +

    +
    +Utilities +

    -

    -
    Type:
    -
    Asynchronous. -
    -
    On Entry
    -
    -
    -
    filename
    -
    The name of the file to be read. -
    -Type:optional. -
    -Specified as: a character variable containing a valid file name, or --, in which case the default input unit 5 (i.e. standard input -in Unix jargon) is used. Default: -. -
    -
    iunit
    -
    The Fortran file unit number. -
    -Type:optional. -
    -Specified as: an integer value. Only meaningful if filename is not -. -
    -
    +We have some utilities available for input and output of +sparse matrices; the interfaces to these routines are available in the +module psb_util_mod.

    -

    -
    On Return
    -
    -
    -
    a
    -
    the sparse matrix read from file. -
    -Type:required. -
    -Specified as: a structured data of type spdatapsb_Tspmat_type. -
    -
    iret
    -
    Error code. -
    -Type: required -
    -An integer value; 0 means no error has been detected. -
    -
    +

    + +Subsections -

    +

    +

    diff --git a/docs/html/node122.html b/docs/html/node122.html index 5a57cd34..b3438b33 100644 --- a/docs/html/node122.html +++ b/docs/html/node122.html @@ -3,8 +3,8 @@ -mm_array_read -- Read a dense array from a file in the MatrixMarket format - +hb_read -- Read a sparse matrix from a file in the Harwell-Boeing format + @@ -16,50 +16,50 @@ - + -

    -mm_array_read -- Read a dense array from a - file in the MatrixMarket format +

    + hb_read -- Read a sparse matrix from a file in the + Harwell-Boeing format


    \begin{lstlisting}
-call mm_array_read(b, iret, iunit, filename)
+call hb_read(a, iret, iunit, filename, b, mtitle)
 \end{lstlisting}
    @@ -94,15 +94,31 @@ Specified as: an integer value. Only meaningful if filename is not -On Return

    +
    a
    +
    the sparse matrix read from file. +
    +Type:required. +
    +Specified as: a structured data of type spdatapsb_Tspmat_type. +
    b
    Rigth hand side(s).
    -Type: required +Type: Optional
    -An array of type real or complex, rank 1 or 2 and having the ALLOCATABLE +An array of type real or complex, rank 2 and having the ALLOCATABLE attribute; will be allocated and filled in if the input file contains a right hand side, otherwise will be left in the UNALLOCATED state.
    +
    mtitle
    +
    Matrix title. +
    +Type: Optional +
    +A charachter variable of length 72 holding a copy of the +matrix title as specified by the Harwell-Boeing format and contained +in the input file. +
    iret
    Error code.
    @@ -113,7 +129,31 @@ An integer value; 0 means no error has been detected.

    -


    + + + diff --git a/docs/html/node123.html b/docs/html/node123.html index 4dd5f34e..f8e65c33 100644 --- a/docs/html/node123.html +++ b/docs/html/node123.html @@ -3,8 +3,8 @@ -mm_mat_write -- Write a sparse matrix to a file in the MatrixMarket format - +hb_write -- Write a sparse matrix to a file in the Harwell-Boeing format + @@ -16,52 +16,54 @@ - + -

    -mm_mat_write -- Write a sparse matrix to a - file in the MatrixMarket format +

    +hb_write -- Write a sparse matrix to a file + in the Harwell-Boeing format


    \begin{lstlisting}
-call mm_mat_write(a, mtitle, iret, iunit, filename)
+call hb_write(a, iret, iunit, filename, key, rhs, mtitle)
 \end{lstlisting}
    + +

    Type:
    Asynchronous. @@ -76,13 +78,14 @@ Type:required.
    Specified as: a structured data of type spdatapsb_Tspmat_type.
    -
    mtitle
    -
    Matrix title. +
    b
    +
    Rigth hand side.
    -Type: required +Type: Optional
    -A charachter variable holding a descriptive title for the matrix to be - written to file. +An array of type real or complex, rank 1 and having the ALLOCATABLE +attribute; will be allocated and filled in if the input file contains +a right hand side.
    filename
    The name of the file to be written to. @@ -100,6 +103,24 @@ Type:optional.
    Specified as: an integer value. Only meaningful if filename is not -.
    +
    key
    +
    Matrix key. +
    +Type: Optional +
    +A charachter variable of length 8 holding the +matrix key as specified by the Harwell-Boeing format and to be +written to file. +
    +
    mtitle
    +
    Matrix title. +
    +Type: Optional +
    +A charachter variable of length 72 holding the +matrix title as specified by the Harwell-Boeing format and to be +written to file. +

    @@ -117,7 +138,31 @@ An integer value; 0 means no error has been detected.

    -


    + + + diff --git a/docs/html/node124.html b/docs/html/node124.html index e7e3f85f..f1307a9d 100644 --- a/docs/html/node124.html +++ b/docs/html/node124.html @@ -3,8 +3,8 @@ -mm_array_write -- Write a dense array from a file in the MatrixMarket format - +mm_mat_read -- Read a sparse matrix from a file in the MatrixMarket format + @@ -14,51 +14,52 @@ + - + -

    -mm_array_write -- Write a dense array from a +

    +mm_mat_read -- Read a sparse matrix from a file in the MatrixMarket format


    \begin{lstlisting}
-call mm_array_write(b, iret, iunit, filename)
+call mm_mat_read(a, iret, iunit, filename)
 \end{lstlisting}
    @@ -70,14 +71,8 @@ call mm_array_write(b, iret, iunit, filename)

    On Entry
    -
    b
    -
    Rigth hand side(s). -
    -Type: required -
    -An array of type real or complex, rank 1 or 2; will be written..
    filename
    -
    The name of the file to be written. +
    The name of the file to be read.
    Type:optional.
    @@ -99,6 +94,13 @@ Specified as: an integer value. Only meaningful if filename is not -On Return
    +
    a
    +
    the sparse matrix read from file. +
    +Type:required. +
    +Specified as: a structured data of type spdatapsb_Tspmat_type. +
    iret
    Error code.
    diff --git a/docs/html/node125.html b/docs/html/node125.html index 0b67b710..07ecfc91 100644 --- a/docs/html/node125.html +++ b/docs/html/node125.html @@ -3,8 +3,8 @@ -Preconditioner routines - +mm_array_read -- Read a dense array from a file in the MatrixMarket format + @@ -14,84 +14,105 @@ - - - + + + -

    - -
    -Preconditioner routines -

    +

    +mm_array_read -- Read a dense array from a + file in the MatrixMarket format +

    -The base PSBLAS library contains the implementation of two simple -preconditioning techniques: +
    +\begin{lstlisting}
+call mm_array_read(b, iret, iunit, filename)
+\end{lstlisting} +
    -

      -
    • Diagonal Scaling -
    • -
    • Block Jacobi with ILU(0) factorization -
    • -
    -The supporting data type and subroutine interfaces are defined in the -module psb_prec_mod. -The old interfaces psb_precinit and psb_precbld are still supported for -backward compatibility +

    +

    +
    Type:
    +
    Asynchronous. +
    +
    On Entry
    +
    +
    +
    filename
    +
    The name of the file to be read. +
    +Type:optional. +
    +Specified as: a character variable containing a valid file name, or +-, in which case the default input unit 5 (i.e. standard input +in Unix jargon) is used. Default: -. +
    +
    iunit
    +
    The Fortran file unit number. +
    +Type:optional. +
    +Specified as: an integer value. Only meaningful if filename is not -. +
    +

    -


    - -Subsections +
    +
    On Return
    +
    +
    +
    b
    +
    Rigth hand side(s). +
    +Type: required +
    +An array of type real or complex, rank 1 or 2 and having the ALLOCATABLE +attribute; will be allocated and filled in if the input file contains +a right hand side, otherwise will be left in the UNALLOCATED state. +
    +
    iret
    +
    Error code. +
    +Type: required +
    +An integer value; 0 means no error has been detected. +
    +
    - - +



    diff --git a/docs/html/node126.html b/docs/html/node126.html index aa0d47e7..6f5c409c 100644 --- a/docs/html/node126.html +++ b/docs/html/node126.html @@ -3,8 +3,8 @@ -init -- Initialize a preconditioner - +mm_mat_write -- Write a sparse matrix to a file in the MatrixMarket format + @@ -16,130 +16,103 @@ - + -

    -init -- Initialize a preconditioner +

    +mm_mat_write -- Write a sparse matrix to a + file in the MatrixMarket format

    -

    -call prec%init(icontxt,ptype, info)
    -
    - -

    +
    +\begin{lstlisting}
+call mm_mat_write(a, mtitle, iret, iunit, filename)
+\end{lstlisting} +

    Type:
    Asynchronous.
    -
    On Entry
    +
    On Entry
    -
    icontxt
    -
    the communication context. -
    -Scope:global. +
    a
    +
    the sparse matrix to be written.
    Type:required.
    -Intent: in. -
    -Specified as: an integer value. +Specified as: a structured data of type spdatapsb_Tspmat_type.
    -
    ptype
    -
    the type of preconditioner. -Scope: global +
    mtitle
    +
    Matrix title.
    -Type: required +Type: required
    -Intent: in. -
    -Specified as: a character string, see usage notes. -
    -
    On Exit
    -

    +A charachter variable holding a descriptive title for the matrix to be + written to file.

    -
    prec
    -
    Scope: local +
    filename
    +
    The name of the file to be written to.
    -Type: required +Type:optional.
    -Intent: inout. -
    -Specified as: a preconditioner data structure precdatapsb_prec_type. +Specified as: a character variable containing a valid file name, or +-, in which case the default output unit 6 (i.e. standard output +in Unix jargon) is used. Default: -.
    -
    info
    -
    Scope: global -
    -Type: required +
    iunit
    +
    The Fortran file unit number.
    -Intent: out. +Type:optional.
    -Error code: if no error, 0 is returned. +Specified as: an integer value. Only meaningful if filename is not -.
    -Notes -Legal inputs to this subroutine are interpreted depending on the -$ptype$ string as follows4: + +

    -
    NONE
    -
    No preconditioning, i.e. the preconditioner is just a copy - operator. -
    -
    DIAG
    -
    Diagonal scaling; each entry of the input vector is - multiplied by the reciprocal of the sum of the absolute values of - the coefficients in the corresponding row of matrix $A$; +
    On Return
    +
    -
    BJAC
    -
    Precondition by a factorization of the - block-diagonal of matrix $A$, where block boundaries are determined - by the data allocation boundaries for each process; requires no - communication. Only the incomplete factorization $ILU(0)$ is - currently implemented. +
    iret
    +
    Error code. +
    +Type: required +
    +An integer value; 0 means no error has been detected.
    diff --git a/docs/html/node127.html b/docs/html/node127.html index e6a55901..2f598cdf 100644 --- a/docs/html/node127.html +++ b/docs/html/node127.html @@ -3,8 +3,8 @@ -build -- Builds a preconditioner - +mm_array_write -- Write a dense array from a file in the MatrixMarket format + @@ -14,120 +14,83 @@ - - + -

    -build -- Builds a preconditioner +

    +mm_array_write -- Write a dense array from a + file in the MatrixMarket format

    -

    -call prec%build(a, desc_a, info[,amold,vmold,imold])
    -
    +
    +\begin{lstlisting}
+call mm_array_write(b, iret, iunit, filename)
+\end{lstlisting} +

    Type:
    -
    Synchronous. +
    Asynchronous.
    -
    On Entry
    +
    On Entry
    -
    a
    -
    the system sparse matrix. -Scope: local -
    -Type: required -
    -Intent: in, target. -
    -Specified as: a sparse matrix data structure spdatapsb_Tspmat_type. -
    -
    prec
    -
    the preconditioner. -
    -Scope: local -
    -Type: required -
    -Intent: inout. -
    -Specified as: an already initialized precondtioner data structure precdatapsb_prec_type -
    -
    desc_a
    -
    the problem communication descriptor. -Scope: local -
    -Type: required -
    -Intent: in, target. -
    -Specified as: a communication descriptor data structure descdatapsb_desc_type. -
    -
    amold
    -
    The desired dynamic type for the internal matrix storage. -
    -Scope: local. -
    -Type: optional. -
    -Intent: in. -
    -Specified as: an object of a class derived from spbasedatapsb_T_base_sparse_mat. -
    -
    vmold
    -
    The desired dynamic type for the internal vector storage. +
    b
    +
    Rigth hand side(s).
    -Scope: local. +Type: required
    -Type: optional. +An array of type real or complex, rank 1 or 2; will be written..
    +
    filename
    +
    The name of the file to be written.
    -Intent: in. +Type:optional.
    -Specified as: an object of a class derived from vbasedatapsb_T_base_vect_type. +Specified as: a character variable containing a valid file name, or +-, in which case the default input unit 5 (i.e. standard input +in Unix jargon) is used. Default: -.
    -
    imold
    -
    The desired dynamic type for the internal integer vector storage. -
    -Scope: local. -
    -Type: optional. +
    iunit
    +
    The Fortran file unit number.
    -Intent: in. +Type:optional.
    -Specified as: an object of a class derived from (integer) vbasedatapsb_T_base_vect_type. +Specified as: an integer value. Only meaningful if filename is not -.
    @@ -136,59 +99,17 @@ Specified as: an object of a class derived from (integer) vbasedatapsb_T_bas
    On Return
    -
    prec
    -
    the preconditioner. -
    -Scope: local -
    -Type: required -
    -Intent: inout. -
    -Specified as: a precondtioner data structure precdatapsb_prec_type -
    -
    info
    +
    iret
    Error code.
    -Scope: local -
    Type: required
    -Intent: out. -
    An integer value; 0 means no error has been detected.
    -The amold, vmold and imold arguments may be -employed to interface with special devices, such as GPUs and other -accelerators.

    - -

    - +

    diff --git a/docs/html/node128.html b/docs/html/node128.html index d6071c08..06233ef9 100644 --- a/docs/html/node128.html +++ b/docs/html/node128.html @@ -3,8 +3,8 @@ -apply -- Preconditioner application routine - +Preconditioner routines + @@ -14,139 +14,84 @@ - - - + + + -

    -apply -- Preconditioner application - routine -

    +

    + +
    +Preconditioner routines +

    -

    -call prec%apply(x,y,desc_a,info,trans,work)
    -call prec%apply(x,desc_a,info,trans)
    -
    +The base PSBLAS library contains the implementation of two simple +preconditioning techniques: -

    -

    -
    Type:
    -
    Synchronous. -
    -
    On Entry
    -
    -
    -
    prec
    -
    the preconditioner. -Scope: local -
    -Type: required -
    -Intent: in. -
    -Specified as: a preconditioner data structure precdatapsb_prec_type. -
    -
    x
    -
    the source vector. -Scope: local -
    -Type: required -
    -Intent: inout. -
    -Specified as: a rank one array or an object of type vdatapsb_T_vect_type. -
    -
    desc_a
    -
    the problem communication descriptor. -Scope: local -
    -Type: required -
    -Intent: in. -
    -Specified as: a communication data structure descdatapsb_desc_type. -
    -
    trans
    -
    Scope: -
    -Type: optional -
    -Intent: in. -
    -Specified as: a character. -
    -
    work
    -
    an optional work space -Scope: local -
    -Type: optional -
    -Intent: inout. -
    -Specified as: a double precision array. -
    -
    +
      +
    • Diagonal Scaling +
    • +
    • Block Jacobi with ILU(0) factorization +
    • +
    +The supporting data type and subroutine interfaces are defined in the +module psb_prec_mod. +The old interfaces psb_precinit and psb_precbld are still supported for +backward compatibility

    -

    -
    On Return
    -
    -
    -
    y
    -
    the destination vector. -Scope: local -
    -Type: required -
    -Intent: inout. -
    -Specified as: a rank one array or an object of type vdatapsb_T_vect_type. -
    -
    info
    -
    Error code. -
    -Scope: local -
    -Type: required -
    -Intent: out. -
    -An integer value; 0 means no error has been detected. -
    -
    +

    + +Subsections -

    +

    +

    diff --git a/docs/html/node129.html b/docs/html/node129.html index de6f38ea..0ff25da7 100644 --- a/docs/html/node129.html +++ b/docs/html/node129.html @@ -3,8 +3,8 @@ -descr -- Prints a description of current preconditioner - +init -- Initialize a preconditioner + @@ -16,47 +16,45 @@ - + -

    -descr -- Prints a description of current - preconditioner +

    +init -- Initialize a preconditioner

    -call prec%descr()
    -call prec%descr(iout, root)
    +call prec%init(icontxt,ptype, info)
     

    @@ -67,43 +65,81 @@ call prec%descr(iout, root)

    On Entry
    -
    prec
    -
    the preconditioner. -Scope: local +
    icontxt
    +
    the communication context.
    -Type: required +Scope:global. +
    +Type:required.
    Intent: in.
    -Specified as: a preconditioner data structure precdatapsb_prec_type. +Specified as: an integer value.
    -
    iout
    -
    output unit. -Scope: local +
    ptype
    +
    the type of preconditioner. +Scope: global
    -Type: optional +Type: required
    Intent: in.
    -Specified as: an integer number. Default: default output unit. +Specified as: a character string, see usage notes.
    -
    root
    -
    Process from which to print -Scope: local +
    On Exit
    +

    +

    +
    prec
    +
    Scope: local
    -Type: optional +Type: required
    -Intent: in. +Intent: inout.
    -Specified as: an integer number between 0 and $np-1$, in which case -the specified process will print the description, or $-1$, in which case -all processes will print. Default: 0. +Specified as: a preconditioner data structure precdatapsb_prec_type. +
    +
    info
    +
    Scope: global +
    +Type: required +
    +Intent: out. +
    +Error code: if no error, 0 is returned. +
    + +Notes +Legal inputs to this subroutine are interpreted depending on the +$ptype$ string as follows4: +
    +
    NONE
    +
    No preconditioning, i.e. the preconditioner is just a copy + operator. +
    +
    DIAG
    +
    Diagonal scaling; each entry of the input vector is + multiplied by the reciprocal of the sum of the absolute values of + the coefficients in the corresponding row of matrix $A$; +
    +
    BJAC
    +
    Precondition by a factorization of the + block-diagonal of matrix $A$, where block boundaries are determined + by the data allocation boundaries for each process; requires no + communication. Only the incomplete factorization $ILU(0)$ is + currently implemented.
    diff --git a/docs/html/node13.html b/docs/html/node13.html index 0fdc4242..bbbcaa1b 100644 --- a/docs/html/node13.html +++ b/docs/html/node13.html @@ -23,26 +23,26 @@ @@ -85,7 +85,7 @@ Scope: local. $|{\cal I}_i| + |{\cal B}_i| +|{\cal H}_i|$ --> $\vert{\cal I}_i\vert + \vert{\cal B}_i\vert +\vert{\cal H}_i\vert$. The returned value is specific to the calling process. diff --git a/docs/html/node130.html b/docs/html/node130.html index 8cad168c..532b6c53 100644 --- a/docs/html/node130.html +++ b/docs/html/node130.html @@ -3,8 +3,8 @@ -clone -- clone current preconditioner - +build -- Builds a preconditioner + @@ -16,60 +16,119 @@ - + -

    -clone -- clone current - preconditioner +

    +build -- Builds a preconditioner

    +

    -call  prec%clone(precout,info)
    +call prec%build(a, desc_a, info[,amold,vmold,imold])
     

    Type:
    -
    Asynchronous. +
    Synchronous.
    On Entry
    +
    a
    +
    the system sparse matrix. +Scope: local +
    +Type: required +
    +Intent: in, target. +
    +Specified as: a sparse matrix data structure spdatapsb_Tspmat_type. +
    prec
    the preconditioner.
    -Scope: local. +Scope: local +
    +Type: required +
    +Intent: inout. +
    +Specified as: an already initialized precondtioner data structure precdatapsb_prec_type
    +
    desc_a
    +
    the problem communication descriptor. +Scope: local +
    +Type: required +
    +Intent: in, target. +
    +Specified as: a communication descriptor data structure descdatapsb_desc_type. +
    +
    amold
    +
    The desired dynamic type for the internal matrix storage. +
    +Scope: local. +
    +Type: optional. +
    +Intent: in. +
    +Specified as: an object of a class derived from spbasedatapsb_T_base_sparse_mat. +
    +
    vmold
    +
    The desired dynamic type for the internal vector storage. +
    +Scope: local. +
    +Type: optional. +
    +Intent: in. +
    +Specified as: an object of a class derived from vbasedatapsb_T_base_vect_type. +
    +
    imold
    +
    The desired dynamic type for the internal integer vector storage. +
    +Scope: local. +
    +Type: optional. +
    +Intent: in. +
    +Specified as: an object of a class derived from (integer) vbasedatapsb_T_base_vect_type. +

    @@ -77,16 +136,59 @@ Scope: local.

    On Return
    -
    precout
    -
    A copy of the input object. -
    +
    prec
    +
    the preconditioner. +
    +Scope: local +
    +Type: required +
    +Intent: inout. +
    +Specified as: a precondtioner data structure precdatapsb_prec_type +
    info
    -
    Return code. +
    Error code. +
    +Scope: local +
    +Type: required +
    +Intent: out. +
    +An integer value; 0 means no error has been detected.
    +The amold, vmold and imold arguments may be +employed to interface with special devices, such as GPUs and other +accelerators.

    -


    + + + diff --git a/docs/html/node131.html b/docs/html/node131.html index 2c00d6de..289b69ab 100644 --- a/docs/html/node131.html +++ b/docs/html/node131.html @@ -3,8 +3,8 @@ -free -- Free a preconditioner - +apply -- Preconditioner application routine + @@ -14,91 +14,137 @@ + - + -

    -free -- Free a preconditioner +

    +apply -- Preconditioner application + routine

    -call prec%free(info)
    +call prec%apply(x,y,desc_a,info,trans,work)
    +call prec%apply(x,desc_a,info,trans)
     

    Type:
    -
    Asynchronous. +
    Synchronous.
    On Entry
    prec
    the preconditioner. +Scope: local +
    +Type: required +
    +Intent: in.
    -Scope: local. +Specified as: a preconditioner data structure precdatapsb_prec_type. +
    +
    x
    +
    the source vector. +Scope: local
    Type: required
    Intent: inout.
    -Specified as: a preconditioner data structure precdatapsb_prec_type. +Specified as: a rank one array or an object of type vdatapsb_T_vect_type.
    -
    On Exit
    -

    +

    desc_a
    +
    the problem communication descriptor. +Scope: local +
    +Type: required +
    +Intent: in. +
    +Specified as: a communication data structure descdatapsb_desc_type.
    -
    prec
    -
    Scope: local +
    trans
    +
    Scope: +
    +Type: optional +
    +Intent: in. +
    +Specified as: a character. +
    +
    work
    +
    an optional work space +Scope: local +
    +Type: optional +
    +Intent: inout. +
    +Specified as: a double precision array. +
    +
    + +

    +

    +
    On Return
    +
    +
    +
    y
    +
    the destination vector. +Scope: local
    Type: required
    Intent: inout.
    -Specified as: a preconditioner data structure precdatapsb_prec_type. +Specified as: a rank one array or an object of type vdatapsb_T_vect_type.
    info
    -
    Scope: global +
    Error code.
    -Type: required +Scope: local +
    +Type: required
    Intent: out.
    -Error code: if no error, 0 is returned. +An integer value; 0 means no error has been detected.
    -Notes -Releases all internal storage.



    diff --git a/docs/html/node132.html b/docs/html/node132.html index 9c42bbe2..6244d986 100644 --- a/docs/html/node132.html +++ b/docs/html/node132.html @@ -3,8 +3,8 @@ -Iterative Methods - +descr -- Prints a description of current preconditioner + @@ -14,62 +14,100 @@ - - - + + + -

    - -
    -Iterative Methods -

    +

    +descr -- Prints a description of current + preconditioner +

    -In this chapter we provide routines for preconditioners and iterative -methods. The interfaces for Krylov subspace methods are available in -the module psb_krylov_mod. +

    +call prec%descr()
    +call prec%descr(iout, root)
    +

    -


    - -Subsections +
    +
    Type:
    +
    Asynchronous. +
    +
    On Entry
    +
    +
    +
    prec
    +
    the preconditioner. +Scope: local +
    +Type: required +
    +Intent: in. +
    +Specified as: a preconditioner data structure precdatapsb_prec_type. +
    +
    iout
    +
    output unit. +Scope: local +
    +Type: optional +
    +Intent: in. +
    +Specified as: an integer number. Default: default output unit. +
    +
    root
    +
    Process from which to print +Scope: local +
    +Type: optional +
    +Intent: in. +
    +Specified as: an integer number between 0 and $np-1$, in which case +the specified process will print the description, or $-1$, in which case +all processes will print. Default: 0. +
    +
    - - +



    diff --git a/docs/html/node133.html b/docs/html/node133.html index ba43c36f..fadd4e4b 100644 --- a/docs/html/node133.html +++ b/docs/html/node133.html @@ -3,8 +3,8 @@ -psb_krylov -- Krylov Methods Driver Routine - +clone -- clone current preconditioner + @@ -14,427 +14,79 @@ + - + -

    -
    -psb_krylov -- Krylov Methods Driver - Routine +

    +clone -- clone current + preconditioner

    -

    -This subroutine is a driver that provides a general interface for all -the Krylov-Subspace family methods implemented in PSBLAS version 2. - -

    -The stopping criterion can take the following values: -

    -
    1
    -
    normwise backward error in the infinity -norm; the iteration is stopped when -

    -
    - - -\begin{displaymath}err = \frac{\Vert r_i\Vert}{(\Vert A\Vert\Vert x_i\Vert+\Vert b\Vert)} < eps \end{displaymath} -
    -
    -

    -
    -
    2
    -
    Relative residual in the 2-norm; the iteration is stopped -when -

    -
    - - -\begin{displaymath}err = \frac{\Vert r_i\Vert}{\Vert b\Vert _2} < eps \end{displaymath} -
    -
    -

    -
    -
    3
    -
    Relative residual reduction in the 2-norm; the iteration is stopped -when -

    -
    - - -\begin{displaymath}err = \frac{\Vert r_i\Vert}{\Vert r_0\Vert _2} < eps \end{displaymath} -
    -
    -

    -
    -
    -The behaviour is controlled by the istop argument (see -later). In the above formulae, $x_i$ is the tentative solution and -$r_i=b-Ax_i$ the corresponding residual at the $i$-th iteration. - -

    -
    -\begin{lstlisting}
-call psb_krylov(method,a,prec,b,x,eps,desc_a,info,&
-& itmax,iter,err,itrace,irst,istop,cond)
-\end{lstlisting} -
    +

    +call  prec%clone(precout,info)
    +

    Type:
    -
    Synchronous. +
    Asynchronous.
    On Entry
    -
    method
    -
    a string that defines the iterative method to be - used. Supported values are: -
    -
    CG:
    -
    the Conjugate Gradient method; - -
    -
    CGS:
    -
    the Conjugate Gradient Stabilized method; - -

    -

    -
    GCR:
    -
    the Generalized Conjugate Residual method; - -
    -
    FCG:
    -
    the Flexible Conjugate Gradient method5; - -

    -

    -
    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. - -
    -
    -
    -
    a
    -
    the local portion of global sparse matrix -$A$. -
    -Scope: local -
    -Type: required -
    -Intent: in. -
    -Specified as: a structured data of type spdatapsb_Tspmat_type. -
    prec
    -
    The data structure containing the preconditioner. -
    -Scope: local -
    -Type: required -
    -Intent: in. -
    -Specified as: a structured data of type precdatapsb_prec_type. -
    -
    b
    -
    The RHS vector. -
    -Scope: local -
    -Type: required -
    -Intent: in. -
    -Specified as: a rank one array or an object of type vdatapsb_T_vect_type. -
    -
    x
    -
    The initial guess. -
    -Scope: local -
    -Type: required -
    -Intent: inout. -
    -Specified as: a rank one array or an object of type vdatapsb_T_vect_type. -
    -
    eps
    -
    The stopping tolerance. -
    -Scope: global -
    -Type: required -
    -Intent: in. -
    -Specified as: a real number. -
    -
    desc_a
    -
    contains data structures for communications. -
    -Scope: local -
    -Type: required -
    -Intent: in. -
    -Specified as: a structured data of type descdatapsb_desc_type. -
    -
    itmax
    -
    The maximum number of iterations to perform. +
    the preconditioner.
    -Scope: global -
    -Type: optional -
    -Intent: in. -
    -Default: $itmax = 1000$. -
    -Specified as: an integer variable $itmax \ge 1$. -
    -
    itrace
    -
    If $>0$ print out an informational message about - convergence every $itrace$ iterations. If $=0$ print a message in - case of convergence failure. -
    -Scope: global -
    -Type: optional -
    -Intent: in. -
    -Default: $itrace = -1$. +Scope: local.
    -
    irst
    -
    An integer specifying the restart parameter. -
    -Scope: global -
    -Type: optional. -
    -Intent: in. -
    -Values: $irst>0$. This is employed for the BiCGSTABL or RGMRES -methods, otherwise it is ignored. +

    -

    -
    istop
    -
    An integer specifying the stopping criterion. -
    -Scope: global -
    -Type: optional. -
    -Intent: in. -
    -Values: 1: use the normwise backward error, 2: use the scaled 2-norm -of the residual, 3: use the residual reduction in the 2-norm. Default: 2. -
    +
    On Return
    -
    x
    -
    The computed solution. -
    -Scope: local -
    -Type: required -
    -Intent: inout. -
    -Specified as: a rank one array or an object of type vdatapsb_T_vect_type. -
    -
    iter
    -
    The number of iterations performed. -
    -Scope: global -
    -Type: optional -
    -Intent: out. -
    -Returned as: an integer variable. -
    -
    err
    -
    The convergence estimate on exit. -
    -Scope: global -
    -Type: optional -
    -Intent: out. -
    -Returned as: a real number. -
    -
    cond
    -
    An estimate of the condition number of matrix $A$; only - available with the $CG$ method on real data. -
    -Scope: global -
    -Type: optional -
    -Intent: out. -
    -Returned as: a real number. A correct result will be greater than or -equal to one; if specified for non-real data, or an error occurred, -zero is returned. +
    precout
    +
    A copy of the input object.
    info
    -
    Error code. -
    -Scope: local -
    -Type: required -
    -Intent: out. -
    -An integer value; 0 means no error has been detected. +
    Return code.

    - -

    - -

    - -

    - -

    - +

    diff --git a/docs/html/node134.html b/docs/html/node134.html index fa6197a5..c98f860c 100644 --- a/docs/html/node134.html +++ b/docs/html/node134.html @@ -3,8 +3,8 @@ -Bibliography - +free -- Free a preconditioner + @@ -14,164 +14,91 @@ - - - + + +
    +
    - -

    -Bibliography -

    1 -
    - D. Barbieri, V. Cardellini, S. Filippone and D. Rouson -Design Patterns for Scientific Computations on Sparse Matrices, - HPSS 2011, Algorithms and Programming Tools for Next-Generation High-Performance Scientific Software, Bordeaux, Sep. 2011 + +

    +free -- Free a preconditioner +

    -

    2 -
    -G. Bella, S. Filippone, A. De Maio and M. Testa, -A Simulation Model for Forest Fires, -in J. Dongarra, K. Madsen, J. Wasniewski, editors, -Proceedings of PARA 04 Workshop on State of the Art -in Scientific Computing, pp. 546-553, Lecture Notes in Computer Science, -Springer, 2005. -

    3 -
    A. Buttari, D. di Serafino, P. D'Ambra, S. Filippone,
    -2LEV-D2P4: a package of high-performance preconditioners,
    -Applicable Algebra in Engineering, Communications and Computing, -Volume 18, Number 3, May, 2007, pp. 223-239 -

    4 -
    P. D'Ambra, S. Filippone, D. Di Serafino
    -On the Development of PSBLAS-based Parallel Two-level Schwarz Preconditioners -
    -Applied Numerical Mathematics, Elsevier Science, -Volume 57, Issues 11-12, November-December 2007, Pages 1181-1196. +
    +call prec%free(info)
    +

    -

    5 -
    - Dongarra, J. J., DuCroz, J., Hammarling, S. and Hanson, R., -An Extended Set of Fortran Basic Linear Algebra Subprograms, -ACM Trans. Math. Softw. vol. 14, 1-17, 1988. -

    6 -
    - Dongarra, J., DuCroz, J., Hammarling, S. and Duff, I., -A Set of level 3 Basic Linear Algebra Subprograms, -ACM Trans. Math. Softw. vol. 16, 1-17, 1990. -

    7 -
    -J. J. Dongarra and R. C. Whaley, -A User's Guide to the BLACS v. 1.1, -Lapack Working Note 94, Tech. Rep. UT-CS-95-281, University of -Tennessee, March 1995 (updated May 1997). -

    8 -
    -I. Duff, M. Marrone, G. Radicati and C. Vittoli, -Level 3 Basic Linear Algebra Subprograms for Sparse Matrices: -a User Level Interface, -ACM Transactions on Mathematical Software, 23(3), pp. 379-401, 1997. -

    9 -
    -I. Duff, M. Heroux and R. Pozo, -An Overview of the Sparse Basic Linear -Algebra Subprograms: the New Standard from the BLAS Technical Forum, -ACM Transactions on Mathematical Software, 28(2), pp. 239-267, 2002. -

    10 -
    -S. Filippone and M. Colajanni, -PSBLAS: A Library for Parallel Linear Algebra -Computation on Sparse Matrices, +
    +
    Type:
    +
    Asynchronous. +
    +
    On Entry
    +
    +
    +
    prec
    +
    the preconditioner.
    -ACM Transactions on Mathematical Software, 26(4), pp. 527-550, 2000. -

    11 -
    -S. Filippone and A. Buttari, -Object-Oriented Techniques for Sparse Matrix Computations in Fortran 2003, +Scope: local.
    -ACM Transactions on Mathematical Software, 38(4), 2012. -

    12 -
    -S. Filippone, P. D'Ambra, M. Colajanni, -Using a Parallel Library of Sparse Linear Algebra in a Fluid Dynamics -Applications Code on Linux Clusters, -in G. Joubert, A. Murli, F. Peters, M. Vanneschi, editors, -Parallel Computing - Advances & Current Issues, -pp. 441-448, Imperial College Press, 2002. -

    13 -
    - Gamma, E., Helm, R., Johnson, R., and Vlissides, - J. 1995. - Design Patterns: Elements of Reusable Object-Oriented Software. - Addison-Wesley. - -

    -

    14 -
    -Karypis, G. and Kumar, V., -METIS: Unstructured Graph Partitioning and Sparse Matrix - Ordering System. -Minneapolis, MN 55455: University of Minnesota, Department of - Computer Science, 1995. -Internet Address: http://www.cs.umn.edu/~karypis. -

    15 -
    -Lawson, C., Hanson, R., Kincaid, D. and Krogh, F., - Basic Linear Algebra Subprograms for Fortran usage, -ACM Trans. Math. Softw. vol. 5, 38-329, 1979. - -

    -

    16 -
    -Machiels, L. and Deville, M. -Fortran 90: An entry to object-oriented programming for the solution - of partial differential equations. -ACM Trans. Math. Softw. vol. 23, 32-49. -

    17 -
    -Metcalf, M., Reid, J. and Cohen, M. -Fortran 95/2003 explained. -Oxford University Press, 2004. -

    18 -
    -Rouson, D.W.I., Xia, J., Xu, X.: Scientific Software Design: The - Object-Oriented Way. Cambridge University Press (2011) - -

    -

    19 -
    -M. Snir, S. Otto, S. Huss-Lederman, D. Walker and J. Dongarra, -MPI: The Complete Reference. Volume 1 - The MPI Core, second edition, -MIT Press, 1998. +Type: required +
    +Intent: inout. +
    +Specified as: a preconditioner data structure precdatapsb_prec_type. +
    +
    On Exit
    +

    +

    +
    prec
    +
    Scope: local +
    +Type: required +
    +Intent: inout. +
    +Specified as: a preconditioner data structure precdatapsb_prec_type. +
    +
    info
    +
    Scope: global +
    +Type: required +
    +Intent: out. +
    +Error code: if no error, 0 is returned. +
    +Notes +Releases all internal storage.



    diff --git a/docs/html/node135.html b/docs/html/node135.html index 29fee5d5..9dda9479 100644 --- a/docs/html/node135.html +++ b/docs/html/node135.html @@ -3,8 +3,8 @@ -About this document ... - +Iterative Methods + @@ -14,53 +14,62 @@ - + + + -

    -About this document ... -

    -

    -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. +Iterative Methods +

    +

    -The command line arguments were:
    - latex2html -local_icons -noaddress -dir ../../html userhtml.tex +In this chapter we provide routines for preconditioners and iterative +methods. The interfaces for Krylov subspace methods are available in +the module psb_krylov_mod. +

    -The translation was initiated on 2019-05-28 +


    + +Subsections + + +

    diff --git a/docs/html/node136.html b/docs/html/node136.html new file mode 100644 index 00000000..1899d05d --- /dev/null +++ b/docs/html/node136.html @@ -0,0 +1,440 @@ + + + + + +psb_krylov -- Krylov Methods Driver Routine + + + + + + + + + + + + + + + + + + + + +

    +
    +psb_krylov -- Krylov Methods Driver + Routine +

    + +

    +This subroutine is a driver that provides a general interface for all +the Krylov-Subspace family methods implemented in PSBLAS version 2. + +

    +The stopping criterion can take the following values: +

    +
    1
    +
    normwise backward error in the infinity +norm; the iteration is stopped when +

    +
    + + +\begin{displaymath}err = \frac{\Vert r_i\Vert}{(\Vert A\Vert\Vert x_i\Vert+\Vert b\Vert)} < eps \end{displaymath} +
    +
    +

    +
    +
    2
    +
    Relative residual in the 2-norm; the iteration is stopped +when +

    +
    + + +\begin{displaymath}err = \frac{\Vert r_i\Vert}{\Vert b\Vert _2} < eps \end{displaymath} +
    +
    +

    +
    +
    3
    +
    Relative residual reduction in the 2-norm; the iteration is stopped +when +

    +
    + + +\begin{displaymath}err = \frac{\Vert r_i\Vert}{\Vert r_0\Vert _2} < eps \end{displaymath} +
    +
    +

    +
    +
    +The behaviour is controlled by the istop argument (see +later). In the above formulae, $x_i$ is the tentative solution and +$r_i=b-Ax_i$ the corresponding residual at the $i$-th iteration. + +

    +
    +\begin{lstlisting}
+call psb_krylov(method,a,prec,b,x,eps,desc_a,info,&
+& itmax,iter,err,itrace,irst,istop,cond)
+\end{lstlisting} +
    + +

    +

    +
    Type:
    +
    Synchronous. +
    +
    On Entry
    +
    +
    +
    method
    +
    a string that defines the iterative method to be + used. Supported values are: +
    +
    CG:
    +
    the Conjugate Gradient method; + +
    +
    CGS:
    +
    the Conjugate Gradient Stabilized method; + +

    +

    +
    GCR:
    +
    the Generalized Conjugate Residual method; + +
    +
    FCG:
    +
    the Flexible Conjugate Gradient method5; + +

    +

    +
    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. + +
    +
    +
    +
    a
    +
    the local portion of global sparse matrix +$A$. +
    +Scope: local +
    +Type: required +
    +Intent: in. +
    +Specified as: a structured data of type spdatapsb_Tspmat_type. +
    +
    prec
    +
    The data structure containing the preconditioner. +
    +Scope: local +
    +Type: required +
    +Intent: in. +
    +Specified as: a structured data of type precdatapsb_prec_type. +
    +
    b
    +
    The RHS vector. +
    +Scope: local +
    +Type: required +
    +Intent: in. +
    +Specified as: a rank one array or an object of type vdatapsb_T_vect_type. +
    +
    x
    +
    The initial guess. +
    +Scope: local +
    +Type: required +
    +Intent: inout. +
    +Specified as: a rank one array or an object of type vdatapsb_T_vect_type. +
    +
    eps
    +
    The stopping tolerance. +
    +Scope: global +
    +Type: required +
    +Intent: in. +
    +Specified as: a real number. +
    +
    desc_a
    +
    contains data structures for communications. +
    +Scope: local +
    +Type: required +
    +Intent: in. +
    +Specified as: a structured data of type descdatapsb_desc_type. +
    +
    itmax
    +
    The maximum number of iterations to perform. +
    +Scope: global +
    +Type: optional +
    +Intent: in. +
    +Default: $itmax = 1000$. +
    +Specified as: an integer variable $itmax \ge 1$. +
    +
    itrace
    +
    If $>0$ print out an informational message about + convergence every $itrace$ iterations. If $=0$ print a message in + case of convergence failure. +
    +Scope: global +
    +Type: optional +
    +Intent: in. +
    +Default: $itrace = -1$. +
    +
    irst
    +
    An integer specifying the restart parameter. +
    +Scope: global +
    +Type: optional. +
    +Intent: in. +
    +Values: $irst>0$. This is employed for the BiCGSTABL or RGMRES +methods, otherwise it is ignored. + +

    +

    +
    istop
    +
    An integer specifying the stopping criterion. +
    +Scope: global +
    +Type: optional. +
    +Intent: in. +
    +Values: 1: use the normwise backward error, 2: use the scaled 2-norm +of the residual, 3: use the residual reduction in the 2-norm. Default: 2. +
    +
    On Return
    +
    +
    +
    x
    +
    The computed solution. +
    +Scope: local +
    +Type: required +
    +Intent: inout. +
    +Specified as: a rank one array or an object of type vdatapsb_T_vect_type. +
    +
    iter
    +
    The number of iterations performed. +
    +Scope: global +
    +Type: optional +
    +Intent: out. +
    +Returned as: an integer variable. +
    +
    err
    +
    The convergence estimate on exit. +
    +Scope: global +
    +Type: optional +
    +Intent: out. +
    +Returned as: a real number. +
    +
    cond
    +
    An estimate of the condition number of matrix $A$; only + available with the $CG$ method on real data. +
    +Scope: global +
    +Type: optional +
    +Intent: out. +
    +Returned as: a real number. A correct result will be greater than or +equal to one; if specified for non-real data, or an error occurred, +zero is returned. +
    +
    info
    +
    Error code. +
    +Scope: local +
    +Type: required +
    +Intent: out. +
    +An integer value; 0 means no error has been detected. +
    +
    + +

    + +

    + +

    + +

    + +

    + + + + diff --git a/docs/html/node137.html b/docs/html/node137.html new file mode 100644 index 00000000..4717ee2d --- /dev/null +++ b/docs/html/node137.html @@ -0,0 +1,180 @@ + + + + + +Bibliography + + + + + + + + + + + + + + + + + + + + + +

    +Bibliography +

    1 +
    + D. Barbieri, V. Cardellini, S. Filippone and D. Rouson +Design Patterns for Scientific Computations on Sparse Matrices, + HPSS 2011, Algorithms and Programming Tools for Next-Generation High-Performance Scientific Software, Bordeaux, Sep. 2011 + +

    +

    2 +
    +G. Bella, S. Filippone, A. De Maio and M. Testa, +A Simulation Model for Forest Fires, +in J. Dongarra, K. Madsen, J. Wasniewski, editors, +Proceedings of PARA 04 Workshop on State of the Art +in Scientific Computing, pp. 546-553, Lecture Notes in Computer Science, +Springer, 2005. +

    3 +
    A. Buttari, D. di Serafino, P. D'Ambra, S. Filippone,
    +2LEV-D2P4: a package of high-performance preconditioners,
    +Applicable Algebra in Engineering, Communications and Computing, +Volume 18, Number 3, May, 2007, pp. 223-239 +

    4 +
    P. D'Ambra, S. Filippone, D. Di Serafino
    +On the Development of PSBLAS-based Parallel Two-level Schwarz Preconditioners +
    +Applied Numerical Mathematics, Elsevier Science, +Volume 57, Issues 11-12, November-December 2007, Pages 1181-1196. + +

    +

    5 +
    + Dongarra, J. J., DuCroz, J., Hammarling, S. and Hanson, R., +An Extended Set of Fortran Basic Linear Algebra Subprograms, +ACM Trans. Math. Softw. vol. 14, 1-17, 1988. +

    6 +
    + Dongarra, J., DuCroz, J., Hammarling, S. and Duff, I., +A Set of level 3 Basic Linear Algebra Subprograms, +ACM Trans. Math. Softw. vol. 16, 1-17, 1990. +

    7 +
    +J. J. Dongarra and R. C. Whaley, +A User's Guide to the BLACS v. 1.1, +Lapack Working Note 94, Tech. Rep. UT-CS-95-281, University of +Tennessee, March 1995 (updated May 1997). +

    8 +
    +I. Duff, M. Marrone, G. Radicati and C. Vittoli, +Level 3 Basic Linear Algebra Subprograms for Sparse Matrices: +a User Level Interface, +ACM Transactions on Mathematical Software, 23(3), pp. 379-401, 1997. +

    9 +
    +I. Duff, M. Heroux and R. Pozo, +An Overview of the Sparse Basic Linear +Algebra Subprograms: the New Standard from the BLAS Technical Forum, +ACM Transactions on Mathematical Software, 28(2), pp. 239-267, 2002. +

    10 +
    +S. Filippone and M. Colajanni, +PSBLAS: A Library for Parallel Linear Algebra +Computation on Sparse Matrices, +
    +ACM Transactions on Mathematical Software, 26(4), pp. 527-550, 2000. +

    11 +
    +S. Filippone and A. Buttari, +Object-Oriented Techniques for Sparse Matrix Computations in Fortran 2003, +
    +ACM Transactions on Mathematical Software, 38(4), 2012. +

    12 +
    +S. Filippone, P. D'Ambra, M. Colajanni, +Using a Parallel Library of Sparse Linear Algebra in a Fluid Dynamics +Applications Code on Linux Clusters, +in G. Joubert, A. Murli, F. Peters, M. Vanneschi, editors, +Parallel Computing - Advances & Current Issues, +pp. 441-448, Imperial College Press, 2002. +

    13 +
    + Gamma, E., Helm, R., Johnson, R., and Vlissides, + J. 1995. + Design Patterns: Elements of Reusable Object-Oriented Software. + Addison-Wesley. + +

    +

    14 +
    +Karypis, G. and Kumar, V., +METIS: Unstructured Graph Partitioning and Sparse Matrix + Ordering System. +Minneapolis, MN 55455: University of Minnesota, Department of + Computer Science, 1995. +Internet Address: http://www.cs.umn.edu/~karypis. +

    15 +
    +Lawson, C., Hanson, R., Kincaid, D. and Krogh, F., + Basic Linear Algebra Subprograms for Fortran usage, +ACM Trans. Math. Softw. vol. 5, 38-329, 1979. + +

    +

    16 +
    +Machiels, L. and Deville, M. +Fortran 90: An entry to object-oriented programming for the solution + of partial differential equations. +ACM Trans. Math. Softw. vol. 23, 32-49. +

    17 +
    +Metcalf, M., Reid, J. and Cohen, M. +Fortran 95/2003 explained. +Oxford University Press, 2004. +

    18 +
    +Rouson, D.W.I., Xia, J., Xu, X.: Scientific Software Design: The + Object-Oriented Way. Cambridge University Press (2011) + +

    +

    19 +
    +M. Snir, S. Otto, S. Huss-Lederman, D. Walker and J. Dongarra, +MPI: The Complete Reference. Volume 1 - The MPI Core, second edition, +MIT Press, 1998. +
    + +

    +


    + + + diff --git a/docs/html/node138.html b/docs/html/node138.html new file mode 100644 index 00000000..6fd05bf8 --- /dev/null +++ b/docs/html/node138.html @@ -0,0 +1,67 @@ + + + + + +About this document ... + + + + + + + + + + + + + + + + + + + +

    +About this document ... +

    +

    +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 2019-11-21 +


    + + + diff --git a/docs/html/node14.html b/docs/html/node14.html index df52c1c4..914b0e58 100644 --- a/docs/html/node14.html +++ b/docs/html/node14.html @@ -23,26 +23,26 @@ diff --git a/docs/html/node15.html b/docs/html/node15.html index 32983a8e..0f9aa78a 100644 --- a/docs/html/node15.html +++ b/docs/html/node15.html @@ -23,26 +23,26 @@ diff --git a/docs/html/node16.html b/docs/html/node16.html index d7a1001d..e938a3c2 100644 --- a/docs/html/node16.html +++ b/docs/html/node16.html @@ -23,26 +23,26 @@ diff --git a/docs/html/node17.html b/docs/html/node17.html index c432cd85..80c4cf41 100644 --- a/docs/html/node17.html +++ b/docs/html/node17.html @@ -23,26 +23,26 @@ diff --git a/docs/html/node18.html b/docs/html/node18.html index 42ebe881..422ddc25 100644 --- a/docs/html/node18.html +++ b/docs/html/node18.html @@ -23,26 +23,26 @@ diff --git a/docs/html/node19.html b/docs/html/node19.html index 35a0d5cb..af94fa1c 100644 --- a/docs/html/node19.html +++ b/docs/html/node19.html @@ -23,26 +23,26 @@ diff --git a/docs/html/node2.html b/docs/html/node2.html index 3f09ef74..cc966d25 100644 --- a/docs/html/node2.html +++ b/docs/html/node2.html @@ -23,26 +23,26 @@ @@ -68,7 +68,7 @@ passing.

    The PSBLAS library version 3 is implemented in the Fortran 2003 [17] programming language, with reuse and/or + HREF="node137.html#metcalf">17] programming language, with reuse and/or adaptation of existing Fortran 77 and Fortran 95 software, plus a handful of C routines. @@ -78,11 +78,11 @@ mostly in the handling of requirements for evolution and adaptation of the library to new computing architectures and integration of new algorithms. For a detailed discussion of our design see [11]; other + HREF="node137.html#Sparse03">11]; other works discussing advanced programming in Fortran 2003 include [1,18]; sufficient support for + HREF="node137.html#DesPat:11">1,18]; sufficient support for Fortran 2003 is now available from many compilers, including the GNU Fortran compiler from the Free Software Foundation (as of version 4.8). @@ -91,7 +91,7 @@ Previous approaches have been based on mixing Fortran 95, with its support for object-based design, with other languages; these have been advocated by a number of authors, e.g. [16]. Moreover, the Fortran 95 facilities for dynamic + HREF="node137.html#machiels">16]. Moreover, the Fortran 95 facilities for dynamic memory management and interface overloading greatly enhance the usability of the PSBLAS subroutines. In this way, the library can take care of runtime memory @@ -102,12 +102,12 @@ implementation or compilation time. The presentation of the PSBLAS library follows the general structure of the proposal for serial Sparse BLAS [8,9], which in its turn is based on the + HREF="node137.html#sblas97">8,9], which in its turn is based on the proposal for BLAS on dense matrices [15,5,6]. + HREF="node137.html#BLAS1">15,5,6].

    The applicability of sparse iterative solvers to many different areas @@ -142,26 +142,26 @@ computational fluid dynamics applications.

    diff --git a/docs/html/node20.html b/docs/html/node20.html index 905f54a5..f5816c70 100644 --- a/docs/html/node20.html +++ b/docs/html/node20.html @@ -23,26 +23,26 @@ diff --git a/docs/html/node21.html b/docs/html/node21.html index 3478b03a..2e6a31b6 100644 --- a/docs/html/node21.html +++ b/docs/html/node21.html @@ -23,26 +23,26 @@ diff --git a/docs/html/node22.html b/docs/html/node22.html index b733e044..2f9f2a6a 100644 --- a/docs/html/node22.html +++ b/docs/html/node22.html @@ -22,26 +22,26 @@ diff --git a/docs/html/node23.html b/docs/html/node23.html index ecc0e565..1105c101 100644 --- a/docs/html/node23.html +++ b/docs/html/node23.html @@ -23,26 +23,26 @@ @@ -57,9 +57,9 @@ The spdatapsb_Tspmat_type class contains all information about the local portion of the sparse matrix and its storage mode. Its design is based on the STATE design pattern [13] as detailed + HREF="node137.html#DesignPatterns">13] as detailed in [11]; the type declaration is shown in + HREF="node137.html#Sparse03">11]; the type declaration is shown in figure 4 where T is a placeholder for the data type and precision variants
    @@ -141,74 +141,74 @@ variants are obtained by conversion to/from it. Subsections diff --git a/docs/html/node24.html b/docs/html/node24.html index 660dda42..95bed484 100644 --- a/docs/html/node24.html +++ b/docs/html/node24.html @@ -23,26 +23,26 @@ diff --git a/docs/html/node25.html b/docs/html/node25.html index 4e11b66d..89282263 100644 --- a/docs/html/node25.html +++ b/docs/html/node25.html @@ -23,26 +23,26 @@ diff --git a/docs/html/node26.html b/docs/html/node26.html index c22ddd4c..b354b89f 100644 --- a/docs/html/node26.html +++ b/docs/html/node26.html @@ -23,26 +23,26 @@ diff --git a/docs/html/node27.html b/docs/html/node27.html index a7b464d0..79142d1e 100644 --- a/docs/html/node27.html +++ b/docs/html/node27.html @@ -23,26 +23,26 @@ diff --git a/docs/html/node28.html b/docs/html/node28.html index c7f4130f..93fa1562 100644 --- a/docs/html/node28.html +++ b/docs/html/node28.html @@ -23,26 +23,26 @@ diff --git a/docs/html/node29.html b/docs/html/node29.html index bd2a7410..6543ee2d 100644 --- a/docs/html/node29.html +++ b/docs/html/node29.html @@ -25,26 +25,26 @@ of a sparse matrix"> diff --git a/docs/html/node3.html b/docs/html/node3.html index 9d55ff44..0d4479c1 100644 --- a/docs/html/node3.html +++ b/docs/html/node3.html @@ -23,26 +23,26 @@ @@ -56,7 +56,7 @@ General overview The PSBLAS library is designed to handle the implementation of iterative solvers for sparse linear systems on distributed memory parallel computers. The system coefficient matrix $A$ must be square; it may be real or complex, nonsymmetric, and its sparsity pattern @@ -75,10 +75,10 @@ calls to the serial sparse BLAS subroutines. In a similar way, the inter-process message exchanges are encapsulated in an applicaiton layer that has been strongly inspired by the Basic Linear Algebra Communication Subroutines (BLACS) library [7]. + HREF="node137.html#BLACS">7]. Usually there is no need to deal directly with MPI; however, in some cases, MPI routines are used directly to improve efficiency. For -further details on our communication layer see Sec. 7. +further details on our communication layer see Sec. 7.

    @@ -131,7 +131,7 @@ equation indices to processes. In particular it is consistent with the usage of graph partitioning tools commonly available in the literature, e.g. METIS [14]. + HREF="node137.html#METIS">14]. Dense vectors conform to sparse matrices, that is, the entries of a vector follow the same distribution of the matrix rows. @@ -151,44 +151,44 @@ bottleneck would make this option unattractive in most cases. Subsections

    diff --git a/docs/html/node30.html b/docs/html/node30.html index abfd6eca..6bb1780d 100644 --- a/docs/html/node30.html +++ b/docs/html/node30.html @@ -23,26 +23,26 @@ diff --git a/docs/html/node31.html b/docs/html/node31.html index d12946dd..1b942045 100644 --- a/docs/html/node31.html +++ b/docs/html/node31.html @@ -23,26 +23,26 @@ diff --git a/docs/html/node32.html b/docs/html/node32.html index e799406e..a515bd96 100644 --- a/docs/html/node32.html +++ b/docs/html/node32.html @@ -23,26 +23,26 @@ diff --git a/docs/html/node33.html b/docs/html/node33.html index 09fdf104..7d7e9b27 100644 --- a/docs/html/node33.html +++ b/docs/html/node33.html @@ -23,26 +23,26 @@ diff --git a/docs/html/node34.html b/docs/html/node34.html index c5b9402d..79ac9113 100644 --- a/docs/html/node34.html +++ b/docs/html/node34.html @@ -23,26 +23,26 @@ diff --git a/docs/html/node35.html b/docs/html/node35.html index 027817f2..87018a14 100644 --- a/docs/html/node35.html +++ b/docs/html/node35.html @@ -23,26 +23,26 @@ diff --git a/docs/html/node36.html b/docs/html/node36.html index 4768938d..542aa3f7 100644 --- a/docs/html/node36.html +++ b/docs/html/node36.html @@ -23,26 +23,26 @@ diff --git a/docs/html/node37.html b/docs/html/node37.html index 6cc088c9..1fc5b6e4 100644 --- a/docs/html/node37.html +++ b/docs/html/node37.html @@ -23,26 +23,26 @@ diff --git a/docs/html/node38.html b/docs/html/node38.html index a718ea45..7a7e8e5d 100644 --- a/docs/html/node38.html +++ b/docs/html/node38.html @@ -23,26 +23,26 @@ diff --git a/docs/html/node39.html b/docs/html/node39.html index 685de000..30ece33f 100644 --- a/docs/html/node39.html +++ b/docs/html/node39.html @@ -23,26 +23,26 @@ diff --git a/docs/html/node4.html b/docs/html/node4.html index 1fd13393..81bbea42 100644 --- a/docs/html/node4.html +++ b/docs/html/node4.html @@ -23,26 +23,26 @@ @@ -62,21 +62,21 @@ PDE. Each point of the discretization mesh will have (at least) one associated equation/variable, and therefore one index. We say that point $i$ depends on point $j$ if the equation for a variable associated with $i$ contains a term in $j$, or equivalently if $a_{ij} \ne0$. After the partition of the discretization mesh into sub-domains @@ -123,25 +123,25 @@ Overlap points do not usually exist in the basic data distributions; however they are a feature of Domain Decomposition Schwarz preconditioners which are the subject of related research work [4,3]. + HREF="node137.html#2007c">4,3].

    We denote the sets of internal, boundary and halo points for a given subdomain by $\cal I$, $\cal B$ and $\cal H$. Each subdomain is assigned to one process; each process usually owns one subdomain, although the user may choose to assign more than one subdomain to a process. If each process $i$ owns one subdomain, the number of rows in the local sparse matrix is @@ -149,7 +149,7 @@ subdomain, the number of rows in the local sparse matrix is $|{\cal I}_i| + |{\cal B}_i|$ --> $\vert{\cal I}_i\vert + \vert{\cal B}_i\vert$, and the number of local columns (i.e. those for which there exists at least one non-zero entry in the @@ -157,7 +157,7 @@ local rows) is $\vert{\cal I}_i\vert + \vert{\cal B}_i\vert +\vert{\cal H}_i\vert$. @@ -170,7 +170,7 @@ Point classfication.

    \includegraphics[scale=0.65]{figures/points.eps} - next - up - previous - contents
    - Next: Next: Library contents - Up: Up: General overview - Previous: Previous: General overview -   Contents
    diff --git a/docs/html/node40.html b/docs/html/node40.html index 33021ee9..aef8c0c1 100644 --- a/docs/html/node40.html +++ b/docs/html/node40.html @@ -23,26 +23,26 @@ diff --git a/docs/html/node41.html b/docs/html/node41.html index b76f447c..83caf885 100644 --- a/docs/html/node41.html +++ b/docs/html/node41.html @@ -23,26 +23,26 @@ diff --git a/docs/html/node42.html b/docs/html/node42.html index 0810e2ec..34e452e0 100644 --- a/docs/html/node42.html +++ b/docs/html/node42.html @@ -22,26 +22,26 @@ diff --git a/docs/html/node43.html b/docs/html/node43.html index 74f930ba..096acda1 100644 --- a/docs/html/node43.html +++ b/docs/html/node43.html @@ -23,26 +23,26 @@ @@ -57,7 +57,7 @@ The vdatapsb_T_vect_type data structure encapsulates the dense vectors in a way similar to sparse matrices, i.e. including a base type vbasedata psb_T_base_vect_type. The user will not, in general, access the vector components directly, -but rather via the routines of sec. 6. Among other +but rather via the routines of sec. 6. Among other simple things, we define here an extraction method that can be used to get a full copy of the part of the vector stored on the local process. @@ -119,44 +119,44 @@ private memory. Subsections diff --git a/docs/html/node44.html b/docs/html/node44.html index d7ea4154..59a5574b 100644 --- a/docs/html/node44.html +++ b/docs/html/node44.html @@ -23,26 +23,26 @@ diff --git a/docs/html/node45.html b/docs/html/node45.html index 967d15c6..41ef895e 100644 --- a/docs/html/node45.html +++ b/docs/html/node45.html @@ -23,26 +23,26 @@ diff --git a/docs/html/node46.html b/docs/html/node46.html index 85e38867..18fa65e1 100644 --- a/docs/html/node46.html +++ b/docs/html/node46.html @@ -25,26 +25,26 @@ of a dense vector"> diff --git a/docs/html/node47.html b/docs/html/node47.html index b14e02f9..2feec7f9 100644 --- a/docs/html/node47.html +++ b/docs/html/node47.html @@ -23,26 +23,26 @@ diff --git a/docs/html/node48.html b/docs/html/node48.html index e8c5cf98..4bc79826 100644 --- a/docs/html/node48.html +++ b/docs/html/node48.html @@ -23,26 +23,26 @@ @@ -89,15 +89,15 @@ Type: optional; default: entire vector.
    Function value
    An allocatable array holding a copy of the dense vector contents. If the argument $n$ is specified, the size of the returned array equals the minimum between $n$ and the internal size of the vector, or 0 if $n$ is negative; otherwise, the size of the array is the same as the internal size of the vector. diff --git a/docs/html/node49.html b/docs/html/node49.html index 08d0b52c..8344bc75 100644 --- a/docs/html/node49.html +++ b/docs/html/node49.html @@ -22,26 +22,26 @@ diff --git a/docs/html/node5.html b/docs/html/node5.html index a2f0e2b8..f2b0e034 100644 --- a/docs/html/node5.html +++ b/docs/html/node5.html @@ -23,26 +23,26 @@ @@ -125,7 +125,7 @@ internally defined in the PSBLAS software package: For example the psb_geins, psb_spins and - psb_cdins perform the same action (see 6) on + psb_cdins perform the same action (see 6) on dense matrices, sparse matrices and communication descriptors respectively. Interface overloading allows the usage of the same subroutine @@ -167,26 +167,26 @@ whose current value is 3.4.0 diff --git a/docs/html/node50.html b/docs/html/node50.html index 3b2fcc2e..e61abc77 100644 --- a/docs/html/node50.html +++ b/docs/html/node50.html @@ -23,26 +23,26 @@ diff --git a/docs/html/node51.html b/docs/html/node51.html index d7f55d82..41816dcf 100644 --- a/docs/html/node51.html +++ b/docs/html/node51.html @@ -22,26 +22,26 @@ @@ -52,7 +52,7 @@ Heap data structure

    -Among the tools routines of sec. 6, we have a number +Among the tools routines of sec. 6, we have a number of sorting utilities; the heap sort is implemented in terms of heaps having the following signatures:

    diff --git a/docs/html/node52.html b/docs/html/node52.html index deb3c842..1d9cf8ca 100644 --- a/docs/html/node52.html +++ b/docs/html/node52.html @@ -14,7 +14,7 @@ - + @@ -23,26 +23,26 @@ @@ -58,33 +58,39 @@ Computational routines Subsections

    diff --git a/docs/html/node53.html b/docs/html/node53.html index 6df5a187..b3c9a66e 100644 --- a/docs/html/node53.html +++ b/docs/html/node53.html @@ -23,26 +23,26 @@ @@ -78,7 +78,7 @@ call psb_geaxpby(alpha, x, beta, y, desc_a, info)


    -
    +
    @@ -86,16 +86,16 @@ Data types
    Table 1: Data types
    @@ -129,7 +129,7 @@ Data types
    alpha
    the scalar $\alpha$.
    @@ -145,7 +145,7 @@ type indicated in Table 1.
    x
    the local portion of global dense matrix $x$.
    @@ -158,16 +158,16 @@ Intent: in. Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type containing numbers of type specified in Table 1. The rank of $x$ must be the same of $y$.
    beta
    the scalar $\beta$.
    @@ -182,7 +182,7 @@ Specified as: a number of the data type indicated in Table $y$.
    @@ -194,10 +194,10 @@ Intent: inout.
    Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type containing numbers of the type indicated in Table 
    1. The rank of $y$ must be the same of $x$.
    @@ -223,7 +223,7 @@ Specified as: an object of type descdatapsb_desc_type.
    y
    the local portion of result submatrix $y$.
    @@ -253,26 +253,26 @@ An integer value; 0 means no error has been detected. diff --git a/docs/html/node54.html b/docs/html/node54.html index 1cfefa4f..9ab3fd9c 100644 --- a/docs/html/node54.html +++ b/docs/html/node54.html @@ -23,26 +23,26 @@ @@ -54,19 +54,19 @@ psb_gedot -- Dot Product

    This function computes dot product between two vectors $x$ and $y$.
    If $x$ and $y$ are real vectors it computes dot-product as: @@ -86,10 +86,10 @@ dot \leftarrow x^T y

    Else if $x$ and $y$ are complex vectors then it computes dot-product as:

    @@ -101,7 +101,7 @@ dot \leftarrow x^H y --> \begin{displaymath}dot \leftarrow x^H y\end{displaymath} @@ -113,7 +113,7 @@ dot \leftarrow x^H y psb_gedot(x, y, desc_a, info [,global])

    -
    +
    $x$, $y$, $\alpha$, $\beta$ Subroutine
    @@ -121,13 +121,13 @@ Data types
    Table 2: Data types
    @@ -162,7 +162,7 @@ Data types
    x
    the local portion of global dense matrix $x$.
    @@ -175,17 +175,17 @@ Intent: in. Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type containing numbers of type specified in Table 2. The rank of $x$ must be the same of $y$.
    y
    the local portion of global dense matrix $y$.
    @@ -198,10 +198,10 @@ Intent: in. Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type containing numbers of type specified in Table 2. The rank of $y$ must be the same of $x$.
    @@ -236,10 +236,10 @@ Default: global=.true.
    Function value
    is the dot product of vectors $x$ and $y$.
    @@ -272,7 +272,7 @@ An integer value; 0 means no error has been detected. by using the following scheme:
    \begin{lstlisting}
 vres(1) = psb_gedot(x1,y1,desc_a,info,global=.false.)
@@ -290,26 +290,26 @@ In this way the global communication, which for small sizes is a
 
 <DIV CLASS=
    - next - up - previous - contents
    - Next: Next: psb_gedots Generalized - Up: Up: Computational routines - Previous: Previous: psb_geaxpby General -   Contents diff --git a/docs/html/node55.html b/docs/html/node55.html index f14e7e64..1244a8d8 100644 --- a/docs/html/node55.html +++ b/docs/html/node55.html @@ -23,26 +23,26 @@ @@ -55,10 +55,10 @@ psb_gedots -- Generalized Dot Product

    This subroutine computes a series of dot products among the columns of two dense matrices $x$ and $y$:

    @@ -70,7 +70,7 @@ res(i) \leftarrow x(:,i)^T y(:,i) --> \begin{displaymath}res(i) \leftarrow x(:,i)^T y(:,i)\end{displaymath} @@ -78,17 +78,17 @@ res(i) \leftarrow x(:,i)^T y(:,i)

    If the matrices are complex, then the usual convention applies, i.e. the conjugate transpose of $x$ is used. If $x$ and $y$ are of rank one, then $res$ is a scalar, else it is a rank one array. @@ -98,7 +98,7 @@ is a rank one array. call psb_gedots(res, x, y, desc_a, info)

    -
    +
    $dot$, $x$, $y$ Function
    @@ -106,13 +106,13 @@ Data types
    Table 3: Data types
    @@ -147,7 +147,7 @@ Data types
    x
    the local portion of global dense matrix $x$.
    @@ -160,17 +160,17 @@ Intent: in. Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type containing numbers of type specified in Table 3. The rank of $x$ must be the same of $y$.
    y
    the local portion of global dense matrix $y$.
    @@ -183,10 +183,10 @@ Intent: in. Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type containing numbers of type specified in Table 3. The rank of $y$ must be the same of $x$.
    @@ -206,10 +206,10 @@ Specified as: an object of type descdatapsb_desc_type.
    res
    is the dot product of vectors $x$ and $y$.
    @@ -237,26 +237,26 @@ An integer value; 0 means no error has been detected. diff --git a/docs/html/node56.html b/docs/html/node56.html index d626f7f6..7f1ecd2b 100644 --- a/docs/html/node56.html +++ b/docs/html/node56.html @@ -23,26 +23,26 @@ @@ -55,12 +55,12 @@ psb_normi -- Infinity-Norm of Vector

    This function computes the infinity-norm of a vector $x$.
    If $x$ is a real vector it computes infinity norm as: @@ -73,14 +73,14 @@ amax \leftarrow \max_i |x_i| --> \begin{displaymath}amax \leftarrow \max_i \vert x_i\vert\end{displaymath}

    else if $x$ is a complex vector then it computes the infinity-norm as:

    @@ -92,7 +92,7 @@ amax \leftarrow \max_i {(|re(x_i)| + |im(x_i)|)} --> \begin{displaymath}amax \leftarrow \max_i {(\vert re(x_i)\vert + \vert im(x_i)\vert)}\end{displaymath} @@ -107,7 +107,7 @@ psb_normi(x, desc_a, info [,global])


    -
    +
    $res$, $x$, $y$ Subroutine
    @@ -115,11 +115,11 @@ Data types
    Table 4: Data types
    @@ -158,7 +158,7 @@ Data types
    x
    the local portion of global dense matrix $x$. @@ -205,7 +205,7 @@ Default: global=.true.
    Function value
    is the infinity norm of vector $x$.
    @@ -238,7 +238,7 @@ An integer value; 0 means no error has been detected. by using the following scheme:
    \begin{lstlisting}
 vres(1) = psb_geamax(x1,desc_a,info,global=.false.)
@@ -256,26 +256,26 @@ In this way the global communication, which for small sizes is a
 
 <DIV CLASS=
    - next - up - previous - contents
    - Next: Next: psb_geamaxs Generalized - Up: Up: Computational routines - Previous: Previous: psb_gedots Generalized -   Contents diff --git a/docs/html/node57.html b/docs/html/node57.html index fdd2f842..60bc14e4 100644 --- a/docs/html/node57.html +++ b/docs/html/node57.html @@ -23,26 +23,26 @@ @@ -55,7 +55,7 @@ psb_geamaxs -- Generalized Infinity Norm

    This subroutine computes a series of infinity norms on the columns of a dense matrix $x$:

    @@ -67,7 +67,7 @@ res(i) \leftarrow \max_k |x(k,i)| --> \begin{displaymath}res(i) \leftarrow \max_k \vert x(k,i)\vert \end{displaymath} @@ -81,7 +81,7 @@ call psb_geamaxs(res, x, desc_a, info)


    -
    +
    $amax$ $x$ Function
    @@ -89,11 +89,11 @@ Data types
    Table 5: Data types
    @@ -132,7 +132,7 @@ Data types
    x
    the local portion of global dense matrix $x$.
    @@ -162,7 +162,7 @@ Specified as: an object of type descdatapsb_desc_type.
    res
    is the infinity norm of the columns of $x$.
    @@ -189,26 +189,26 @@ An integer value; 0 means no error has been detected. diff --git a/docs/html/node58.html b/docs/html/node58.html index c4fd28f7..489a80f3 100644 --- a/docs/html/node58.html +++ b/docs/html/node58.html @@ -23,26 +23,26 @@ @@ -54,12 +54,12 @@ psb_norm1 -- 1-Norm of Vector

    This function computes the 1-norm of a vector $x$.
    If $x$ is a real vector it computes 1-norm as: @@ -72,14 +72,14 @@ asum \leftarrow \|x_i\| --> \begin{displaymath}asum \leftarrow \Vert x_i\Vert\end{displaymath}

    else if $x$ is a complex vector then it computes 1-norm as:

    @@ -91,7 +91,7 @@ asum \leftarrow \|re(x)\|_1 + \|im(x)\|_1 --> \begin{displaymath}asum \leftarrow \Vert re(x)\Vert _1 + \Vert im(x)\Vert _1\end{displaymath} @@ -106,7 +106,7 @@ psb_norm1(x, desc_a, info [,global])


    -
    +
    $res$ $x$ Subroutine
    @@ -114,11 +114,11 @@ Data types
    Table 6: Data types
    @@ -157,7 +157,7 @@ Data types
    x
    the local portion of global dense matrix $x$. @@ -203,7 +203,7 @@ Default: global=.true.
    Function value
    is the 1-norm of vector $x$.
    @@ -236,7 +236,7 @@ An integer value; 0 means no error has been detected. by using the following scheme:
    \begin{lstlisting}
 vres(1) = psb_geasum(x1,desc_a,info,global=.false.)
@@ -254,26 +254,26 @@ In this way the global communication, which for small sizes is a
 
 <DIV CLASS=
    - next - up - previous - contents
    - Next: Next: psb_geasums Generalized - Up: Up: Computational routines - Previous: Previous: psb_geamaxs Generalized -   Contents diff --git a/docs/html/node59.html b/docs/html/node59.html index 4ab320ea..bed7c250 100644 --- a/docs/html/node59.html +++ b/docs/html/node59.html @@ -23,26 +23,26 @@ @@ -55,7 +55,7 @@ psb_geasums -- Generalized 1-Norm of Vector

    This subroutine computes a series of 1-norms on the columns of a dense matrix $x$:

    @@ -67,19 +67,19 @@ res(i) \leftarrow \max_k |x(k,i)| --> \begin{displaymath}res(i) \leftarrow \max_k \vert x(k,i)\vert \end{displaymath}

    This function computes the 1-norm of a vector $x$.
    If $x$ is a real vector it computes 1-norm as: @@ -92,14 +92,14 @@ res(i) \leftarrow \|x_i\| --> \begin{displaymath}res(i) \leftarrow \Vert x_i\Vert\end{displaymath}

    else if $x$ is a complex vector then it computes 1-norm as:

    @@ -111,7 +111,7 @@ res(i) \leftarrow \|re(x)\|_1 + \|im(x)\|_1 --> \begin{displaymath}res(i) \leftarrow \Vert re(x)\Vert _1 + \Vert im(x)\Vert _1\end{displaymath} @@ -125,7 +125,7 @@ call psb_geasums(res, x, desc_a, info)


    -
    +
    $asum$ $x$ Function
    @@ -133,11 +133,11 @@ Data types
    Table 7: Data types
    @@ -176,7 +176,7 @@ Data types
    x
    the local portion of global dense matrix $x$. @@ -209,7 +209,7 @@ Specified as: an object of type descdatapsb_desc_type.
    res
    contains the 1-norm of (the columns of) $x$.
    @@ -237,26 +237,26 @@ An integer value; 0 means no error has been detected. diff --git a/docs/html/node6.html b/docs/html/node6.html index 91707813..15321ca3 100644 --- a/docs/html/node6.html +++ b/docs/html/node6.html @@ -23,26 +23,26 @@ @@ -61,7 +61,7 @@ space to which there corresponds an index space and a matrix sparsity pattern. As an example, consider a cell-centered finite-volume discretization of the Navier-Stokes equations on a simulation domain; the index space $1\dots n$ is isomorphic to the set of cell centers, whereas the pattern of the associated linear system matrix is @@ -72,7 +72,7 @@ by the discretization stencil. Thus the first order of business is to establish an index space, and this is done with a call to psb_cdall in which we specify the size of the index space $n$ and the allocation of the elements of the index space to the various processes making up the MPI (virtual) @@ -81,22 +81,22 @@ parallel machine.

    The index space is partitioned among processes, and this creates a mapping from the “global” numbering $1\dots n$ to a numbering “local” to each process; each process $i$ will own a certain subset $1\dots n_{\hbox{row}_i}$, each element of which corresponds to a certain element of $1\dots n$. The user does not set explicitly this mapping; when the application needs to indicate to which element of the index @@ -106,7 +106,7 @@ library will translate into the appropriate “local” numbering.

    For a given index space $1\dots n$ there are many possible associated topologies, i.e. many different discretization stencils; thus the @@ -115,7 +115,7 @@ defined a sparsity pattern, either explicitly through psb_cdins or implicitly through psb_spins. The descriptor is finalized with a call to psb_cdasb and a sparse matrix with a call to psb_spasb. After psb_cdasb each process $i$ will have defined a set of “halo” (or “ghost”) indices @@ -123,16 +123,16 @@ defined a set of “halo” (or “ghost”) indices $n_{\hbox{row}_i}+1\dots n_{\hbox{col}_i}$ --> $n_{\hbox{row}_i}+1\dots n_{\hbox{col}_i}$, denoting elements of the index space that are not assigned to process $i$; however the variables associated with them are needed to complete computations associated with the sparse matrix $A$, and thus they have to be fetched from (neighbouring) processes. The descriptor of the index @@ -247,33 +247,33 @@ from optimal. Subsections

    diff --git a/docs/html/node60.html b/docs/html/node60.html index f663ca4c..231ca72d 100644 --- a/docs/html/node60.html +++ b/docs/html/node60.html @@ -23,26 +23,26 @@ @@ -54,12 +54,12 @@ psb_norm2 -- 2-Norm of Vector

    This function computes the 2-norm of a vector $x$.
    If $x$ is a real vector it computes 2-norm as: @@ -72,14 +72,14 @@ nrm2 \leftarrow \sqrt{x^T x} --> \begin{displaymath}nrm2 \leftarrow \sqrt{x^T x}\end{displaymath}

    else if $x$ is a complex vector then it computes 2-norm as:

    @@ -91,7 +91,7 @@ nrm2 \leftarrow \sqrt{x^H x} --> \begin{displaymath}nrm2 \leftarrow \sqrt{x^H x}\end{displaymath} @@ -100,7 +100,7 @@ nrm2 \leftarrow \sqrt{x^H x}


    -
    +
    $res$ $x$ Subroutine
    @@ -108,11 +108,11 @@ Data types
    Table 8: Data types
    @@ -157,7 +157,7 @@ psb_norm2(x, desc_a, info [,global])
    x
    the local portion of global dense matrix $x$.
    @@ -203,7 +203,7 @@ Default: global=.true.
    Function Value
    is the 2-norm of vector $x$.
    @@ -238,7 +238,7 @@ An integer value; 0 means no error has been detected. by using the following scheme:
    \begin{lstlisting}
 vres(1) = psb_genrm2(x1,desc_a,info,global=.false.)
@@ -256,26 +256,26 @@ In this way the global communication, which for small sizes is a
 
 <DIV CLASS=
    - next - up - previous - contents
    - Next: Next: psb_genrm2s Generalized - Up: Up: Computational routines - Previous: Previous: psb_geasums Generalized -   Contents diff --git a/docs/html/node61.html b/docs/html/node61.html index 867d4545..bdbc1061 100644 --- a/docs/html/node61.html +++ b/docs/html/node61.html @@ -23,26 +23,26 @@ @@ -55,7 +55,7 @@ psb_genrm2s -- Generalized 2-Norm of Vector

    This subroutine computes a series of 2-norms on the columns of a dense matrix $x$:

    @@ -67,7 +67,7 @@ res(i) \leftarrow \|x(:,i)\|_2 --> \begin{displaymath}res(i) \leftarrow \Vert x(:,i)\Vert _2 \end{displaymath} @@ -81,7 +81,7 @@ call psb_genrm2s(res, x, desc_a, info)


    -
    +
    $nrm2$ $x$ Function
    @@ -89,11 +89,11 @@ Data types
    Table 9: Data types
    @@ -132,7 +132,7 @@ Data types
    x
    the local portion of global dense matrix $x$. @@ -165,7 +165,7 @@ Specified as: an object of type descdatapsb_desc_type.
    res
    contains the 1-norm of (the columns of) $x$.
    @@ -192,26 +192,26 @@ An integer value; 0 means no error has been detected. diff --git a/docs/html/node62.html b/docs/html/node62.html index 6ef4e36d..497fbdd5 100644 --- a/docs/html/node62.html +++ b/docs/html/node62.html @@ -23,26 +23,26 @@ @@ -54,7 +54,7 @@ psb_norm1 -- 1-Norm of Sparse Matrix

    This function computes the 1-norm of a matrix $A$:
    @@ -68,7 +68,7 @@ nrm1 \leftarrow \|A\|_1 --> \begin{displaymath}nrm1 \leftarrow \Vert A\Vert _1 \end{displaymath} @@ -77,11 +77,11 @@ nrm1 \leftarrow \|A\|_1 where:

    $A$
    represents the global matrix $A$
    @@ -89,7 +89,7 @@ where:


    -
    +
    $res$ $x$ Subroutine
    @@ -97,7 +97,7 @@ Data types
    Table 10: Data types
    @@ -138,7 +138,7 @@ psb_norm1(A, desc_a, info)
    a
    the local portion of the global sparse matrix $A$.
    @@ -166,7 +166,7 @@ Specified as: an object of type descdatapsb_desc_type.
    Function value
    is the 1-norm of sparse submatrix $A$.
    diff --git a/docs/html/node63.html b/docs/html/node63.html index d084adad..a4d42680 100644 --- a/docs/html/node63.html +++ b/docs/html/node63.html @@ -23,26 +23,26 @@ @@ -54,7 +54,7 @@ psb_normi -- Infinity Norm of Sparse Matrix

    This function computes the infinity-norm of a matrix $A$:
    @@ -68,7 +68,7 @@ nrmi \leftarrow \|A\|_\infty --> \begin{displaymath}nrmi \leftarrow \Vert A\Vert _\infty \end{displaymath} @@ -77,11 +77,11 @@ nrmi \leftarrow \|A\|_\infty where:

    $A$
    represents the global matrix $A$
    @@ -89,7 +89,7 @@ where:


    -
    +
    $A$ Function
    @@ -97,7 +97,7 @@ Data types
    Table 11: Data types
    @@ -138,7 +138,7 @@ psb_normi(A, desc_a, info)
    a
    the local portion of the global sparse matrix $A$.
    @@ -166,7 +166,7 @@ Specified as: an object of type descdatapsb_desc_type.
    Function value
    is the infinity-norm of sparse submatrix $A$.
    diff --git a/docs/html/node64.html b/docs/html/node64.html index 9f15d14c..12cdf45b 100644 --- a/docs/html/node64.html +++ b/docs/html/node64.html @@ -23,26 +23,26 @@ @@ -88,7 +88,7 @@ y \leftarrow \alpha A^T x + \beta y
    $A$ Function
    \begin{displaymath}
 y \leftarrow \alpha A^T x + \beta y
@@ -122,29 +122,29 @@ y \leftarrow \alpha A^H x + \beta y
 where:
 <DL>
 <DT><STRONG><SPAN CLASS=$x$
    is the global dense matrix $x_{:, :}$
    $y$
    is the global dense matrix $y_{:, :}$
    $A$
    is the global sparse matrix $A$
    @@ -152,7 +152,7 @@ where:


    -
    +
    @@ -160,19 +160,19 @@ Data types
    Table 12: Data types
    @@ -213,7 +213,7 @@ call psb_spmm(alpha, a, x, beta, y,desc_a, info, &
    alpha
    the scalar $\alpha$.
    @@ -229,7 +229,7 @@ Table 12.
    a
    the local portion of the sparse matrix $A$.
    @@ -244,7 +244,7 @@ Specified as: an object of type spdatapsb_Tspmat_type.
    x
    the local portion of global dense matrix $x$. @@ -258,16 +258,16 @@ Intent: in. Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type containing numbers of type specified in Table 12. The rank of $x$ must be the same of $y$.
    beta
    the scalar $\beta$.
    @@ -282,7 +282,7 @@ Specified as: a number of the data type indicated in Table $y$. @@ -296,10 +296,10 @@ Intent: inout. Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type containing numbers of type specified in Table 12. The rank of $y$ must be the same of $x$.
    @@ -336,7 +336,7 @@ Type: optional Intent: in.
    Default: $trans = N$
    @@ -354,10 +354,10 @@ Type: optional Intent: inout.
    Specified as: a rank one array of the same type of $x$ and $y$ with the TARGET attribute. @@ -369,7 +369,7 @@ the TARGET attribute.
    y
    the local portion of result matrix $y$.
    @@ -400,26 +400,26 @@ An integer value; 0 means no error has been detected. diff --git a/docs/html/node65.html b/docs/html/node65.html index 7617d650..0283a958 100644 --- a/docs/html/node65.html +++ b/docs/html/node65.html @@ -14,6 +14,7 @@ + @@ -22,26 +23,26 @@ @@ -86,34 +87,34 @@ y &\leftarrow& \alpha T^{-H} D x + \beta y\\ where:
    $x$
    is the global dense matrix $x_{:, :}$
    $y$
    is the global dense matrix $y_{:, :}$
    $T$
    is the global sparse block triangular submatrix $T$
    $D$
    is the scaling diagonal matrix. @@ -129,7 +130,7 @@ call psb_spsm(alpha, t, x, beta, y, desc_a, info,&


    -
    +
    $A$, $x$, $y$, $\alpha$, $\beta$ Subroutine
    @@ -137,22 +138,22 @@ Data types
    Table 13: Data types
    @@ -186,7 +187,7 @@ Data types
    alpha
    the scalar $\alpha$.
    @@ -202,7 +203,7 @@ Table 13.
    t
    the global portion of the sparse matrix $T$.
    @@ -218,7 +219,7 @@ Specified as: an object type specified in
    x
    the local portion of global dense matrix $x$. @@ -232,16 +233,16 @@ Intent: in. Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type containing numbers of type specified in Table 13. The rank of $x$ must be the same of $y$.
    beta
    the scalar $\beta$.
    @@ -256,7 +257,7 @@ Specified as: a number of the data type indicated in Table $y$. @@ -270,10 +271,10 @@ Intent: inout. Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type containing numbers of type specified in Table 13. The rank of $y$ must be the same of $x$.
    @@ -308,7 +309,7 @@ Type: optional Intent: in.
    Default: $trans = N$
    @@ -334,7 +335,7 @@ Type: optional Intent: in.
    Default: $unitd = U$
    @@ -380,7 +381,7 @@ Default: $diag(1) = 1 (no scaling)$
    @@ -397,7 +398,7 @@ Type: optional Intent: inout.
    Specified as: a rank one array of the same type of $x$ with the TARGET attribute. @@ -410,7 +411,7 @@ TARGET attribute.
    y
    the local portion of global dense matrix $y$. @@ -442,26 +443,26 @@ An integer value; 0 means no error has been detected. diff --git a/docs/html/node66.html b/docs/html/node66.html index e73a47eb..7112a950 100644 --- a/docs/html/node66.html +++ b/docs/html/node66.html @@ -3,8 +3,8 @@ -Communication routines - +psb_gemlt -- Entrywise Product + @@ -14,64 +14,226 @@ - - - + + + -

    -Communication routines -

    -The routines in this chapter implement various global communication operators -on vectors associated with a discretization mesh. For auxiliary communication -routines not tied to a discretization space see 6. +

    +psb_gemlt -- Entrywise Product +

    -


    - -Subsections +This function computes the entrywise product between two vectors $x$ and +$y$ +

    +
    + + +\begin{displaymath}dot \leftarrow x(i) y(i).\end{displaymath} +
    +
    +

    + +

    +

    +psb_gemlt(x, y, desc_a, info)
    +
    +

    +
    +
    $T$, $x$, $y$, $D$, $\alpha$, $\beta$ Subroutine
    + + +
    Table 14: +Data types
    + + + + + + + + + + + + + + + + +
    $dot$, $x$, $y$Function
    Short Precision Realpsb_gemlt
    Long Precision Realpsb_gemlt
    Short Precision Complexpsb_gemlt
    Long Precision Complexpsb_gemlt
    +
    +
    +

    +
    - - -

    +

    +

    +
    Type:
    +
    Synchronous. + +
    +
    On Entry
    +
    +
    +
    x
    +
    the local portion of global dense vector + $x$. +
    +Scope: local +
    +Type: required +
    +Intent: in. +
    +Specified as: an object of type vdatapsb_T_vect_type + containing numbers of type specified in + Table 2. + +
    +
    y
    +
    the local portion of global dense vector + $y$. +
    +Scope: local +
    +Type: required +
    +Intent: in. +
    +Specified as: an object of type vdatapsb_T_vect_type + containing numbers of type specified in + Table 2. + +
    +
    desc_a
    +
    contains data structures for communications. +
    +Scope: local +
    +Type: required +
    +Intent: in. +
    +Specified as: an object of type descdatapsb_desc_type. + +
    +
    On Return
    +
    +
    +
    y
    +
    the local portion of result submatrix $y$. +
    +Scope: local +
    +Type: required +
    +Intent: inout. +
    +Specified as: an object of type vdatapsb_T_vect_type containing numbers of the type + indicated in Table 14. + +
    +
    info
    +
    Error code. +
    +Scope: local +
    +Type: required +
    +Intent: out. +
    +An integer value; 0 means no error has been detected. +
    +
    + +

    + +

    + diff --git a/docs/html/node67.html b/docs/html/node67.html index 1ab4ea30..ff68685c 100644 --- a/docs/html/node67.html +++ b/docs/html/node67.html @@ -3,8 +3,8 @@ -psb_halo -- Halo Data Communication - +psb_gediv -- Entrywise Division + @@ -16,146 +16,153 @@ - + -

    -psb_halo -- Halo Data Communication +

    +psb_gediv -- Entrywise Division

    -These subroutines gathers the values of the halo -elements: - -

    +This function computes the entrywise division between two vectors $x$ and +$y$

    \begin{displaymath}x \leftarrow x \end{displaymath} + WIDTH="96" HEIGHT="29" BORDER="0" + SRC="img60.png" + ALT="\begin{displaymath}/ \leftarrow x(i)/y(i).\end{displaymath}">

    -where: -
    -
    $x$
    -
    is a global dense submatrix. -
    -

    +

    +psb_gediv(x, y, desc_a, info, [flag)
    +

    -
    +
    - - +
    Table 14: +Table 15: Data types
    -
    +
    - - - - + ALT="$x$">, $y$ + - + - + - + - +
    $\alpha$, $/$, $x$Subroutine
    Integerpsb_haloFunction
    Short Precision Realpsb_halopsb_gediv
    Long Precision Realpsb_halopsb_gediv
    Short Precision Complexpsb_halopsb_gediv
    Long Precision Complexpsb_halopsb_gediv
    -


    -

    -
    -\begin{lstlisting}
-call psb_halo(x, desc_a, info)
-call psb_halo(x, desc_a, info, work, data)
-\end{lstlisting} -
    -

    Type:
    Synchronous. +
    On Entry
    x
    -
    global dense matrix the local portion of global dense vector + $x$. +
    +Scope: local +
    +Type: required
    +Intent: in. +
    +Specified as: an object of type vdatapsb_T_vect_type + containing numbers of type specified in + Table 2. + +
    +
    y
    +
    the local portion of global dense vector + $y$. +
    Scope: local
    Type: required
    -Intent: inout. +Intent: in.
    -Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type -containing numbers of type specified in -Table 14. +Specified as: an object of type vdatapsb_T_vect_type + containing numbers of type specified in + Table 2. +
    desc_a
    contains data structures for communications. @@ -166,41 +173,29 @@ Type: required
    Intent: in.
    -Specified as: a structured data of type descdatapsb_desc_type. +Specified as: an object of type descdatapsb_desc_type. +
    -
    work
    -
    the work array. +
    flag
    +
    check if any of the $y(i) = 0$, and in case returns error halting the computation.
    Scope: local
    Type: optional + Intent: in.
    -Intent: inout. -
    -Specified as: a rank one array of the same type of $x$. -
    -
    data
    -
    index list selector. -
    -Scope: global -
    -Type: optional -
    -Specified as: an integer. Values:psb_comm_halo_,psb_comm_mov_, -psb_comm_ext_, default: psb_comm_halo_. Chooses the -index list on which to base the data exchange. - -

    +Specified as: the logical value flag=.true. +

    On Return
    x
    -
    global dense result matrix the local portion of result submatrix $x$.
    @@ -210,15 +205,12 @@ Type: required
    Intent: inout.
    -Returned as: a rank one or two array -containing numbers of type specified in -Table 14. +Specified as: an object of type vdatapsb_T_vect_type containing numbers of the type + indicated in Table 14. +
    info
    -
    the local portion of result submatrix $y$. +
    Error code.
    Scope: local
    @@ -226,406 +218,34 @@ Type: required
    Intent: out.
    -An integer value that contains an error code. +An integer value; 0 means no error has been detected.
    -
    - - - -
    Figure 7: -Sample discretization mesh.
    -
    -\includegraphics[scale=0.45]{figures/try8x8.eps} - -\includegraphics[scale=0.45]{figures/try8x8} - -
    -
    - -

    -Usage Example -Consider the discretization mesh depicted in fig. 7, -partitioned among two processes as shown by the dashed line; the data -distribution is such that each process will own 32 entries in the -index space, with a halo made of 8 entries placed at local indices 33 -through 40. If process 0 assigns an initial value of 1 to its entries -in the $x$ vector, and process 1 assigns a value of 2, then after a -call to psb_halo the contents of the local vectors will be the -following: -
    -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -Process 0  -Process 1
    - I GLOB(I) X(I)   I GLOB(I) X(I)
    - 1 1 1.0   1 33 2.0
    - 2 2 1.0   2 34 2.0
    - 3 3 1.0   3 35 2.0
    - 4 4 1.0   4 36 2.0
    - 5 5 1.0   5 37 2.0
    - 6 6 1.0   6 38 2.0
    - 7 7 1.0   7 39 2.0
    - 8 8 1.0   8 40 2.0
    - 9 9 1.0   9 41 2.0
    - 10 10 1.0   10 42 2.0
    - 11 11 1.0   11 43 2.0
    - 12 12 1.0   12 44 2.0
    - 13 13 1.0   13 45 2.0
    - 14 14 1.0   14 46 2.0
    - 15 15 1.0   15 47 2.0
    - 16 16 1.0   16 48 2.0
    - 17 17 1.0   17 49 2.0
    - 18 18 1.0   18 50 2.0
    - 19 19 1.0   19 51 2.0
    - 20 20 1.0   20 52 2.0
    -21 21 1.0   21 53 2.0
    -22 22 1.0   22 54 2.0
    -23 23 1.0   23 55 2.0
    -24 24 1.0   24 56 2.0
    -25 25 1.0   25 57 2.0
    -26 26 1.0   26 58 2.0
    -27 27 1.0   27 59 2.0
    -28 28 1.0   28 60 2.0
    -29 29 1.0   29 61 2.0
    -30 30 1.0   30 62 2.0
    -31 31 1.0   31 63 2.0
    -32 32 1.0   32 64 2.0
    -33 33 2.0   33 25 1.0
    -34 34 2.0   34 26 1.0
    -35 35 2.0   35 27 1.0
    -36 36 2.0   36 28 1.0
    -37 37 2.0   37 29 1.0
    -38 38 2.0   38 30 1.0
    -39 39 2.0   39 31 1.0
    -40 40 2.0   40 32 1.0
    -
    -

    diff --git a/docs/html/node68.html b/docs/html/node68.html index eff574f4..56b7396a 100644 --- a/docs/html/node68.html +++ b/docs/html/node68.html @@ -3,8 +3,8 @@ -psb_ovrl -- Overlap Update - +psb_geinv -- Entrywise Inversion + @@ -14,157 +14,136 @@ - - + -

    -psb_ovrl -- Overlap Update +

    +psb_geinv -- Entrywise Inversion

    -These subroutines applies an overlap operator to the input vector: - -

    +This function computes the entrywise inverse of a vector $x$ and puts it into +$y$

    \begin{displaymath}x \leftarrow Q x \end{displaymath} + ALT="\begin{displaymath}/ \leftarrow 1/x(i).\end{displaymath}">

    -where: -
    -
    $x$
    -
    is the global dense submatrix $x$ -
    -
    $Q$
    -
    is the overlap operator; it is the composition of two -operators $P_a$ and $P^{T}$. -
    -

    +

    +psb_geinv(x, y, desc_a, info, [flag)
    +

    -
    +
    - - +
    Table 15: +Table 16: Data types
    -
    +
    - + ALT="$x$">, $y$ + - + - + - + - +
    $/$, $x$SubroutineFunction
    Short Precision Realpsb_ovrlpsb_geinv
    Long Precision Realpsb_ovrlpsb_geinv
    Short Precision Complexpsb_ovrlpsb_geinv
    Long Precision Complexpsb_ovrlpsb_geinv
    -


    -

    -
    -\begin{lstlisting}
-call psb_ovrl(x, desc_a, info)
-call psb_ovrl(x, desc_a, info, update=update_type, work=work)
-\end{lstlisting} -
    -

    Type:
    Synchronous. +
    On Entry
    x
    -
    global dense matrix the local portion of global dense vector + $x$. -
    +
    Scope: local
    Type: required
    -Intent: inout. +Intent: in.
    -Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type -containing numbers of type specified in -Table 15. +Specified as: an object of type vdatapsb_T_vect_type + containing numbers of type specified in + Table 2. +
    desc_a
    contains data structures for communications. @@ -175,65 +154,29 @@ Type: required
    Intent: in.
    -Specified as: a structured data of type descdatapsb_desc_type. -
    -
    update
    -
    Update operator. -
    -
    update = psb_none_
    -
    Do nothing; -
    -
    update = psb_add_
    -
    Sum overlap entries, i.e. apply $P^T$; -
    -
    update = psb_avg_
    -
    Average overlap entries, i.e. apply $P_aP^T$; -
    -
    -Scope: global -
    -Intent: in. -
    -Default: -$update\_type = psb\_avg\_ $ -
    -Scope: global -
    -Specified as: a integer variable. +Specified as: an object of type descdatapsb_desc_type. +
    -
    work
    -
    the work array. +
    flag
    +
    check if any of the $x(i) = 0$, and in case returns error halting the computation.
    Scope: local
    Type: optional + Intent: in.
    -Intent: inout. -
    -Specified as: a one dimensional array of the same type of $x$. - -

    +Specified as: the logical value flag=.true. +

    On Return
    -
    x
    -
    global dense result matrix y +
    the local portion of result submatrix $x$.
    @@ -241,11 +184,11 @@ Scope: local
    Type: required
    -Intent: inout. +Intent: out.
    -Specified as: an array of rank one or two -containing numbers of type specified in -Table 15. +Specified as: an object of type vdatapsb_T_vect_type containing numbers of the type + indicated in Table 16. +
    info
    Error code. @@ -260,500 +203,30 @@ An integer value; 0 means no error has been detected.
    -

    -Notes - -

      -
    1. If there is no overlap in the data distribution associated with - the descriptor, no operations are performed; -
    2. -
    3. The operator $P^{T}$ performs the reduction sum of overlap -elements; it is a “prolongation” operator $P^T$ that -replicates overlap elements, accounting for the physical replication -of data; -
    4. -
    5. The operator $P_a$ performs a scaling on the overlap elements by -the amount of replication; thus, when combined with the reduction -operator, it implements the average of replicated elements over all of -their instances. -
    6. -
    - -

    - -

    - - - -
    Figure 8: -Sample discretization mesh.
    -
    -\includegraphics[scale=0.65]{figures/try8x8_ov.eps} - -\includegraphics[scale=0.65]{figures/try8x8_ov} - -
    -
    - -Example of use -Consider the discretization mesh depicted in fig. 8, -partitioned among two processes as shown by the dashed lines, with an -overlap of 1 extra layer with respect to the partition of -fig. 7; the data -distribution is such that each process will own 40 entries in the -index space, with an overlap of 16 entries placed at local indices 25 -through 40; the halo will run from local index 41 through local index 48.. If process 0 assigns an initial value of 1 to its entries -in the $x$ vector, and process 1 assigns a value of 2, then after a -call to psb_ovrl with psb_avg_ and a call to -psb_halo_ the contents of the local vectors will be the -following (showing a transition among the two subdomains) - -

    -
    -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -Process 0  -Process 1
    - I GLOB(I) X(I)   I GLOB(I) X(I)
    - 1 1 1.0   1 33 1.5
    - 2 2 1.0   2 34 1.5
    - 3 3 1.0   3 35 1.5
    - 4 4 1.0   4 36 1.5
    - 5 5 1.0   5 37 1.5
    - 6 6 1.0   6 38 1.5
    - 7 7 1.0   7 39 1.5
    - 8 8 1.0   8 40 1.5
    - 9 9 1.0   9 41 2.0
    - 10 10 1.0   10 42 2.0
    - 11 11 1.0   11 43 2.0
    - 12 12 1.0   12 44 2.0
    - 13 13 1.0   13 45 2.0
    - 14 14 1.0   14 46 2.0
    - 15 15 1.0   15 47 2.0
    - 16 16 1.0   16 48 2.0
    - 17 17 1.0   17 49 2.0
    - 18 18 1.0   18 50 2.0
    - 19 19 1.0   19 51 2.0
    - 20 20 1.0   20 52 2.0
    - 21 21 1.0   21 53 2.0
    - 22 22 1.0   22 54 2.0
    - 23 23 1.0   23 55 2.0
    - 24 24 1.0   24 56 2.0
    - 25 25 1.5   25 57 2.0
    - 26 26 1.5   26 58 2.0
    - 27 27 1.5   27 59 2.0
    - 28 28 1.5   28 60 2.0
    - 29 29 1.5   29 61 2.0
    - 30 30 1.5   30 62 2.0
    - 31 31 1.5   31 63 2.0
    - 32 32 1.5   32 64 2.0
    - 33 33 1.5   33 25 1.5
    - 34 34 1.5   34 26 1.5
    - 35 35 1.5   35 27 1.5
    - 36 36 1.5   36 28 1.5
    - 37 37 1.5   37 29 1.5
    - 38 38 1.5   38 30 1.5
    - 39 39 1.5   39 31 1.5
    - 40 40 1.5   40 32 1.5
    - 41 41 2.0   41 17 1.0
    - 42 42 2.0   42 18 1.0
    - 43 43 2.0   43 19 1.0
    - 44 44 2.0   44 20 1.0
    - 45 45 2.0   45 21 1.0
    - 46 46 2.0   46 22 1.0
    - 47 47 2.0   47 23 1.0
    - 48 48 2.0   48 24 1.0
    -
    -

    diff --git a/docs/html/node69.html b/docs/html/node69.html index 79a9d84c..dd04cb65 100644 --- a/docs/html/node69.html +++ b/docs/html/node69.html @@ -3,8 +3,8 @@ -psb_gather -- Gather Global Dense Matrix - +Communication routines + @@ -14,257 +14,64 @@ - - - + + + -

    -psb_gather -- Gather Global Dense Matrix -

    - -

    -These subroutines collect the portions of global dense matrix -distributed over all process into one single array stored on one -process. - -

    -

    -
    - - -\begin{displaymath}glob\_x \leftarrow collect(loc\_x_i) \end{displaymath} -
    -
    -

    -where: -
    -
    $glob\_x$
    -
    is the global submatrix -$glob\_x_{1:m,1:n}$ -
    -
    $loc\_x_i$
    -
    is the local portion of global dense matrix on -process $i$. -
    -
    $collect$
    -
    is the collect function. -
    -
    +

    +Communication routines +

    +The routines in this chapter implement various global communication operators +on vectors associated with a discretization mesh. For auxiliary communication +routines not tied to a discretization space see 6.

    -

    -
    - - - -
    Table 16: -Data types
    -
    - - - - - - - - - - - - - - - - - - - -
    $x_i, y$Subroutine
    Integerpsb_gather
    Short Precision Realpsb_gather
    Long Precision Realpsb_gather
    Short Precision Complexpsb_gather
    Long Precision Complexpsb_gather
    -
    -
    -

    -
    - -

    -
    -\begin{lstlisting}
-call psb_gather(glob_x, loc_x, desc_a, info, root)
-call psb_gather(glob_x, loc_x, desc_a, info, root)
-\end{lstlisting} -
    - -

    -

    -
    Type:
    -
    Synchronous. -
    -
    On Entry
    -
    -
    -
    loc_x
    -
    the local portion of global dense matrix -$glob\_x$. -
    -Scope: local -
    -Type: required -
    -Intent: in. -
    -Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type -indicated in Table 16. -
    -
    desc_a
    -
    contains data structures for communications. -
    -Scope: local -
    -Type: required -
    -Intent: in. -
    -Specified as: a structured data of type descdatapsb_desc_type. -
    -
    root
    -
    The process that holds the global copy. If $root=-1$ all - the processes will have a copy of the global vector. -
    -Scope: global -
    -Type: optional -
    -Intent: in. -
    -Specified as: an integer variable -$-1\le root\le np-1$, default $-1$. -
    -
    On Return
    -
    -
    -
    glob_x
    -
    The array where the local parts must be gathered. -
    -Scope: global -
    -Type: required -
    -Intent: out. -
    -Specified as: a rank one or two array with the ALLOCATABLE attribute. -
    -
    info
    -
    Error code. -
    -Scope: local -
    -Type: required -
    -Intent: out. -
    -An integer value; 0 means no error has been detected. -
    -
    - -

    - -

    - +

    + +Subsections + + + +

    diff --git a/docs/html/node7.html b/docs/html/node7.html index 155a14f7..2823bee4 100644 --- a/docs/html/node7.html +++ b/docs/html/node7.html @@ -22,26 +22,26 @@ @@ -61,7 +61,7 @@ to the constraints outlined in sec. 2.3< $1\dots n_{\hbox{row}_i}$ --> $1\dots n_{\hbox{row}_i}$; @@ -70,7 +70,7 @@ to the constraints outlined in sec. 2.3< $n_{\hbox{row}_i}+1\dots n_{\hbox{col}_i}$ --> $n_{\hbox{row}_i}+1\dots n_{\hbox{col}_i}$; diff --git a/docs/html/node70.html b/docs/html/node70.html index d16ab510..cca8cb37 100644 --- a/docs/html/node70.html +++ b/docs/html/node70.html @@ -3,8 +3,8 @@ -psb_scatter -- Scatter Global Dense Matrix - +psb_halo -- Halo Data Communication + @@ -14,98 +14,77 @@ + - + -

    -psb_scatter -- Scatter Global Dense Matrix +

    +psb_halo -- Halo Data Communication

    -These subroutines scatters the portions of global dense matrix owned -by a process to all the processes in the processes grid. +These subroutines gathers the values of the halo +elements:


    \begin{displaymath}loc\_x_i \leftarrow scatter(glob\_x) \end{displaymath} + WIDTH="43" HEIGHT="24" BORDER="0" + SRC="img65.png" + ALT="\begin{displaymath}x \leftarrow x \end{displaymath}">

    where:
    $glob\_x$
    -
    is the global matrix -$glob\_x_{1:m,1:n}$ -
    -
    $loc\_x_i$
    -
    is the local portion of global dense matrix on -process $i$. -
    -
    $scatter$
    -
    is the scatter function. + WIDTH="13" HEIGHT="14" ALIGN="BOTTOM" BORDER="0" + SRC="img20.png" + ALT="$x$"> +
    is a global dense submatrix.


    -
    +
    @@ -113,25 +92,28 @@ Data types
    Table 17: Data types
    + WIDTH="14" HEIGHT="14" ALIGN="BOTTOM" BORDER="0" + SRC="img22.png" + ALT="$\alpha$">, $x$ - + - + - + - + - +
    $x_i, y$ Subroutine
    Integerpsb_scatterpsb_halo
    Short Precision Realpsb_scatterpsb_halo
    Long Precision Realpsb_scatterpsb_halo
    Short Precision Complexpsb_scatterpsb_halo
    Long Precision Complexpsb_scatterpsb_halo
    @@ -143,10 +125,11 @@ Data types


    \begin{lstlisting}
-call psb_scatter(glob_x, loc_x, desc_a, info, root, mold)
+call psb_halo(x, desc_a, info)
+call psb_halo(x, desc_a, info, work, data)
 \end{lstlisting}
    @@ -158,16 +141,21 @@ call psb_scatter(glob_x, loc_x, desc_a, info, root, mold)

    On Entry
    -
    glob_x
    -
    The array that must be scattered into local pieces. +
    x
    +
    global dense matrix $x$.
    -Scope: global +Scope: local
    -Type: required +Type: required
    -Intent: in. +Intent: inout.
    -Specified as: a rank one or two array. +Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type +containing numbers of type specified in +Table 17.
    desc_a
    contains data structures for communications. @@ -180,61 +168,57 @@ Intent: in.
    Specified as: a structured data of type descdatapsb_desc_type.
    -
    root
    -
    The process that holds the global copy. If $root=-1$ all - the processes have a copy of the global vector. +
    work
    +
    the work array.
    -Scope: global +Scope: local
    Type: optional
    -Intent: in. +Intent: inout.
    -Specified as: an integer variable -$-1\le root\le np-1$, default -psb_root_, i.e. process 0. +Specified as: a rank one array of the same type of $x$.
    -
    mold
    -
    The desired dynamic type for the internal vector storage. +
    data
    +
    index list selector.
    -Scope: local. -
    -Type: optional. +Scope: global
    -Intent: in. +Type: optional
    -Specified as: an object of a class derived from vbasedatapsb_T_base_vect_type; this is -only allowed when loc_x is of type vdatapsb_T_vect_type. +Specified as: an integer. Values:psb_comm_halo_,psb_comm_mov_, +psb_comm_ext_, default: psb_comm_halo_. Chooses the +index list on which to base the data exchange. + +

    On Return
    -
    loc_x
    -
    the local portion of global dense matrix -$glob\_x$. +
    x
    +
    global dense result matrix $x$.
    Scope: local
    -Type: required +Type: required
    -Intent: out. +Intent: inout.
    -Specified as: a rank one or two ALLOCATABLE array or an object of type vdatapsb_T_vect_type containing numbers of the type -indicated in Table 17. +Returned as: a rank one or two array +containing numbers of type specified in +Table 17.
    info
    -
    Error code. +
    the local portion of result submatrix $y$.
    Scope: local
    @@ -242,34 +226,406 @@ Type: required
    Intent: out.
    -An integer value; 0 means no error has been detected. +An integer value that contains an error code.
    +
    + + + +
    Figure 7: +Sample discretization mesh.
    +
    +\includegraphics[scale=0.45]{figures/try8x8.eps} + +\includegraphics[scale=0.45]{figures/try8x8} + +
    +
    + +

    +Usage Example +Consider the discretization mesh depicted in fig. 7, +partitioned among two processes as shown by the dashed line; the data +distribution is such that each process will own 32 entries in the +index space, with a halo made of 8 entries placed at local indices 33 +through 40. If process 0 assigns an initial value of 1 to its entries +in the $x$ vector, and process 1 assigns a value of 2, then after a +call to psb_halo the contents of the local vectors will be the +following: +
    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +Process 0  +Process 1
    + I GLOB(I) X(I)   I GLOB(I) X(I)
    + 1 1 1.0   1 33 2.0
    + 2 2 1.0   2 34 2.0
    + 3 3 1.0   3 35 2.0
    + 4 4 1.0   4 36 2.0
    + 5 5 1.0   5 37 2.0
    + 6 6 1.0   6 38 2.0
    + 7 7 1.0   7 39 2.0
    + 8 8 1.0   8 40 2.0
    + 9 9 1.0   9 41 2.0
    + 10 10 1.0   10 42 2.0
    + 11 11 1.0   11 43 2.0
    + 12 12 1.0   12 44 2.0
    + 13 13 1.0   13 45 2.0
    + 14 14 1.0   14 46 2.0
    + 15 15 1.0   15 47 2.0
    + 16 16 1.0   16 48 2.0
    + 17 17 1.0   17 49 2.0
    + 18 18 1.0   18 50 2.0
    + 19 19 1.0   19 51 2.0
    + 20 20 1.0   20 52 2.0
    +21 21 1.0   21 53 2.0
    +22 22 1.0   22 54 2.0
    +23 23 1.0   23 55 2.0
    +24 24 1.0   24 56 2.0
    +25 25 1.0   25 57 2.0
    +26 26 1.0   26 58 2.0
    +27 27 1.0   27 59 2.0
    +28 28 1.0   28 60 2.0
    +29 29 1.0   29 61 2.0
    +30 30 1.0   30 62 2.0
    +31 31 1.0   31 63 2.0
    +32 32 1.0   32 64 2.0
    +33 33 2.0   33 25 1.0
    +34 34 2.0   34 26 1.0
    +35 35 2.0   35 27 1.0
    +36 36 2.0   36 28 1.0
    +37 37 2.0   37 29 1.0
    +38 38 2.0   38 30 1.0
    +39 39 2.0   39 31 1.0
    +40 40 2.0   40 32 1.0
    +
    +

    diff --git a/docs/html/node71.html b/docs/html/node71.html index ae405046..1947ee48 100644 --- a/docs/html/node71.html +++ b/docs/html/node71.html @@ -3,8 +3,8 @@ -Data management routines - +psb_ovrl -- Overlap Update + @@ -14,120 +14,748 @@ - - - + + + -

    - +

    +psb_ovrl -- Overlap Update +

    + +

    +These subroutines applies an overlap operator to the input vector: + +

    +

    +
    + + +\begin{displaymath}x \leftarrow Q x \end{displaymath} +
    +
    +

    +where: +
    +
    $x$
    +
    is the global dense submatrix $x$ +
    +
    $Q$
    +
    is the overlap operator; it is the composition of two +operators $P_a$ and $P^{T}$. +
    +
    + +

    +

    +
    + + + +
    Table 18: +Data types
    +
    + + + + + + + + + + + + + + + + +
    $x$Subroutine
    Short Precision Realpsb_ovrl
    Long Precision Realpsb_ovrl
    Short Precision Complexpsb_ovrl
    Long Precision Complexpsb_ovrl
    +
    +
    +

    +
    + +

    +
    +\begin{lstlisting}
+call psb_ovrl(x, desc_a, info)
+call psb_ovrl(x, desc_a, info, update=update_type, work=work)
+\end{lstlisting} +
    + +

    +

    +
    Type:
    +
    Synchronous. +
    +
    On Entry
    +
    +
    +
    x
    +
    global dense matrix $x$. +
    +Scope: local +
    +Type: required +
    +Intent: inout. +
    +Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type +containing numbers of type specified in +Table 18. +
    +
    desc_a
    +
    contains data structures for communications. +
    +Scope: local +
    +Type: required +
    +Intent: in. +
    +Specified as: a structured data of type descdatapsb_desc_type. +
    +
    update
    +
    Update operator. +
    +
    update = psb_none_
    +
    Do nothing; +
    +
    update = psb_add_
    +
    Sum overlap entries, i.e. apply $P^T$; +
    +
    update = psb_avg_
    +
    Average overlap entries, i.e. apply $P_aP^T$; +
    +
    +Scope: global +
    +Intent: in. +
    +Default: +$update\_type = psb\_avg\_ $ +
    +Scope: global +
    +Specified as: a integer variable. +
    +
    work
    +
    the work array. +
    +Scope: local +
    +Type: optional +
    +Intent: inout. +
    +Specified as: a one dimensional array of the same type of $x$. + +

    +

    +
    On Return
    +
    +
    +
    x
    +
    global dense result matrix $x$. +
    +Scope: local +
    +Type: required +
    +Intent: inout. +
    +Specified as: an array of rank one or two +containing numbers of type specified in +Table 18. +
    +
    info
    +
    Error code. +
    +Scope: local +
    +Type: required +
    +Intent: out.
    -Data management routines - +An integer value; 0 means no error has been detected. +
    +

    -


    - -Subsections - - - -

    +Notes + +
      +
    1. If there is no overlap in the data distribution associated with + the descriptor, no operations are performed; +
    2. +
    3. The operator $P^{T}$ performs the reduction sum of overlap +elements; it is a “prolongation” operator $P^T$ that +replicates overlap elements, accounting for the physical replication +of data; +
    4. +
    5. The operator $P_a$ performs a scaling on the overlap elements by +the amount of replication; thus, when combined with the reduction +operator, it implements the average of replicated elements over all of +their instances. +
    6. +
    + +

    + +

    + + + +
    Figure 8: +Sample discretization mesh.
    +
    +\includegraphics[scale=0.65]{figures/try8x8_ov.eps} + +\includegraphics[scale=0.65]{figures/try8x8_ov} + +
    +
    + +Example of use +Consider the discretization mesh depicted in fig. 8, +partitioned among two processes as shown by the dashed lines, with an +overlap of 1 extra layer with respect to the partition of +fig. 7; the data +distribution is such that each process will own 40 entries in the +index space, with an overlap of 16 entries placed at local indices 25 +through 40; the halo will run from local index 41 through local index 48.. If process 0 assigns an initial value of 1 to its entries +in the $x$ vector, and process 1 assigns a value of 2, then after a +call to psb_ovrl with psb_avg_ and a call to +psb_halo_ the contents of the local vectors will be the +following (showing a transition among the two subdomains) + +

    +
    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +Process 0  +Process 1
    + I GLOB(I) X(I)   I GLOB(I) X(I)
    + 1 1 1.0   1 33 1.5
    + 2 2 1.0   2 34 1.5
    + 3 3 1.0   3 35 1.5
    + 4 4 1.0   4 36 1.5
    + 5 5 1.0   5 37 1.5
    + 6 6 1.0   6 38 1.5
    + 7 7 1.0   7 39 1.5
    + 8 8 1.0   8 40 1.5
    + 9 9 1.0   9 41 2.0
    + 10 10 1.0   10 42 2.0
    + 11 11 1.0   11 43 2.0
    + 12 12 1.0   12 44 2.0
    + 13 13 1.0   13 45 2.0
    + 14 14 1.0   14 46 2.0
    + 15 15 1.0   15 47 2.0
    + 16 16 1.0   16 48 2.0
    + 17 17 1.0   17 49 2.0
    + 18 18 1.0   18 50 2.0
    + 19 19 1.0   19 51 2.0
    + 20 20 1.0   20 52 2.0
    + 21 21 1.0   21 53 2.0
    + 22 22 1.0   22 54 2.0
    + 23 23 1.0   23 55 2.0
    + 24 24 1.0   24 56 2.0
    + 25 25 1.5   25 57 2.0
    + 26 26 1.5   26 58 2.0
    + 27 27 1.5   27 59 2.0
    + 28 28 1.5   28 60 2.0
    + 29 29 1.5   29 61 2.0
    + 30 30 1.5   30 62 2.0
    + 31 31 1.5   31 63 2.0
    + 32 32 1.5   32 64 2.0
    + 33 33 1.5   33 25 1.5
    + 34 34 1.5   34 26 1.5
    + 35 35 1.5   35 27 1.5
    + 36 36 1.5   36 28 1.5
    + 37 37 1.5   37 29 1.5
    + 38 38 1.5   38 30 1.5
    + 39 39 1.5   39 31 1.5
    + 40 40 1.5   40 32 1.5
    + 41 41 2.0   41 17 1.0
    + 42 42 2.0   42 18 1.0
    + 43 43 2.0   43 19 1.0
    + 44 44 2.0   44 20 1.0
    + 45 45 2.0   45 21 1.0
    + 46 46 2.0   46 22 1.0
    + 47 47 2.0   47 23 1.0
    + 48 48 2.0   48 24 1.0
    +
    + +

    + +

    + diff --git a/docs/html/node72.html b/docs/html/node72.html index 6277372e..dbff365a 100644 --- a/docs/html/node72.html +++ b/docs/html/node72.html @@ -3,8 +3,8 @@ -psb_cdall -- Allocates a communication descriptor - +psb_gather -- Gather Global Dense Matrix + @@ -16,226 +16,215 @@ - + -

    -psb_cdall -- Allocates a communication descriptor +

    +psb_gather -- Gather Global Dense Matrix

    -

    -call psb_cdall(icontxt, desc_a, info,mg=mg,parts=parts)
    -call psb_cdall(icontxt, desc_a, info,vg=vg,[mg=mg,flag=flag])
    -call psb_cdall(icontxt, desc_a, info,vl=vl,[nl=nl,globalcheck=.false.,lidx=lidx])
    -call psb_cdall(icontxt, desc_a, info,nl=nl)
    -call psb_cdall(icontxt, desc_a, info,mg=mg,repl=.true.)
    -
    +These subroutines collect the portions of global dense matrix +distributed over all process into one single array stored on one +process.

    -This subroutine initializes the communication descriptor associated -with an index space. One of the optional arguments -parts, vg, vl, nl or repl -must be specified, thereby choosing -the specific initialization strategy. +

    +
    + + +\begin{displaymath}glob\_x \leftarrow collect(loc\_x_i) \end{displaymath} +
    +
    +

    +where:
    -
    On Entry
    -
    -
    -
    Type:
    -
    Synchronous. -
    -
    icontxt
    -
    the communication context. -
    -Scope:global. -
    -Type:required. -
    -Intent: in. -
    -Specified as: an integer value. -
    -
    vg
    -
    Data allocation: each index $i\in \{1\dots mg\}$ is allocated - to process $vg(i)$. -
    -Scope:global. -
    -Type:optional. -
    -Intent: in. -
    -Specified as: an integer array. + WIDTH="90" HEIGHT="30" ALIGN="MIDDLE" BORDER="0" + SRC="img81.png" + ALT="$glob\_x_{1:m,1:n}$">
    -
    flag
    -
    Specifies whether entries in $vg$ are zero- or one-based. -
    -Scope:global. -
    -Type:optional. -
    -Intent: in. -
    -Specified as: an integer value $0,1$, default $0$. - -

    -

    -
    mg
    -
    the (global) number of rows of the problem. -
    -Scope:global. -
    -Type:optional. -
    -Intent: in. -
    -Specified as: an integer value. It is required if parts or -repl is specified, it is optional if vg is specified. +
    $loc\_x_i$
    +
    is the local portion of global dense matrix on +process $i$.
    -
    parts
    -
    the subroutine that defines the partitioning scheme. -
    -Scope:global. -
    -Type:required. -
    -Specified as: a subroutine. +
    $collect$
    +
    is the collect function.
    -
    vl
    -
    Data allocation: the set of global indices - $vl(1:nl)$ belonging to the calling process. -
    -Scope:local. +
    + +

    +

    +
    + + + +
    Table 19: +Data types
    +
    + + + + + + + + + + + + + + + + + + + +
    $x_i, y$Subroutine
    Integerpsb_gather
    Short Precision Realpsb_gather
    Long Precision Realpsb_gather
    Short Precision Complexpsb_gather
    Long Precision Complexpsb_gather
    +
    +
    +


    -Type:optional. + +


    -Intent: in. +\begin{lstlisting}
+call psb_gather(glob_x, loc_x, desc_a, info, root)
+call psb_gather(glob_x, loc_x, desc_a, info, root)
+\end{lstlisting}
    -Specified as: an integer array. + +

    +

    +
    Type:
    +
    Synchronous.
    -
    nl
    -
    Data allocation: in a generalized block-row distribution the - number of indices belonging to the current process. -
    -Scope:local. -
    -Type:optional. -
    -Intent: in. -
    -Specified as: an integer value. May be specified together with -vl. +
    On Entry
    +
    -
    repl
    -
    Data allocation: build a replicated index space - (i.e. all processes own all indices). +
    loc_x
    +
    the local portion of global dense matrix +$glob\_x$.
    -Scope:global. +Scope: local
    -Type:optional. +Type: required
    Intent: in.
    -Specified as: the logical value .true. +Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type +indicated in Table 19.
    -
    globalcheck
    -
    Data allocation: do global checks on the local - index lists vl +
    desc_a
    +
    contains data structures for communications.
    -Scope:global. +Scope: local
    -Type:optional. +Type: required
    Intent: in.
    -Specified as: a logical value, default: .false. +Specified as: a structured data of type descdatapsb_desc_type.
    -
    lidx
    -
    Data allocation: the set of local indices - $lidx(1:nl)$ to be assigned to the global indices $vl$. +
    root
    +
    The process that holds the global copy. If $root=-1$ all + the processes will have a copy of the global vector.
    -Scope:local. +Scope: global
    -Type:optional. +Type: optional
    Intent: in.
    -Specified as: an integer array. +Specified as: an integer variable +$-1\le root\le np-1$, default $-1$.
    -
    - -

    -

    On Return
    -
    desc_a
    -
    the communication descriptor. +
    glob_x
    +
    The array where the local parts must be gathered.
    -Scope:local. +Scope: global
    -Type:required. +Type: required
    Intent: out.
    -Specified as: a structured data of type descdatapsb_desc_type. +Specified as: a rank one or two array with the ALLOCATABLE attribute.
    info
    Error code. @@ -250,199 +239,30 @@ An integer value; 0 means no error has been detected.
    -

    -Notes - -

      -
    1. One of the optional arguments parts, vg, - vl, nl or repl must be specified, thereby choosing the - initialization strategy as follows: -
      -
      parts
      -
      In this case we have a subroutine specifying the mapping - between global indices and process/local index pairs. If this - optional argument is specified, then it is mandatory to - specify the argument mg as well. - The subroutine must conform to the following interface: -
      -  interface 
      -     subroutine psb_parts(glob_index,mg,np,pv,nv)
      -       integer, intent (in)  :: glob_index,np,mg
      -       integer, intent (out) :: nv, pv(*)
      -     end subroutine psb_parts
      -  end interface
      -
      - The input arguments are: -
      -
      glob_index
      -
      The global index to be mapped; - -
      -
      np
      -
      The number of processes in the mapping; - -
      -
      mg
      -
      The total number of global rows in the mapping; - -
      -
      - The output arguments are: -
      -
      nv
      -
      The number of entries in pv; - -
      -
      pv
      -
      A vector containing the indices of the processes to - which the global index should be assigend; each entry must satisfy - -$0\le pv(i) < np$; if $nv>1$ we have an index assigned to multiple - processes, i.e. we have an overlap among the subdomains. - -
      -
      -
      -
      vg
      -
      In this case the association between an index and a process - is specified via an integer vector vg(1:mg); - each index -$i\in \{1\dots mg\}$ is assigned to process $vg(i)$. - The vector vg must be identical on all - calling processes; its entries may have the ranges $(0\dots np-1)$ - or $(1\dots np)$ according to the value of flag. - The size $mg$ may be specified via the optional argument mg; - the default is to use the entire vector vg, thus having - mg=size(vg). -
      -
      vl
      -
      In this case we are specifying the list of indices - vl(1:nl) assigned to the current process; thus, the global - problem size $mg$ is given by - the range of the aggregate of the individual vectors vl specified - in the calling processes. The size may be specified via the optional - argument nl; the default is to use the entire vector - vl, thus having nl=size(vl). - If globalcheck=.true. the subroutine will check how many - times each entry in the global index space $(1\dots mg)$ is - specified in the input lists vl, thus allowing for the - presence of overlap in the input, and checking for “orphan” - indices. If globalcheck=.false., the subroutine will not - check for overlap, and may be significantly faster, but the user - is implicitly guaranteeing that there are neither orphan nor - overlap indices. -
      -
      lidx
      -
      The optional argument lidx is available for - those cases in which the user has already established a - global-to-local mapping; if it is specified, each index in - vl(i) will be mapped to the corresponding local index - lidx(i). When specifying the argument lidx the user - would also likely employ lidx in calls to psb_cdins - and local in calls to psb_spins and psb_geins; - see also sec. 2.3.1. -
      -
      nl
      -
      If this argument is specified alone (i.e. without vl) - the result is a generalized row-block distribution in which each - process $I$ gets assigned a consecutive chunk of $N_I=nl$ global - indices. -
      -
      repl
      -
      This arguments specifies to replicate all indices on - all processes. This is a special purpose data allocation that is - useful in the construction of some multilevel preconditioners. -
      -
      -
    2. -
    3. On exit from this routine the descriptor is in the build - state. -
    4. -
    5. Calling the routine with vg or parts implies that - every process will scan the entire index space to figure out the - local indices. -
    6. -
    7. Overlapped indices are possible with both parts and - vl invocations. -
    8. -
    9. When the subroutine is invoked with vl in - conjunction with globalcheck=.true., it will perform a scan - of the index space to search for overlap or orphan indices. -
    10. -
    11. When the subroutine is invoked with vl in - conjunction with globalcheck=.false., no index space scan - will take place. Thus it is the responsibility of the user to make - sure that the indices specified in vl have neither orphans nor - overlaps; if this assumption fails, results will be - unpredictable. -
    12. -
    13. Orphan and overlap indices are - impossible by construction when the subroutine is invoked with - nl (alone), or vg. -
    14. -
    -

    diff --git a/docs/html/node73.html b/docs/html/node73.html index 364e18a0..924e3506 100644 --- a/docs/html/node73.html +++ b/docs/html/node73.html @@ -3,8 +3,8 @@ -psb_cdins -- Communication descriptor insert routine - +psb_scatter -- Scatter Global Dense Matrix + @@ -14,133 +14,196 @@ - - + -

    -psb_cdins -- Communication descriptor insert - routine +

    +psb_scatter -- Scatter Global Dense Matrix

    -

    -call psb_cdins(nz, ia, ja, desc_a, info [,ila,jla])
    -call psb_cdins(nz,ja,desc,info[,jla,mask,lidx])
    -
    +These subroutines scatters the portions of global dense matrix owned +by a process to all the processes in the processes grid.

    -This subroutine examines the edges of the graph associated with the -discretization mesh (and isomorphic to the sparsity pattern of a -linear system coefficient matrix), storing them as necessary into the -communication descriptor. In the first form the edges are specified as -pairs of indices $ia(i),ja(i)$; the starting index $ia(i)$ should -belong to the current process. -In the second form only the remote indices $ja(i)$ are specified. +

    +
    + -

    +\begin{displaymath}loc\_x_i \leftarrow scatter(glob\_x) \end{displaymath} +

    +
    +

    +where:
    -
    Type:
    -
    Asynchronous. +
    $glob\_x$
    +
    is the global matrix +$glob\_x_{1:m,1:n}$
    -
    On Entry
    -
    +
    $loc\_x_i$
    +
    is the local portion of global dense matrix on +process $i$.
    -
    nz
    -
    the number of points being inserted. -
    -Scope: local. +
    $scatter$
    +
    is the scatter function. +
    +
    + +

    +

    +
    + + + +
    Table 20: +Data types
    +
    + + + + + + + + + + + + + + + + + + + +
    $x_i, y$Subroutine
    Integerpsb_scatter
    Short Precision Realpsb_scatter
    Long Precision Realpsb_scatter
    Short Precision Complexpsb_scatter
    Long Precision Complexpsb_scatter
    +
    +
    +


    -Type: required. + +


    -Intent: in. +\begin{lstlisting}
+call psb_scatter(glob_x, loc_x, desc_a, info, root, mold)
+\end{lstlisting}
    -Specified as: an integer value. + +

    +

    +
    Type:
    +
    Synchronous. +
    +
    On Entry
    +
    -
    ia
    -
    the indices of the starting vertex of the edges being inserted. +
    glob_x
    +
    The array that must be scattered into local pieces.
    -Scope: local. +Scope: global
    -Type: required. +Type: required
    Intent: in.
    -Specified as: an integer array of length $nz$. +Specified as: a rank one or two array.
    -
    ja
    -
    the indices of the end vertex of the edges being inserted. +
    desc_a
    +
    contains data structures for communications.
    -Scope: local. +Scope: local
    -Type: required. +Type: required
    Intent: in.
    -Specified as: an integer array of length $nz$. +Specified as: a structured data of type descdatapsb_desc_type.
    -
    mask
    -
    Mask entries in ja, they are inserted only when the - corresponding mask entries are .true. +
    root
    +
    The process that holds the global copy. If $root=-1$ all + the processes have a copy of the global vector.
    -Scope: local. +Scope: global
    -Type: optional. +Type: optional
    Intent: in.
    -Specified as: a logical array of length $nz$, default .true.. +Specified as: an integer variable +$-1\le root\le np-1$, default +psb_root_, i.e. process 0.
    -
    lidx
    -
    User defined local indices for ja. +
    mold
    +
    The desired dynamic type for the internal vector storage.
    Scope: local.
    @@ -148,28 +211,27 @@ Type: optional.
    Intent: in.
    -Specified as: an integer array of length $nz$. +Specified as: an object of a class derived from vbasedatapsb_T_base_vect_type; this is +only allowed when loc_x is of type vdatapsb_T_vect_type.
    -
    - -

    -

    On Return
    -
    desc_a
    -
    the updated communication descriptor. +
    loc_x
    +
    the local portion of global dense matrix +$glob\_x$.
    -Scope:local. +Scope: local
    -Type:required. +Type: required
    -Intent: inout. +Intent: out.
    -Specified as: a structured data of type descdatapsb_desc_type. +Specified as: a rank one or two ALLOCATABLE array or an object of type vdatapsb_T_vect_type containing numbers of the type +indicated in Table 20.
    info
    Error code. @@ -182,76 +244,32 @@ Intent: out.
    An integer value; 0 means no error has been detected.
    -
    ila
    -
    the local indices of the starting vertex of the edges being inserted. -
    -Scope: local. -
    -Type: optional. -
    -Intent: out. -
    -Specified as: an integer array of length $nz$. -
    -
    jla
    -
    the local indices of the end vertex of the edges being inserted. -
    -Scope: local. -
    -Type: optional. -
    -Intent: out. -
    -Specified as: an integer array of length $nz$. - -

    -

    -Notes - -
      -
    1. This routine may only be called if the descriptor is in the - build state; -
    2. -
    3. This routine automatically ignores edges that do not -insist on the current process, i.e. edges for which neither the starting -nor the end vertex belong to the current process. -
    4. -
    5. The second form of this routine will be useful when dealing with - user-specified index mappings; see also 2.3.1. -
    6. -

    diff --git a/docs/html/node74.html b/docs/html/node74.html index dce0fc24..4d97a7eb 100644 --- a/docs/html/node74.html +++ b/docs/html/node74.html @@ -3,8 +3,8 @@ -psb_cdasb -- Communication descriptor assembly routine - +Data management routines + @@ -14,119 +14,119 @@ - - - + + + -

    -psb_cdasb -- Communication descriptor assembly - routine -

    - -

    -

    -call psb_cdasb(desc_a, info [, mold])
    -
    - -

    -

    -
    Type:
    -
    Synchronous. -
    -
    On Entry
    -
    -
    -
    desc_a
    -
    the communication descriptor. -
    -Scope:local. -
    -Type:required. -
    -Intent: inout. -
    -Specified as: a structured data of type descdatapsb_desc_type. -
    -
    mold
    -
    The desired dynamic type for the internal index storage. -
    -Scope: local. -
    -Type: optional. -
    -Intent: in. +

    +
    -Specified as: a object of type derived from (integer) vbasedatapsb_T_base_vect_type. -

    -
    +Data management routines +

    -

    -
    On Return
    -
    -
    -
    desc_a
    -
    the communication descriptor. -
    -Scope:local. -
    -Type:required. -
    -Intent: inout. -
    -Specified as: a structured data of type descdatapsb_desc_type. -
    -
    info
    -
    Error code. -
    -Scope: local -
    -Type: required -
    -Intent: out. -
    -An integer value; 0 means no error has been detected. -
    -
    -Notes - -
      -
    1. On exit from this routine the descriptor is in the assembled - state. -
    2. -
    +

    + +Subsections -

    +

    +

    diff --git a/docs/html/node75.html b/docs/html/node75.html index 508603a4..dc27405d 100644 --- a/docs/html/node75.html +++ b/docs/html/node75.html @@ -3,8 +3,8 @@ -psb_cdcpy -- Copies a communication descriptor - +psb_cdall -- Allocates a communication descriptor + @@ -16,68 +16,209 @@ - + -

    -psb_cdcpy -- Copies a communication descriptor +

    +psb_cdall -- Allocates a communication descriptor

    -call psb_cdcpy(desc_in, desc_out, info)
    +call psb_cdall(icontxt, desc_a, info,mg=mg,parts=parts)
    +call psb_cdall(icontxt, desc_a, info,vg=vg,[mg=mg,flag=flag])
    +call psb_cdall(icontxt, desc_a, info,vl=vl,[nl=nl,globalcheck=.false.,lidx=lidx])
    +call psb_cdall(icontxt, desc_a, info,nl=nl)
    +call psb_cdall(icontxt, desc_a, info,mg=mg,repl=.true.)
     

    +This subroutine initializes the communication descriptor associated +with an index space. One of the optional arguments +parts, vg, vl, nl or repl +must be specified, thereby choosing +the specific initialization strategy.

    -
    Type:
    -
    Asynchronous. -
    -
    On Entry
    +
    On Entry
    -
    desc_in
    -
    the communication descriptor. +
    Type:
    +
    Synchronous. +
    +
    icontxt
    +
    the communication context.
    -Scope:local. +Scope:global.
    Type:required.
    Intent: in.
    -Specified as: a structured data of type descdatapsb_desc_type. +Specified as: an integer value. +
    +
    vg
    +
    Data allocation: each index +$i\in \{1\dots mg\}$ is allocated + to process $vg(i)$. +
    +Scope:global. +
    +Type:optional. +
    +Intent: in. +
    +Specified as: an integer array. +
    +
    flag
    +
    Specifies whether entries in $vg$ are zero- or one-based. +
    +Scope:global. +
    +Type:optional. +
    +Intent: in. +
    +Specified as: an integer value $0,1$, default $0$.

    +
    mg
    +
    the (global) number of rows of the problem. +
    +Scope:global. +
    +Type:optional. +
    +Intent: in. +
    +Specified as: an integer value. It is required if parts or +repl is specified, it is optional if vg is specified. +
    +
    parts
    +
    the subroutine that defines the partitioning scheme. +
    +Scope:global. +
    +Type:required. +
    +Specified as: a subroutine. +
    +
    vl
    +
    Data allocation: the set of global indices + $vl(1:nl)$ belonging to the calling process. +
    +Scope:local. +
    +Type:optional. +
    +Intent: in. +
    +Specified as: an integer array. +
    +
    nl
    +
    Data allocation: in a generalized block-row distribution the + number of indices belonging to the current process. +
    +Scope:local. +
    +Type:optional. +
    +Intent: in. +
    +Specified as: an integer value. May be specified together with +vl. +
    +
    repl
    +
    Data allocation: build a replicated index space + (i.e. all processes own all indices). +
    +Scope:global. +
    +Type:optional. +
    +Intent: in. +
    +Specified as: the logical value .true. +
    +
    globalcheck
    +
    Data allocation: do global checks on the local + index lists vl +
    +Scope:global. +
    +Type:optional. +
    +Intent: in. +
    +Specified as: a logical value, default: .false. +
    +
    lidx
    +
    Data allocation: the set of local indices + $lidx(1:nl)$ to be assigned to the global indices $vl$. +
    +Scope:local. +
    +Type:optional. +
    +Intent: in. +
    +Specified as: an integer array. +

    @@ -85,8 +226,8 @@ Specified as: a structured data of type descdatapsb_desc_type.

    On Return
    -
    desc_out
    -
    the communication descriptor copy. +
    desc_a
    +
    the communication descriptor.
    Scope:local.
    @@ -110,7 +251,200 @@ An integer value; 0 means no error has been detected.

    -


    +Notes + +
      +
    1. One of the optional arguments parts, vg, + vl, nl or repl must be specified, thereby choosing the + initialization strategy as follows: +
      +
      parts
      +
      In this case we have a subroutine specifying the mapping + between global indices and process/local index pairs. If this + optional argument is specified, then it is mandatory to + specify the argument mg as well. + The subroutine must conform to the following interface: +
      +  interface 
      +     subroutine psb_parts(glob_index,mg,np,pv,nv)
      +       integer, intent (in)  :: glob_index,np,mg
      +       integer, intent (out) :: nv, pv(*)
      +     end subroutine psb_parts
      +  end interface
      +
      + The input arguments are: +
      +
      glob_index
      +
      The global index to be mapped; + +
      +
      np
      +
      The number of processes in the mapping; + +
      +
      mg
      +
      The total number of global rows in the mapping; + +
      +
      + The output arguments are: +
      +
      nv
      +
      The number of entries in pv; + +
      +
      pv
      +
      A vector containing the indices of the processes to + which the global index should be assigend; each entry must satisfy + +$0\le pv(i) < np$; if $nv>1$ we have an index assigned to multiple + processes, i.e. we have an overlap among the subdomains. + +
      +
      +
      +
      vg
      +
      In this case the association between an index and a process + is specified via an integer vector vg(1:mg); + each index +$i\in \{1\dots mg\}$ is assigned to process $vg(i)$. + The vector vg must be identical on all + calling processes; its entries may have the ranges $(0\dots np-1)$ + or $(1\dots np)$ according to the value of flag. + The size $mg$ may be specified via the optional argument mg; + the default is to use the entire vector vg, thus having + mg=size(vg). +
      +
      vl
      +
      In this case we are specifying the list of indices + vl(1:nl) assigned to the current process; thus, the global + problem size $mg$ is given by + the range of the aggregate of the individual vectors vl specified + in the calling processes. The size may be specified via the optional + argument nl; the default is to use the entire vector + vl, thus having nl=size(vl). + If globalcheck=.true. the subroutine will check how many + times each entry in the global index space $(1\dots mg)$ is + specified in the input lists vl, thus allowing for the + presence of overlap in the input, and checking for “orphan” + indices. If globalcheck=.false., the subroutine will not + check for overlap, and may be significantly faster, but the user + is implicitly guaranteeing that there are neither orphan nor + overlap indices. +
      +
      lidx
      +
      The optional argument lidx is available for + those cases in which the user has already established a + global-to-local mapping; if it is specified, each index in + vl(i) will be mapped to the corresponding local index + lidx(i). When specifying the argument lidx the user + would also likely employ lidx in calls to psb_cdins + and local in calls to psb_spins and psb_geins; + see also sec. 2.3.1. +
      +
      nl
      +
      If this argument is specified alone (i.e. without vl) + the result is a generalized row-block distribution in which each + process $I$ gets assigned a consecutive chunk of $N_I=nl$ global + indices. +
      +
      repl
      +
      This arguments specifies to replicate all indices on + all processes. This is a special purpose data allocation that is + useful in the construction of some multilevel preconditioners. +
      +
      +
    2. +
    3. On exit from this routine the descriptor is in the build + state. +
    4. +
    5. Calling the routine with vg or parts implies that + every process will scan the entire index space to figure out the + local indices. +
    6. +
    7. Overlapped indices are possible with both parts and + vl invocations. +
    8. +
    9. When the subroutine is invoked with vl in + conjunction with globalcheck=.true., it will perform a scan + of the index space to search for overlap or orphan indices. +
    10. +
    11. When the subroutine is invoked with vl in + conjunction with globalcheck=.false., no index space scan + will take place. Thus it is the responsibility of the user to make + sure that the indices specified in vl have neither orphans nor + overlaps; if this assumption fails, results will be + unpredictable. +
    12. +
    13. Orphan and overlap indices are + impossible by construction when the subroutine is invoked with + nl (alone), or vg. +
    14. +
    + +

    + +

    + diff --git a/docs/html/node76.html b/docs/html/node76.html index 6a43fb9f..46ac9253 100644 --- a/docs/html/node76.html +++ b/docs/html/node76.html @@ -3,8 +3,8 @@ -psb_cdfree -- Frees a communication descriptor - +psb_cdins -- Communication descriptor insert routine + @@ -16,65 +16,142 @@ - + -

    -psb_cdfree -- Frees a communication descriptor +

    +psb_cdins -- Communication descriptor insert + routine

    -call psb_cdfree(desc_a, info)
    +call psb_cdins(nz, ia, ja, desc_a, info [,ila,jla])
    +call psb_cdins(nz,ja,desc,info[,jla,mask,lidx])
     
    +

    +This subroutine examines the edges of the graph associated with the +discretization mesh (and isomorphic to the sparsity pattern of a +linear system coefficient matrix), storing them as necessary into the +communication descriptor. In the first form the edges are specified as +pairs of indices $ia(i),ja(i)$; the starting index $ia(i)$ should +belong to the current process. +In the second form only the remote indices $ja(i)$ are specified. +

    Type:
    -
    Synchronous. +
    Asynchronous.
    On Entry
    -
    desc_a
    -
    the communication descriptor to be freed. +
    nz
    +
    the number of points being inserted.
    -Scope:local. +Scope: local.
    -Type:required. +Type: required.
    -Intent: inout. +Intent: in.
    -Specified as: a structured data of type descdatapsb_desc_type. +Specified as: an integer value. +
    +
    ia
    +
    the indices of the starting vertex of the edges being inserted. +
    +Scope: local. +
    +Type: required. +
    +Intent: in. +
    +Specified as: an integer array of length $nz$. +
    +
    ja
    +
    the indices of the end vertex of the edges being inserted. +
    +Scope: local. +
    +Type: required. +
    +Intent: in. +
    +Specified as: an integer array of length $nz$. +
    +
    mask
    +
    Mask entries in ja, they are inserted only when the + corresponding mask entries are .true. +
    +Scope: local. +
    +Type: optional. +
    +Intent: in. +
    +Specified as: a logical array of length $nz$, default .true.. +
    +
    lidx
    +
    User defined local indices for ja. +
    +Scope: local. +
    +Type: optional. +
    +Intent: in. +
    +Specified as: an integer array of length $nz$.
    @@ -83,6 +160,17 @@ Specified as: a structured data of type descdatapsb_desc_type.
    On Return
    +
    desc_a
    +
    the updated communication descriptor. +
    +Scope:local. +
    +Type:required. +
    +Intent: inout. +
    +Specified as: a structured data of type descdatapsb_desc_type. +
    info
    Error code.
    @@ -94,10 +182,78 @@ Intent: out.
    An integer value; 0 means no error has been detected.
    +
    ila
    +
    the local indices of the starting vertex of the edges being inserted. +
    +Scope: local. +
    +Type: optional. +
    +Intent: out. +
    +Specified as: an integer array of length $nz$. +
    +
    jla
    +
    the local indices of the end vertex of the edges being inserted. +
    +Scope: local. +
    +Type: optional. +
    +Intent: out. +
    +Specified as: an integer array of length $nz$. + +

    +

    +Notes + +
      +
    1. This routine may only be called if the descriptor is in the + build state; +
    2. +
    3. This routine automatically ignores edges that do not +insist on the current process, i.e. edges for which neither the starting +nor the end vertex belong to the current process. +
    4. +
    5. The second form of this routine will be useful when dealing with + user-specified index mappings; see also 2.3.1. +
    6. +

    -


    + + + diff --git a/docs/html/node77.html b/docs/html/node77.html index 9716704a..507c1f1c 100644 --- a/docs/html/node77.html +++ b/docs/html/node77.html @@ -3,8 +3,8 @@ -psb_cdbldext -- Build an extended communication descriptor - +psb_cdasb -- Communication descriptor assembly routine + @@ -16,52 +16,49 @@ - + -

    -psb_cdbldext -- Build an extended communication - descriptor +

    +psb_cdasb -- Communication descriptor assembly + routine

    -call psb_cdbldext(a,desc_a,nl,desc_out, info, extype)
    +call psb_cdasb(desc_a, info [, mold])
     

    -This subroutine builds an extended communication descriptor, based on -the input descriptor desc_a and on the stencil specified -through the input sparse matrix a.

    Type:
    Synchronous. @@ -69,16 +66,6 @@ through the input sparse matrix a.
    On Entry
    -
    a
    -
    A sparse matrix -Scope:local. -
    -Type:required. -
    -Intent: in. -
    -Specified as: a structured data type. -
    desc_a
    the communication descriptor.
    @@ -86,37 +73,20 @@ Scope:local.
    Type:required.
    -Intent: in. -
    -Specified as: a structured data of type spdatapsb_Tspmat_type. -
    -
    nl
    -
    the number of additional layers desired. -
    -Scope:global. -
    -Type:required. -
    -Intent: in. +Intent: inout.
    -Specified as: an integer value $nl\ge 0$. +Specified as: a structured data of type descdatapsb_desc_type.
    -
    extype
    -
    the kind of estension required. +
    mold
    +
    The desired dynamic type for the internal index storage.
    -Scope:global. +Scope: local.
    -Type:optional . +Type: optional.
    Intent: in.
    -Specified as: an integer value -psb_ovt_xhal_, psb_ovt_asov_, default: psb_ovt_xhal_ - -

    +Specified as: a object of type derived from (integer) vbasedatapsb_T_base_vect_type.

    @@ -125,8 +95,8 @@ Specified as: an integer value
    On Return
    -
    desc_out
    -
    the extended communication descriptor. +
    desc_a
    +
    the communication descriptor.
    Scope:local.
    @@ -148,51 +118,16 @@ Intent: out. An integer value; 0 means no error has been detected.
    - -

    Notes

      -
    1. Specifying psb_ovt_xhal_ for the extype argument - the user will obtain a descriptor for a domain partition in which - the additional layers are fetched as part of an (extended) halo; - however the index-to-process mapping is identical to that of the - base descriptor; -
    2. -
    3. Specifying psb_ovt_asov_ for the extype argument - the user will obtain a descriptor with an overlapped decomposition: - the additional layer is aggregated to the local subdomain (and thus - is an overlap), and a new halo extending beyond the last additional - layer is formed. +
    4. On exit from this routine the descriptor is in the assembled + state.

    - -

    - +

    diff --git a/docs/html/node78.html b/docs/html/node78.html index 42ebd801..4319c067 100644 --- a/docs/html/node78.html +++ b/docs/html/node78.html @@ -3,8 +3,8 @@ -psb_spall -- Allocates a sparse matrix - +psb_cdcpy -- Copies a communication descriptor + @@ -16,56 +16,56 @@ - + -

    -psb_spall -- Allocates a sparse matrix +

    +psb_cdcpy -- Copies a communication descriptor

    -call psb_spall(a, desc_a, info, nnz)
    +call psb_cdcpy(desc_in, desc_out, info)
     

    Type:
    -
    Synchronous. +
    Asynchronous.
    On Entry
    -
    desc_a
    +
    desc_in
    the communication descriptor.
    Scope:local. @@ -75,18 +75,8 @@ Type:required. Intent: in.
    Specified as: a structured data of type descdatapsb_desc_type. -
    -
    nnz
    -
    An estimate of the number of nonzeroes in the local - part of the assembled matrix. -
    -Scope: global. -
    -Type: optional. -
    -Intent: in. -
    -Specified as: an integer value. + +

    @@ -95,16 +85,16 @@ Specified as: an integer value.
    On Return
    -
    a
    -
    the matrix to be allocated. +
    desc_out
    +
    the communication descriptor copy.
    -Scope:local +Scope:local.
    -Type:required +Type:required.
    Intent: out.
    -Specified as: a structured data of type spdatapsb_Tspmat_type. +Specified as: a structured data of type descdatapsb_desc_type.
    info
    Error code. @@ -118,23 +108,6 @@ Intent: out. An integer value; 0 means no error has been detected.
    -Notes - -
      -
    1. On exit from this routine the sparse matrix is in the build - state. -
    2. -
    3. The descriptor may be in either the build or assembled state. -
    4. -
    5. Providing a good estimate for the number of nonzeroes $nnz$ in - the assembled matrix may substantially improve performance in the - matrix build phase, as it will reduce or eliminate the need for - (potentially multiple) data reallocations. -
    6. -



    diff --git a/docs/html/node79.html b/docs/html/node79.html index 562a80b0..17081ee5 100644 --- a/docs/html/node79.html +++ b/docs/html/node79.html @@ -3,8 +3,8 @@ -psb_spins -- Insert a set of coefficients into a sparse matrix - +psb_cdfree -- Frees a communication descriptor + @@ -16,169 +16,65 @@ - + -

    -psb_spins -- Insert a set of coefficients into a sparse - matrix +

    +psb_cdfree -- Frees a communication descriptor

    -call psb_spins(nz, ia, ja, val, a, desc_a, info [,local])
    -call psb_spins(nr, irw, irp, ja, val, a, desc_a, info [,local])
    +call psb_cdfree(desc_a, info)
     

    Type:
    -
    Asynchronous. +
    Synchronous.
    On Entry
    -
    nz
    -
    the number of coefficients to be inserted. -
    -Scope:local. -
    -Type:required. -
    -Intent: in. -
    -Specified as: an integer scalar. -
    -
    nr
    -
    the number of rows to be inserted. -
    -Scope:local. -
    -Type:required. -
    -Intent: in. -
    -Specified as: an integer scalar. -
    -
    irw
    -
    the first row to be inserted. -
    -Scope:local. -
    -Type:required. -
    -Intent: in. -
    -Specified as: an integer scalar. -
    -
    ia
    -
    the row indices of the coefficients to be inserted. -
    -Scope:local. -
    -Type:required. -
    -Intent: in. -
    -Specified as: an integer array of size $nz$. -
    -
    irp
    -
    the row pointers of the coefficients to be inserted. -
    -Scope:local. -
    -Type:required. -
    -Intent: in. -
    -Specified as: an integer array of size . -
    -
    ja
    -
    the column indices of the coefficients to be inserted. -
    -Scope:local. -
    -Type:required. -
    -Intent: in. -
    -Specified as: an integer array of size $nz$. -
    -
    val
    -
    the coefficients to be inserted. +
    desc_a
    +
    the communication descriptor to be freed.
    Scope:local.
    Type:required.
    -Intent: in. -
    -Specified as: an array of size $nz$. Must be of the same type and kind -of the coefficients of the sparse matrix $a$. -
    -
    desc_a
    -
    The communication descriptor. -
    -Scope: local. -
    -Type: required. -
    Intent: inout.
    -Specified as: a variable of type descdatapsb_desc_type. -
    -
    local
    -
    Whether the entries in the indices vectors ia, - ja are already in local numbering. -
    -Scope:local. -
    -Type:optional. -
    -Specified as: a logical value; default: .false.. - -

    +Specified as: a structured data of type descdatapsb_desc_type.

    @@ -187,28 +83,6 @@ Specified as: a logical value; default: .false..
    On Return
    -
    a
    -
    the matrix into which coefficients will be inserted. -
    -Scope:local -
    -Type:required -
    -Intent: inout. -
    -Specified as: a structured data of type spdatapsb_Tspmat_type. -
    -
    desc_a
    -
    The communication descriptor. -
    -Scope: local. -
    -Type: required. -
    -Intent: inout. -
    -Specified as: a variable of type descdatapsb_desc_type. -
    info
    Error code.
    @@ -223,98 +97,7 @@ An integer value; 0 means no error has been detected.

    -Notes - -

      -
    1. On entry to this routine the descriptor may be in either the - build or assembled state. -
    2. -
    3. On entry to this routine the sparse matrix may be in either the - build or update state. -
    4. -
    5. If the descriptor is in the build state, then the sparse matrix - must also be in the build state; the action of the routine is to - (implicitly) call psb_cdins to add entries to the sparsity - pattern; each sparse matrix entry implicitly defines a graph edge, - that is passed to the descriptor routine for the appropriate - processing; -
    6. -
    7. The input data can be passed in either COO or CSR formats; -
    8. -
    9. In COO format the coefficients to be inserted are represented by - the ordered triples -$ia(i),ja(i),val(i)$, for $i=1,\dots,nz$; - these triples should belong to the current process, i.e. $ia(i)$ - should be one of the local indices, but are otherwise arbitrary; -
    10. -
    11. In CSR format the coefficients to be inserted for each input row - are represented by the ordered triples -, for - -; - these triples should belong to the current process, i.e. - should be one of the local indices, but are otherwise arbitrary; -
    12. -
    13. There is no requirement that a given row must be passed in its - entirety to a single call to this routine: the buildup of a row - may be split into as many calls as desired (even in the CSR format); -
    14. -
    15. Coefficients from different rows may also be mixed up freely - in a single call, according to the application needs; -
    16. -
    17. Any coefficients from matrix rows not owned by the calling - process are silently ignored; -
    18. -
    19. If the descriptor is in the assembled state, then any entries in - the sparse matrix that would generate additional communication - requirements are ignored; -
    20. -
    21. If the matrix is in the update state, any entries in positions - that were not present in the original matrix are ignored. -
    22. -
    - -

    - -

    - +

    diff --git a/docs/html/node8.html b/docs/html/node8.html index df750f2a..6501ef05 100644 --- a/docs/html/node8.html +++ b/docs/html/node8.html @@ -22,26 +22,26 @@ @@ -94,26 +94,26 @@ as: diff --git a/docs/html/node80.html b/docs/html/node80.html index 295e944c..346afbdd 100644 --- a/docs/html/node80.html +++ b/docs/html/node80.html @@ -3,8 +3,8 @@ -psb_spasb -- Sparse matrix assembly routine - +psb_cdbldext -- Build an extended communication descriptor + @@ -16,48 +16,52 @@ - + -

    -psb_spasb -- Sparse matrix assembly routine +

    +psb_cdbldext -- Build an extended communication + descriptor

    -call psb_spasb(a, desc_a, info, afmt, upd, dupl, mold)
    +call psb_cdbldext(a,desc_a,nl,desc_out, info, extype)
     

    +This subroutine builds an extended communication descriptor, based on +the input descriptor desc_a and on the stencil specified +through the input sparse matrix a.

    Type:
    Synchronous. @@ -65,61 +69,54 @@ call psb_spasb(a, desc_a, info, afmt, upd, dupl, mold)
    On Entry
    -
    desc_a
    -
    the communication descriptor. -
    +
    a
    +
    A sparse matrix Scope:local.
    Type:required.
    Intent: in.
    -Specified as: a structured data of type descdatapsb_desc_type. -
    -
    afmt
    -
    the storage format for the sparse matrix. -
    -Scope: local. -
    -Type: optional. -
    -Intent: in. -
    -Specified as: an array of characters. Defalt: 'CSR'. +Specified as: a structured data type.
    -
    upd
    -
    Provide for updates to the matrix coefficients. +
    desc_a
    +
    the communication descriptor.
    -Scope: global. +Scope:local.
    -Type: optional. +Type:required.
    Intent: in.
    -Specified as: integer, possible values: psb_upd_srch_, psb_upd_perm_ +Specified as: a structured data of type spdatapsb_Tspmat_type.
    -
    dupl
    -
    How to handle duplicate coefficients. +
    nl
    +
    the number of additional layers desired.
    -Scope: global. +Scope:global.
    -Type: optional. +Type:required.
    Intent: in.
    -Specified as: integer, possible values: psb_dupl_ovwrt_, -psb_dupl_add_, psb_dupl_err_. +Specified as: an integer value $nl\ge 0$.
    -
    mold
    -
    The desired dynamic type for the internal matrix storage. +
    extype
    +
    the kind of estension required.
    -Scope: local. +Scope:global.
    -Type: optional. +Type:optional .
    Intent: in.
    -Specified as: an object of a class derived from spbasedatapsb_T_base_sparse_mat. +Specified as: an integer value +psb_ovt_xhal_, psb_ovt_asov_, default: psb_ovt_xhal_ + +

    @@ -128,16 +125,16 @@ Specified as: an object of a class derived from spbasedatapsb_T_base_sparse_
    On Return
    -
    a
    -
    the matrix to be assembled. +
    desc_out
    +
    the extended communication descriptor.
    -Scope:local +Scope:local.
    -Type:required +Type:required.
    Intent: inout.
    -Specified as: a structured data of type spdatapsb_Tspmat_type. +Specified as: a structured data of type descdatapsb_desc_type.
    info
    Error code. @@ -156,25 +153,17 @@ An integer value; 0 means no error has been detected. Notes
      -
    1. On entry to this routine the descriptor must be in the - assembled state, i.e. psb_cdasb must already have been called. -
    2. -
    3. The sparse matrix may be in either the build or update state; -
    4. -
    5. Duplicate entries are detected and handled in both build and - update state, with the exception of the error action that is only - taken in the build state, i.e. on the first assembly; -
    6. -
    7. If the update choice is psb_upd_perm_, then subsequent - calls to psb_spins to update the matrix must be arranged in - such a way as to produce exactly the same sequence of coefficient - values as encountered at the first assembly; -
    8. -
    9. The output storage format need not be the same on all - processes; +
    10. Specifying psb_ovt_xhal_ for the extype argument + the user will obtain a descriptor for a domain partition in which + the additional layers are fetched as part of an (extended) halo; + however the index-to-process mapping is identical to that of the + base descriptor;
    11. -
    12. On exit from this routine the matrix is in the assembled state, - and thus is suitable for the computational routines. +
    13. Specifying psb_ovt_asov_ for the extype argument + the user will obtain a descriptor with an overlapped decomposition: + the additional layer is aggregated to the local subdomain (and thus + is an overlap), and a new halo extending beyond the last additional + layer is formed.
    @@ -182,26 +171,26 @@ An integer value; 0 means no error has been detected. diff --git a/docs/html/node81.html b/docs/html/node81.html index 7320ea14..8480c728 100644 --- a/docs/html/node81.html +++ b/docs/html/node81.html @@ -3,8 +3,8 @@ -psb_spfree -- Frees a sparse matrix - +psb_spall -- Allocates a sparse matrix + @@ -16,45 +16,45 @@ - + -

    -psb_spfree -- Frees a sparse matrix +

    +psb_spall -- Allocates a sparse matrix

    -call psb_spfree(a, desc_a, info)
    +call psb_spall(a, desc_a, info, nnz)
     

    @@ -65,17 +65,6 @@ call psb_spfree(a, desc_a, info)

    On Entry
    -
    a
    -
    the matrix to be freed. -
    -Scope:local -
    -Type:required -
    -Intent: inout. -
    -Specified as: a structured data of type spdatapsb_Tspmat_type. -
    desc_a
    the communication descriptor.
    @@ -87,6 +76,18 @@ Intent: in.
    Specified as: a structured data of type descdatapsb_desc_type.
    +
    nnz
    +
    An estimate of the number of nonzeroes in the local + part of the assembled matrix. +
    +Scope: global. +
    +Type: optional. +
    +Intent: in. +
    +Specified as: an integer value. +

    @@ -94,6 +95,17 @@ Specified as: a structured data of type descdatapsb_desc_type.

    On Return
    +
    a
    +
    the matrix to be allocated. +
    +Scope:local +
    +Type:required +
    +Intent: out. +
    +Specified as: a structured data of type spdatapsb_Tspmat_type. +
    info
    Error code.
    @@ -106,6 +118,23 @@ Intent: out. An integer value; 0 means no error has been detected.
    +Notes + +
      +
    1. On exit from this routine the sparse matrix is in the build + state. +
    2. +
    3. The descriptor may be in either the build or assembled state. +
    4. +
    5. Providing a good estimate for the number of nonzeroes $nnz$ in + the assembled matrix may substantially improve performance in the + matrix build phase, as it will reduce or eliminate the need for + (potentially multiple) data reallocations. +
    6. +



    diff --git a/docs/html/node82.html b/docs/html/node82.html index e966ada4..fb0084f4 100644 --- a/docs/html/node82.html +++ b/docs/html/node82.html @@ -3,8 +3,8 @@ -psb_sprn -- Reinit sparse matrix structure for psblas routines. - +psb_spins -- Insert a set of coefficients into a sparse matrix + @@ -16,69 +16,70 @@ - + -

    -psb_sprn -- Reinit sparse matrix structure for psblas - routines. +

    +psb_spins -- Insert a set of coefficients into a sparse + matrix

    -call psb_sprn(a, decsc_a, info, clear)
    +call psb_spins(nz, ia, ja, val, a, desc_a, info [,local])
    +call psb_spins(nr, irw, irp, ja, val, a, desc_a, info [,local])
     

    Type:
    -
    Synchronous. +
    Asynchronous.
    On Entry
    -
    a
    -
    the matrix to be reinitialized. +
    nz
    +
    the number of coefficients to be inserted.
    -Scope:local +Scope:local.
    -Type:required +Type:required.
    -Intent: inout. +Intent: in.
    -Specified as: a structured data of type spdatapsb_Tspmat_type. +Specified as: an integer scalar.
    -
    desc_a
    -
    the communication descriptor. +
    nr
    +
    the number of rows to be inserted.
    Scope:local.
    @@ -86,18 +87,101 @@ Type:required.
    Intent: in.
    -Specified as: a structured data of type descdatapsb_desc_type. +Specified as: an integer scalar.
    -
    clear
    -
    Choose whether to zero out matrix coefficients +
    irw
    +
    the first row to be inserted.
    Scope:local.
    -Type:optional. +Type:required. +
    +Intent: in. +
    +Specified as: an integer scalar. +
    +
    ia
    +
    the row indices of the coefficients to be inserted. +
    +Scope:local. +
    +Type:required. +
    +Intent: in. +
    +Specified as: an integer array of size $nz$. +
    +
    irp
    +
    the row pointers of the coefficients to be inserted. +
    +Scope:local. +
    +Type:required. +
    +Intent: in. +
    +Specified as: an integer array of size $nr+1$. +
    +
    ja
    +
    the column indices of the coefficients to be inserted. +
    +Scope:local. +
    +Type:required. +
    +Intent: in. +
    +Specified as: an integer array of size $nz$. +
    +
    val
    +
    the coefficients to be inserted. +
    +Scope:local. +
    +Type:required.
    Intent: in.
    -Default: true. +Specified as: an array of size $nz$. Must be of the same type and kind +of the coefficients of the sparse matrix $a$. +
    +
    desc_a
    +
    The communication descriptor. +
    +Scope: local. +
    +Type: required. +
    +Intent: inout. +
    +Specified as: a variable of type descdatapsb_desc_type. +
    +
    local
    +
    Whether the entries in the indices vectors ia, + ja are already in local numbering. +
    +Scope:local. +
    +Type:optional. +
    +Specified as: a logical value; default: .false.. + +

    @@ -106,6 +190,28 @@ Default: true.
    On Return
    +
    a
    +
    the matrix into which coefficients will be inserted. +
    +Scope:local +
    +Type:required +
    +Intent: inout. +
    +Specified as: a structured data of type spdatapsb_Tspmat_type. +
    +
    desc_a
    +
    The communication descriptor. +
    +Scope: local. +
    +Type: required. +
    +Intent: inout. +
    +Specified as: a variable of type descdatapsb_desc_type. +
    info
    Error code.
    @@ -118,16 +224,112 @@ Intent: out. An integer value; 0 means no error has been detected.
    + +

    Notes

      -
    1. On exit from this routine the sparse matrix is in the update - state. +
    2. On entry to this routine the descriptor may be in either the + build or assembled state. +
    3. +
    4. On entry to this routine the sparse matrix may be in either the + build or update state. +
    5. +
    6. If the descriptor is in the build state, then the sparse matrix + must also be in the build state; the action of the routine is to + (implicitly) call psb_cdins to add entries to the sparsity + pattern; each sparse matrix entry implicitly defines a graph edge, + that is passed to the descriptor routine for the appropriate + processing; +
    7. +
    8. The input data can be passed in either COO or CSR formats; +
    9. +
    10. In COO format the coefficients to be inserted are represented by + the ordered triples +$ia(i),ja(i),val(i)$, for $i=1,\dots,nz$; + these triples should belong to the current process, i.e. $ia(i)$ + should be one of the local indices, but are otherwise arbitrary; +
    11. +
    12. In CSR format the coefficients to be inserted for each input row $i=1,nr$ + are represented by the ordered triples +$(i+irw-1),ja(j),val(j)$, for + +$j=irp(i),\dots,irp(i+1)-1$; + these triples should belong to the current process, i.e. $i+irw-1$ + should be one of the local indices, but are otherwise arbitrary; +
    13. +
    14. There is no requirement that a given row must be passed in its + entirety to a single call to this routine: the buildup of a row + may be split into as many calls as desired (even in the CSR format); +
    15. +
    16. Coefficients from different rows may also be mixed up freely + in a single call, according to the application needs; +
    17. +
    18. Any coefficients from matrix rows not owned by the calling + process are silently ignored; +
    19. +
    20. If the descriptor is in the assembled state, then any entries in + the sparse matrix that would generate additional communication + requirements are ignored; +
    21. +
    22. If the matrix is in the update state, any entries in positions + that were not present in the original matrix are ignored.

    -


    + + + diff --git a/docs/html/node83.html b/docs/html/node83.html index 65e4c10e..b44e3675 100644 --- a/docs/html/node83.html +++ b/docs/html/node83.html @@ -3,8 +3,8 @@ -psb_geall -- Allocates a dense matrix - +psb_spasb -- Sparse matrix assembly routine + @@ -16,45 +16,45 @@ - + -

    -psb_geall -- Allocates a dense matrix +

    +psb_spasb -- Sparse matrix assembly routine

    -call psb_geall(x, desc_a, info, n, lb)
    +call psb_spasb(a, desc_a, info, afmt, upd, dupl, mold)
     

    @@ -66,51 +66,60 @@ call psb_geall(x, desc_a, info, n, lb)

    desc_a
    -
    The communication descriptor. +
    the communication descriptor.
    -Scope: local +Scope:local.
    -Type: required +Type:required.
    Intent: in.
    -Specified as: a variable of type descdatapsb_desc_type. -
    -
    n
    -
    The number of columns of the dense matrix to be allocated. +Specified as: a structured data of type descdatapsb_desc_type. +
    +
    afmt
    +
    the storage format for the sparse matrix.
    -Scope: local +Scope: local.
    -Type: optional +Type: optional.
    Intent: in.
    -Specified as: Integer scalar, default $1$. It is not a valid argument if $x$ is a -rank-1 array. +Specified as: an array of characters. Defalt: 'CSR'.
    -
    lb
    -
    The lower bound for the column index range of the dense matrix to be allocated. +
    upd
    +
    Provide for updates to the matrix coefficients.
    -Scope: local +Scope: global. +
    +Type: optional. +
    +Intent: in. +
    +Specified as: integer, possible values: psb_upd_srch_, psb_upd_perm_ +
    +
    dupl
    +
    How to handle duplicate coefficients. +
    +Scope: global. +
    +Type: optional. +
    +Intent: in. +
    +Specified as: integer, possible values: psb_dupl_ovwrt_, +psb_dupl_add_, psb_dupl_err_. +
    +
    mold
    +
    The desired dynamic type for the internal matrix storage. +
    +Scope: local.
    -Type: optional +Type: optional.
    Intent: in.
    -Specified as: Integer scalar, default $1$. It is not a valid argument if $x$ is a -rank-1 array. +Specified as: an object of a class derived from spbasedatapsb_T_base_sparse_mat.
    @@ -119,18 +128,17 @@ rank-1 array.
    On Return
    -
    x
    -
    The dense matrix to be allocated. +
    a
    +
    the matrix to be assembled.
    -Scope: local +Scope:local
    -Type: required +Type:required
    -Intent: out. +Intent: inout.
    -Specified as: a rank one or two array with the ALLOCATABLE attribute -or an object of type vdatapsb_T_vect_type, of type real, complex or integer. -
    +Specified as: a structured data of type spdatapsb_Tspmat_type. +
    info
    Error code.
    @@ -145,7 +153,57 @@ An integer value; 0 means no error has been detected.

    -


    +Notes + +
      +
    1. On entry to this routine the descriptor must be in the + assembled state, i.e. psb_cdasb must already have been called. +
    2. +
    3. The sparse matrix may be in either the build or update state; +
    4. +
    5. Duplicate entries are detected and handled in both build and + update state, with the exception of the error action that is only + taken in the build state, i.e. on the first assembly; +
    6. +
    7. If the update choice is psb_upd_perm_, then subsequent + calls to psb_spins to update the matrix must be arranged in + such a way as to produce exactly the same sequence of coefficient + values as encountered at the first assembly; +
    8. +
    9. The output storage format need not be the same on all + processes; +
    10. +
    11. On exit from this routine the matrix is in the assembled state, + and thus is suitable for the computational routines. +
    12. +
    + +

    + +

    + diff --git a/docs/html/node84.html b/docs/html/node84.html index 26821fda..2ae76326 100644 --- a/docs/html/node84.html +++ b/docs/html/node84.html @@ -3,8 +3,8 @@ -psb_geins -- Dense matrix insertion routine - +psb_spfree -- Frees a sparse matrix + @@ -16,101 +16,65 @@ - + -

    -psb_geins -- Dense matrix insertion routine +

    +psb_spfree -- Frees a sparse matrix

    -call psb_geins(m, irw, val, x, desc_a, info [,dupl,local])
    +call psb_spfree(a, desc_a, info)
     

    Type:
    -
    Asynchronous. +
    Synchronous.
    On Entry
    -
    m
    -
    Number of rows in $val$ to be inserted. +
    a
    +
    the matrix to be freed.
    -Scope:local. -
    -Type:required. -
    -Intent: in. -
    -Specified as: an integer value. -
    -
    irw
    -
    Indices of the rows to be inserted. Specifically, row $i$ - of $val$ will be inserted into the local row corresponding to the - global row index $irw(i)$. -Scope:local. -
    -Type:required. -
    -Intent: in. -
    -Specified as: an integer array. -
    -
    val
    -
    the dense submatrix to be inserted. -
    -Scope:local. +Scope:local
    -Type:required. +Type:required
    -Intent: in. +Intent: inout.
    -Specified as: a rank 1 or 2 array. -Specified as: an integer value. +Specified as: a structured data of type spdatapsb_Tspmat_type.
    desc_a
    the communication descriptor. @@ -123,30 +87,6 @@ Intent: in.
    Specified as: a structured data of type descdatapsb_desc_type.
    -
    dupl
    -
    How to handle duplicate coefficients. -
    -Scope: global. -
    -Type: optional. -
    -Intent: in. -
    -Specified as: integer, possible values: psb_dupl_ovwrt_, -psb_dupl_add_. -
    -
    local
    -
    Whether the entries in the index vector irw, - are already in local numbering. -
    -Scope:local. -
    -Type:optional. -
    -Specified as: a logical value; default: .false.. - -

    -

    @@ -154,18 +94,6 @@ Specified as: a logical value; default: .false..

    On Return
    -
    x
    -
    the output dense matrix. -
    -Scope: local -
    -Type: required -
    -Intent: inout. -
    -Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type, of -type real, complex or integer. -
    info
    Error code.
    @@ -180,42 +108,7 @@ An integer value; 0 means no error has been detected.

    -Notes - -

      -
    1. Dense vectors/matrices do not have an associated state; -
    2. -
    3. Duplicate entries are either overwritten or added, there is no - provision for raising an error condition. -
    4. -
    - -

    - -

    - +

    diff --git a/docs/html/node85.html b/docs/html/node85.html index 3a23b931..199f1af9 100644 --- a/docs/html/node85.html +++ b/docs/html/node85.html @@ -3,8 +3,8 @@ -psb_geasb -- Assembly a dense matrix - +psb_sprn -- Reinit sparse matrix structure for psblas routines. + @@ -16,45 +16,46 @@ - + -

    -psb_geasb -- Assembly a dense matrix +

    +psb_sprn -- Reinit sparse matrix structure for psblas + routines.

    -call psb_geasb(x, desc_a, info, mold)
    +call psb_sprn(a, decsc_a, info, clear)
     

    @@ -65,31 +66,38 @@ call psb_geasb(x, desc_a, info, mold)

    On Entry
    +
    a
    +
    the matrix to be reinitialized. +
    +Scope:local +
    +Type:required +
    +Intent: inout. +
    +Specified as: a structured data of type spdatapsb_Tspmat_type. +
    desc_a
    -
    The communication descriptor. +
    the communication descriptor.
    -Scope: local +Scope:local.
    -Type: required +Type:required.
    Intent: in.
    -Specified as: a variable of type descdatapsb_desc_type. -
    -
    mold
    -
    The desired dynamic type for the internal vector storage. +Specified as: a structured data of type descdatapsb_desc_type. +
    +
    clear
    +
    Choose whether to zero out matrix coefficients
    -Scope: local. +Scope:local.
    -Type: optional. +Type:optional.
    Intent: in.
    -Specified as: an object of a class derived from vbasedatapsb_T_base_vect_type; this is -only allowed when $x$ is of type vdatapsb_T_vect_type. +Default: true.
    @@ -98,18 +106,6 @@ only allowed when On Return
    -
    x
    -
    The dense matrix to be assembled. -
    -Scope: local -
    -Type: required -
    -Intent: inout. -
    -Specified as: a rank one or two array with the ALLOCATABLE or an -object of type vdatapsb_T_vect_type, of type real, complex or integer. -
    info
    Error code.
    @@ -122,6 +118,15 @@ Intent: out. An integer value; 0 means no error has been detected.
    +Notes + +
      +
    1. On exit from this routine the sparse matrix is in the update + state. +
    2. +
    + +



    diff --git a/docs/html/node86.html b/docs/html/node86.html index e1744ccb..72ad8bf6 100644 --- a/docs/html/node86.html +++ b/docs/html/node86.html @@ -3,8 +3,8 @@ -psb_gefree -- Frees a dense matrix - +psb_geall -- Allocates a dense matrix + @@ -16,45 +16,45 @@ - + -

    -psb_gefree -- Frees a dense matrix +

    +psb_geall -- Allocates a dense matrix

    -call psb_gefree(x, desc_a, info)
    +call psb_geall(x, desc_a, info, n, lb)
     

    @@ -65,32 +65,53 @@ call psb_gefree(x, desc_a, info)

    On Entry
    -
    x
    -
    The dense matrix to - be freed. +
    desc_a
    +
    The communication descriptor.
    Scope: local
    Type: required
    -Intent: inout. +Intent: in.
    -Specified as: a rank one or two array with the ALLOCATABLE or an -object of type vdatapsb_T_vect_type, of type real, complex or integer. +Specified as: a variable of type descdatapsb_desc_type. +
    +
    n
    +
    The number of columns of the dense matrix to be allocated.
    -

    +Scope: local +
    +Type: optional +
    +Intent: in. +
    +Specified as: Integer scalar, default $1$. It is not a valid argument if $x$ is a +rank-1 array.

    -
    desc_a
    -
    The communication descriptor. +
    lb
    +
    The lower bound for the column index range of the dense matrix to be allocated.
    Scope: local
    -Type: required +Type: optional
    Intent: in.
    -Specified as: a variable of type descdatapsb_desc_type. -
    +Specified as: Integer scalar, default $1$. It is not a valid argument if $x$ is a +rank-1 array. +

    @@ -98,6 +119,18 @@ Specified as: a variable of type descdatapsb_desc_type.

    On Return
    +
    x
    +
    The dense matrix to be allocated. +
    +Scope: local +
    +Type: required +
    +Intent: out. +
    +Specified as: a rank one or two array with the ALLOCATABLE attribute +or an object of type vdatapsb_T_vect_type, of type real, complex or integer. +
    info
    Error code.
    diff --git a/docs/html/node87.html b/docs/html/node87.html index dbb80998..7e7dff18 100644 --- a/docs/html/node87.html +++ b/docs/html/node87.html @@ -3,8 +3,8 @@ -psb_gelp -- Applies a left permutation to a dense matrix - +psb_geins -- Dense matrix insertion routine + @@ -16,46 +16,45 @@ - + -

    -psb_gelp -- Applies a left permutation to a dense - matrix +

    +psb_geins -- Dense matrix insertion routine

    -call psb_gelp(trans, iperm, x, info)
    +call psb_geins(m, irw, val, x, desc_a, info [,dupl,local])
     

    @@ -66,51 +65,88 @@ call psb_gelp(trans, iperm, x, info)

    On Entry
    -
    trans
    -
    A character that specifies whether to permute $A$ or $A^T$. +
    m
    +
    Number of rows in $val$ to be inserted.
    -Scope: local +Scope:local.
    -Type: required +Type:required.
    Intent: in.
    -Specified as: a single character with value 'N' for $A$ or 'T' for $A^T$. -
    -
    iperm
    -
    An integer array containing permutation information. +Specified as: an integer value. +
    +
    irw
    +
    Indices of the rows to be inserted. Specifically, row $i$ + of $val$ will be inserted into the local row corresponding to the + global row index $irw(i)$. +Scope:local. +
    +Type:required.
    -Scope: local +Intent: in.
    -Type: required +Specified as: an integer array. +
    +
    val
    +
    the dense submatrix to be inserted. +
    +Scope:local. +
    +Type:required.
    Intent: in.
    -Specified as: an integer one-dimensional array. -
    -
    x
    -
    The dense matrix to be permuted. +Specified as: a rank 1 or 2 array. +Specified as: an integer value. +
    +
    desc_a
    +
    the communication descriptor.
    -Scope: local +Scope:local.
    -Type: required +Type:required.
    -Intent: inout. +Intent: in.
    -Specified as: a one or two dimensional array. -
    +Specified as: a structured data of type descdatapsb_desc_type. + +
    dupl
    +
    How to handle duplicate coefficients. +
    +Scope: global. +
    +Type: optional. +
    +Intent: in. +
    +Specified as: integer, possible values: psb_dupl_ovwrt_, +psb_dupl_add_. +
    +
    local
    +
    Whether the entries in the index vector irw, + are already in local numbering. +
    +Scope:local. +
    +Type:optional. +
    +Specified as: a logical value; default: .false.. + +

    +

    @@ -118,6 +154,18 @@ Specified as: a one or two dimensional array.

    On Return
    +
    x
    +
    the output dense matrix. +
    +Scope: local +
    +Type: required +
    +Intent: inout. +
    +Specified as: a rank one or two array or an object of type vdatapsb_T_vect_type, of +type real, complex or integer. +
    info
    Error code.
    @@ -132,7 +180,42 @@ An integer value; 0 means no error has been detected.

    -


    +Notes + +
      +
    1. Dense vectors/matrices do not have an associated state; +
    2. +
    3. Duplicate entries are either overwritten or added, there is no + provision for raising an error condition. +
    4. +
    + +

    + +

    + diff --git a/docs/html/node88.html b/docs/html/node88.html index 56205478..705998d9 100644 --- a/docs/html/node88.html +++ b/docs/html/node88.html @@ -3,8 +3,8 @@ -psb_glob_to_loc -- Global to local indices convertion - +psb_geasb -- Assembly a dense matrix + @@ -16,101 +16,80 @@ - + -

    -psb_glob_to_loc -- Global to local indices - convertion +

    +psb_geasb -- Assembly a dense matrix

    -call psb_glob_to_loc(x, y, desc_a, info, iact,owned)
    -call psb_glob_to_loc(x, desc_a, info, iact,owned)
    +call psb_geasb(x, desc_a, info, mold)
     

    Type:
    -
    Asynchronous. +
    Synchronous.
    On Entry
    -
    x
    -
    An integer vector of indices to be converted. +
    desc_a
    +
    The communication descriptor.
    Scope: local
    Type: required
    -Intent: in, inout. -
    -Specified as: a rank one integer array. -
    -
    desc_a
    -
    the communication descriptor. -
    -Scope:local. -
    -Type:required. -
    Intent: in.
    -Specified as: a structured data of type descdatapsb_desc_type. -
    -
    iact
    -
    specifies action to be taken in case of range errors. -Scope: global -
    -Type: optional -
    -Intent: in. +Specified as: a variable of type descdatapsb_desc_type. +
    +
    mold
    +
    The desired dynamic type for the internal vector storage.
    -Specified as: a character variable Ignore, Warning or -Abort, default Ignore. -
    -
    owned
    -
    Specfies valid range of input -Scope: global +Scope: local.
    -Type: optional +Type: optional.
    Intent: in.
    -If true, then only indices strictly owned by the current process are -considered valid, if false then halo indices are also -accepted. Default: false. +Specified as: an object of a class derived from vbasedatapsb_T_base_vect_type; this is +only allowed when $x$ is of type vdatapsb_T_vect_type.
    @@ -120,43 +99,17 @@ accepted. Default: false.
    x
    -
    If $y$ is not present, - then $x$ is overwritten with the translated integer indices. -Scope: global +
    The dense matrix to be assembled. +
    +Scope: local
    Type: required
    Intent: inout.
    -Specified as: a rank one integer array. -
    -
    y
    -
    If $y$ is present, - then $y$ is overwritten with the translated integer indices, and $x$ - is left unchanged. -Scope: global -
    -Type: optional -
    -Intent: out. -
    -Specified as: a rank one integer array. -
    +Specified as: a rank one or two array with the ALLOCATABLE or an +object of type vdatapsb_T_vect_type, of type real, complex or integer. +
    info
    Error code.
    @@ -169,45 +122,7 @@ Intent: out. An integer value; 0 means no error has been detected.
    - -

    -Notes - -

      -
    1. If an input index is out of range, then the corresponding output - index is set to a negative number; -
    2. -
    3. The default Ignore means that the negative output is the - only action taken on an out-of-range input. -
    4. -
    - -

    - -

    - +

    diff --git a/docs/html/node89.html b/docs/html/node89.html index ac275095..48f987c1 100644 --- a/docs/html/node89.html +++ b/docs/html/node89.html @@ -3,8 +3,8 @@ -psb_loc_to_glob -- Local to global indices conversion - +psb_gefree -- Frees a dense matrix + @@ -16,90 +16,81 @@ - + -

    -psb_loc_to_glob -- Local to global indices - conversion +

    +psb_gefree -- Frees a dense matrix

    -call psb_loc_to_glob(x, y, desc_a, info, iact)
    -call psb_loc_to_glob(x, desc_a, info, iact)
    +call psb_gefree(x, desc_a, info)
     

    Type:
    -
    Asynchronous. +
    Synchronous.
    On Entry
    x
    -
    An integer vector of indices to be converted. +
    The dense matrix to + be freed.
    Scope: local
    Type: required
    -Intent: in, inout. -
    -Specified as: a rank one integer array. -
    -
    desc_a
    -
    the communication descriptor. -
    -Scope:local. -
    -Type:required. +Intent: inout.
    -Intent: in. +Specified as: a rank one or two array with the ALLOCATABLE or an +object of type vdatapsb_T_vect_type, of type real, complex or integer.
    -Specified as: a structured data of type descdatapsb_desc_type. +

    -
    iact
    -
    specifies action to be taken in case of range errors. -Scope: global +
    desc_a
    +
    The communication descriptor. +
    +Scope: local
    -Type: optional +Type: required
    Intent: in.
    -Specified as: a character variable Ignore, Warning or -Abort, default Ignore. -
    +Specified as: a variable of type descdatapsb_desc_type. +

    @@ -107,44 +98,6 @@ Specified as: a character variable Ignore, Warning or

    On Return
    -
    x
    -
    If $y$ is not present, - then $x$ is overwritten with the translated integer indices. -Scope: global -
    -Type: required -
    -Intent: inout. -
    -Specified as: a rank one integer array. -
    -
    y
    -
    If $y$ is not present, - then $y$ is overwritten with the translated integer indices, and $x$ - is left unchanged. -Scope: global -
    -Type: optional -
    -Intent: out. -
    -Specified as: a rank one integer array. -
    info
    Error code.
    diff --git a/docs/html/node9.html b/docs/html/node9.html index b60f74d3..7e75eada 100644 --- a/docs/html/node9.html +++ b/docs/html/node9.html @@ -23,26 +23,26 @@ @@ -114,132 +114,132 @@ developer's documentation. Subsections diff --git a/docs/html/node90.html b/docs/html/node90.html index aaf6d3e3..9de2f117 100644 --- a/docs/html/node90.html +++ b/docs/html/node90.html @@ -3,8 +3,8 @@ -psb_is_owned -- - +psb_gelp -- Applies a left permutation to a dense matrix + @@ -16,45 +16,46 @@ - + -

    -psb_is_owned -- +

    +psb_gelp -- Applies a left permutation to a dense + matrix

    -call psb_is_owned(x, desc_a)
    +call psb_gelp(trans, iperm, x, info)
     

    @@ -65,8 +66,14 @@ call psb_is_owned(x, desc_a)

    On Entry
    -
    x
    -
    Integer index. +
    trans
    +
    A character that specifies whether to permute $A$ or $A^T$.
    Scope: local
    @@ -74,19 +81,36 @@ Type: required
    Intent: in.
    -Specified as: a scalar integer. +Specified as: a single character with value 'N' for $A$ or 'T' for $A^T$.
    -
    desc_a
    -
    the communication descriptor. +
    iperm
    +
    An integer array containing permutation information.
    -Scope:local. +Scope: local
    -Type:required. +Type: required
    Intent: in.
    -Specified as: a structured data of type descdatapsb_desc_type. -
    +Specified as: an integer one-dimensional array. +
    +
    x
    +
    The dense matrix to be permuted. +
    +Scope: local +
    +Type: required +
    +Intent: inout. +
    +Specified as: a one or two dimensional array. +

    @@ -94,30 +118,19 @@ Specified as: a structured data of type descdatapsb_desc_type.

    On Return
    -
    Function value
    -
    A logical mask which is true if - $x$ is owned by the current process +
    info
    +
    Error code. +
    Scope: local
    -Type: required +Type: required
    Intent: out. -
    +
    +An integer value; 0 means no error has been detected. + -

    -Notes - -

      -
    1. This routine returns a .true. value for an index - that is strictly owned by the current process, excluding the halo - indices -
    2. -
    -



    diff --git a/docs/html/node91.html b/docs/html/node91.html index d2bd979c..05365418 100644 --- a/docs/html/node91.html +++ b/docs/html/node91.html @@ -3,8 +3,8 @@ -psb_owned_index -- - +psb_glob_to_loc -- Global to local indices convertion + @@ -16,45 +16,47 @@ - + -

    -psb_owned_index -- +

    +psb_glob_to_loc -- Global to local indices + convertion

    -call psb_owned_index(y, x, desc_a, info)
    +call psb_glob_to_loc(x, y, desc_a, info, iact,owned)
    +call psb_glob_to_loc(x, desc_a, info, iact,owned)
     

    @@ -66,7 +68,7 @@ call psb_owned_index(y, x, desc_a, info)

    x
    -
    Integer indices. +
    An integer vector of indices to be converted.
    Scope: local
    @@ -74,7 +76,7 @@ Type: required
    Intent: in, inout.
    -Specified as: a scalar or a rank one integer array. +Specified as: a rank one integer array.
    desc_a
    the communication descriptor. @@ -98,6 +100,18 @@ Intent: in. Specified as: a character variable Ignore, Warning or Abort, default Ignore.
    +
    owned
    +
    Specfies valid range of input +Scope: global +
    +Type: optional +
    +Intent: in. +
    +If true, then only indices strictly owned by the current process are +considered valid, if false then halo indices are also +accepted. Default: false. +

    @@ -105,19 +119,43 @@ Specified as: a character variable Ignore, Warning or

    On Return
    -
    y
    -
    A logical mask which is true for all corresponding entries of - x +
    If $y$ is not present, + then $x$ that are owned by the current process -Scope: local + ALT="$x$"> is overwritten with the translated integer indices. +Scope: global
    Type: required
    +Intent: inout. +
    +Specified as: a rank one integer array. +
    +
    y
    +
    If $y$ is present, + then $y$ is overwritten with the translated integer indices, and $x$ + is left unchanged. +Scope: global +
    +Type: optional +
    Intent: out.
    -Specified as: a scalar or rank one logical array. +Specified as: a rank one integer array.
    info
    Error code. @@ -136,14 +174,40 @@ An integer value; 0 means no error has been detected. Notes
      -
    1. This routine returns a .true. value for those indices - that are strictly owned by the current process, excluding the halo - indices +
    2. If an input index is out of range, then the corresponding output + index is set to a negative number; +
    3. +
    4. The default Ignore means that the negative output is the + only action taken on an out-of-range input.

    -


    + + + diff --git a/docs/html/node92.html b/docs/html/node92.html index a3c4d4b6..666b0bf5 100644 --- a/docs/html/node92.html +++ b/docs/html/node92.html @@ -3,8 +3,8 @@ -psb_is_local -- - +psb_loc_to_glob -- Local to global indices conversion + @@ -16,45 +16,47 @@ - + -

    -psb_is_local -- +

    +psb_loc_to_glob -- Local to global indices + conversion

    -call psb_is_local(x, desc_a)
    +call psb_loc_to_glob(x, y, desc_a, info, iact)
    +call psb_loc_to_glob(x, desc_a, info, iact)
     

    @@ -66,15 +68,15 @@ call psb_is_local(x, desc_a)

    x
    -
    Integer index. +
    An integer vector of indices to be converted.
    Scope: local
    Type: required
    -Intent: in. +Intent: in, inout.
    -Specified as: a scalar integer. +Specified as: a rank one integer array.
    desc_a
    the communication descriptor. @@ -87,6 +89,17 @@ Intent: in.
    Specified as: a structured data of type descdatapsb_desc_type.
    +
    iact
    +
    specifies action to be taken in case of range errors. +Scope: global +
    +Type: optional +
    +Intent: in. +
    +Specified as: a character variable Ignore, Warning or +Abort, default Ignore. +

    @@ -94,30 +107,57 @@ Specified as: a structured data of type descdatapsb_desc_type.

    On Return
    -
    Function value
    -
    A logical mask which is true if - x +
    If $y$ is not present, + then $x$ is local to the current process -Scope: local + ALT="$x$"> is overwritten with the translated integer indices. +Scope: global
    Type: required
    +Intent: inout. +
    +Specified as: a rank one integer array. +
    +
    y
    +
    If $y$ is not present, + then $y$ is overwritten with the translated integer indices, and $x$ + is left unchanged. +Scope: global +
    +Type: optional +
    Intent: out. -
    +
    +Specified as: a rank one integer array. + +
    info
    +
    Error code. +
    +Scope: local +
    +Type: required +
    +Intent: out. +
    +An integer value; 0 means no error has been detected. +
    -

    -Notes - -

      -
    1. This routine returns a .true. value for an index - that is local to the current process, including the halo - indices -
    2. -
    -



    diff --git a/docs/html/node93.html b/docs/html/node93.html index 3a12cab9..133899aa 100644 --- a/docs/html/node93.html +++ b/docs/html/node93.html @@ -3,8 +3,8 @@ -psb_local_index -- - +psb_is_owned -- + @@ -16,45 +16,45 @@ - + -

    -psb_local_index -- +

    +psb_is_owned --

    -call psb_local_index(y, x, desc_a, info)
    +call psb_is_owned(x, desc_a)
     

    @@ -66,15 +66,15 @@ call psb_local_index(y, x, desc_a, info)

    x
    -
    Integer indices. +
    Integer index.
    Scope: local
    Type: required
    -Intent: in, inout. +Intent: in.
    -Specified as: a scalar or a rank one integer array. +Specified as: a scalar integer.
    desc_a
    the communication descriptor. @@ -87,17 +87,6 @@ Intent: in.
    Specified as: a structured data of type descdatapsb_desc_type.
    -
    iact
    -
    specifies action to be taken in case of range errors. -Scope: global -
    -Type: optional -
    -Intent: in. -
    -Specified as: a character variable Ignore, Warning or -Abort, default Ignore. -

    @@ -105,40 +94,27 @@ Specified as: a character variable Ignore, Warning or

    On Return
    -
    y
    -
    A logical mask which is true for all corresponding entries of +
    Function value
    +
    A logical mask which is true if $x$ that are local to the current process + ALT="$x$"> is owned by the current process Scope: local
    Type: required
    Intent: out. -
    -Specified as: a scalar or rank one logical array. -
    -
    info
    -
    Error code. -
    -Scope: local -
    -Type: required -
    -Intent: out. -
    -An integer value; 0 means no error has been detected. -
    +

    Notes

      -
    1. This routine returns a .true. value for those indices - that are local to the current process, including the halo - indices. +
    2. This routine returns a .true. value for an index + that is strictly owned by the current process, excluding the halo + indices
    diff --git a/docs/html/node94.html b/docs/html/node94.html index 41a1b858..56bfb76f 100644 --- a/docs/html/node94.html +++ b/docs/html/node94.html @@ -3,8 +3,8 @@ -psb_get_boundary -- Extract list of boundary elements - +psb_owned_index -- + @@ -16,46 +16,45 @@ - + -

    -psb_get_boundary -- Extract list of boundary - elements +

    +psb_owned_index --

    -call psb_get_boundary(bndel, desc, info)
    +call psb_owned_index(y, x, desc_a, info)
     

    @@ -66,7 +65,18 @@ call psb_get_boundary(bndel, desc, info)

    On Entry
    -
    desc
    +
    x
    +
    Integer indices. +
    +Scope: local +
    +Type: required +
    +Intent: in, inout. +
    +Specified as: a scalar or a rank one integer array. +
    +
    desc_a
    the communication descriptor.
    Scope:local. @@ -77,6 +87,17 @@ Intent: in.
    Specified as: a structured data of type descdatapsb_desc_type.
    +
    iact
    +
    specifies action to be taken in case of range errors. +Scope: global +
    +Type: optional +
    +Intent: in. +
    +Specified as: a character variable Ignore, Warning or +Abort, default Ignore. +

    @@ -84,19 +105,20 @@ Specified as: a structured data of type descdatapsb_desc_type.

    On Return
    -
    bndel
    -
    The list of boundary elements on the calling process, in - local numbering. -
    +
    y
    +
    A logical mask which is true for all corresponding entries of + $x$ that are owned by the current process Scope: local
    Type: required
    Intent: out.
    -Specified as: a rank one array with the ALLOCATABLE -attribute, of type integer. -
    +Specified as: a scalar or rank one logical array. +
    info
    Error code.
    @@ -114,12 +136,9 @@ An integer value; 0 means no error has been detected. Notes
      -
    1. If there are no boundary elements (i.e., if the local part of - the connectivity graph is self-contained) the output vector is set - to the “not allocated” state. -
    2. -
    3. Otherwise the size of bndel will be exactly equal to the - number of boundary elements. +
    4. This routine returns a .true. value for those indices + that are strictly owned by the current process, excluding the halo + indices
    diff --git a/docs/html/node95.html b/docs/html/node95.html index 07d57981..79dba935 100644 --- a/docs/html/node95.html +++ b/docs/html/node95.html @@ -3,8 +3,8 @@ -psb_get_overlap -- Extract list of overlap elements - +psb_is_local -- + @@ -16,46 +16,45 @@ - + -

    -psb_get_overlap -- Extract list of overlap - elements +

    +psb_is_local --

    -call psb_get_overlap(ovrel, desc, info)
    +call psb_is_local(x, desc_a)
     

    @@ -66,7 +65,18 @@ call psb_get_overlap(ovrel, desc, info)

    On Entry
    -
    desc
    +
    x
    +
    Integer index. +
    +Scope: local +
    +Type: required +
    +Intent: in. +
    +Specified as: a scalar integer. +
    +
    desc_a
    the communication descriptor.
    Scope:local. @@ -84,41 +94,27 @@ Specified as: a structured data of type descdatapsb_desc_type.
    On Return
    -
    ovrel
    -
    The list of overlap elements on the calling process, in - local numbering. -
    +
    Function value
    +
    A logical mask which is true if + $x$ is local to the current process Scope: local
    Type: required
    Intent: out. -
    -Specified as: a rank one array with the ALLOCATABLE -attribute, of type integer.
    -
    info
    -
    Error code. -
    -Scope: local -
    -Type: required -
    -Intent: out. -
    -An integer value; 0 means no error has been detected. -

    Notes

      -
    1. If there are no overlap elements the output vector is set - to the “not allocated” state. -
    2. -
    3. Otherwise the size of ovrel will be exactly equal to the - number of overlap elements. +
    4. This routine returns a .true. value for an index + that is local to the current process, including the halo + indices
    diff --git a/docs/html/node96.html b/docs/html/node96.html index 2736fbfb..d7e2ac97 100644 --- a/docs/html/node96.html +++ b/docs/html/node96.html @@ -3,8 +3,8 @@ -psb_sp_getrow -- Extract row(s) from a sparse matrix - +psb_local_index -- + @@ -16,47 +16,45 @@ - + -

    -psb_sp_getrow -- Extract row(s) from a sparse - matrix +

    +psb_local_index --

    -call psb_sp_getrow(row, a, nz, ia, ja, val, info, &
    -              & append, nzin, lrw)
    +call psb_local_index(y, x, desc_a, info)
     

    @@ -67,75 +65,38 @@ call psb_sp_getrow(row, a, nz, ia, ja, val, info, &

    On Entry
    -
    row
    -
    The (first) row to be extracted. +
    x
    +
    Integer indices.
    -Scope:local -
    -Type:required -
    -Intent: in. -
    -Specified as: an integer $>0$. -
    -
    a
    -
    the matrix from which to get rows. -
    -Scope:local -
    -Type:required -
    -Intent: in. -
    -Specified as: a structured data of type spdatapsb_Tspmat_type. -
    -
    append
    -
    Whether to append or overwrite existing output. -
    -Scope:local +Scope: local
    -Type:optional +Type: required
    -Intent: in. +Intent: in, inout.
    -Specified as: a logical value default: false (overwrite). -
    -
    nzin
    -
    Input size to be appended to. +Specified as: a scalar or a rank one integer array. +
    +
    desc_a
    +
    the communication descriptor.
    -Scope:local +Scope:local.
    -Type:optional +Type:required.
    Intent: in.
    -Specified as: an integer $>0$. When append is true, specifies how many -entries in the output vectors are already filled. +Specified as: a structured data of type descdatapsb_desc_type.
    -
    lrw
    -
    The last row to be extracted. +
    iact
    +
    specifies action to be taken in case of range errors. +Scope: global
    -Scope:local -
    -Type:optional +Type: optional
    Intent: in.
    -Specified as: an integer $>0$, default: $row$. - -

    +Specified as: a character variable Ignore, Warning or +Abort, default Ignore.

    @@ -144,49 +105,19 @@ Specified as: an integer On Return
    -
    nz
    -
    the number of elements returned by this call. -
    -Scope:local. +
    y
    +
    A logical mask which is true for all corresponding entries of + $x$ that are local to the current process +Scope: local
    -Type:required. +Type: required
    Intent: out.
    -Returned as: an integer scalar. -
    -
    ia
    -
    the row indices. -
    -Scope:local. -
    -Type:required. -
    -Intent: inout. -
    -Specified as: an integer array with the ALLOCATABLE attribute. -
    -
    ja
    -
    the column indices of the elements to be inserted. -
    -Scope:local. -
    -Type:required. -
    -Intent: inout. -
    -Specified as: an integer array with the ALLOCATABLE attribute. -
    -
    val
    -
    the elements to be inserted. -
    -Scope:local. -
    -Type:required. -
    -Intent: inout. -
    -Specified as: a real array with the ALLOCATABLE attribute. +Specified as: a scalar or rank one logical array.
    info
    Error code. @@ -205,52 +136,14 @@ An integer value; 0 means no error has been detected. Notes
      -
    1. The output $nz$ is always the size of the output generated by - the current call; thus, if append=.true., the total output - size will be $nzin+nz$, with the newly extracted coefficients stored in - entries nzin+1:nzin+nz of the array arguments; -
    2. -
    3. When append=.true. the output arrays are reallocated as - necessary; -
    4. -
    5. The row and column indices are returned in the local numbering - scheme; if the global numbering is desired, the user may employ the - psb_loc_to_glob routine on the output. +
    6. This routine returns a .true. value for those indices + that are local to the current process, including the halo + indices.

    - -

    - +

    diff --git a/docs/html/node97.html b/docs/html/node97.html index 9a446831..184f952e 100644 --- a/docs/html/node97.html +++ b/docs/html/node97.html @@ -3,8 +3,8 @@ -psb_sizeof -- Memory occupation - +psb_get_boundary -- Extract list of boundary elements + @@ -16,50 +16,46 @@ - + -

    -psb_sizeof -- Memory occupation +

    +psb_get_boundary -- Extract list of boundary + elements

    -

    -This function computes the memory occupation of a PSBLAS object. -

    -isz = psb_sizeof(a)
    -isz = psb_sizeof(desc_a)
    -isz = psb_sizeof(prec)
    +call psb_get_boundary(bndel, desc, info)
     

    @@ -70,54 +66,63 @@ isz = psb_sizeof(prec)

    On Entry
    -
    a
    -
    A sparse matrix -$A$. +
    desc
    +
    the communication descriptor.
    -Scope: local +Scope:local.
    -Type: required +Type:required.
    Intent: in.
    -Specified as: a structured data of type spdatapsb_Tspmat_type. +Specified as: a structured data of type descdatapsb_desc_type. +
    + + +

    +

    +
    On Return
    +
    -
    desc_a
    -
    Communication descriptor. +
    bndel
    +
    The list of boundary elements on the calling process, in + local numbering.
    Scope: local
    Type: required
    -Intent: in. +Intent: out.
    -Specified as: a structured data of type descdatapsb_desc_type. -
    -
    prec
    -
    Scope: local +Specified as: a rank one array with the ALLOCATABLE +attribute, of type integer. +
    +
    info
    +
    Error code.
    -Type: required +Scope: local
    -Intent: in. +Type: required
    -Specified as: a preconditioner data structure precdatapsb_prec_type. -
    -
    On Return
    -
    -
    -
    Function value
    -
    The memory occupation of the object specified in - the calling sequence, in bytes. -
    -Scope: local +Intent: out.
    -Returned as: an integer(psb_long_int_k_) number. +An integer value; 0 means no error has been detected.
    +

    +Notes + +

      +
    1. If there are no boundary elements (i.e., if the local part of + the connectivity graph is self-contained) the output vector is set + to the “not allocated” state. +
    2. +
    3. Otherwise the size of bndel will be exactly equal to the + number of boundary elements. +
    4. +
    +



    diff --git a/docs/html/node98.html b/docs/html/node98.html index 5625baef..4f8e6938 100644 --- a/docs/html/node98.html +++ b/docs/html/node98.html @@ -3,8 +3,8 @@ -Sorting utilities -- - +psb_get_overlap -- Extract list of overlap elements + @@ -14,121 +14,68 @@ + - + -

    -Sorting utilities -- +

    +psb_get_overlap -- Extract list of overlap + elements

    -psb_msort -- Sorting by the Merge-sort - algorithm - -

    -psb_qsort -- Sorting by the Quicksort - algorithm - -

    -psb_hsort -- Sorting by the Heapsort algorithm

    -call psb_msort(x,ix,dir,flag)
    -call psb_qsort(x,ix,dir,flag)
    -call psb_hsort(x,ix,dir,flag)
    +call psb_get_overlap(ovrel, desc, info)
     

    -These serial routines sort a sequence $X$ into ascending or -descending order. The argument meaning is identical for the three -calls; the only difference is the algorithm used to accomplish the -task (see Usage Notes below).

    Type:
    Asynchronous.
    -
    On Entry
    +
    On Entry
    -
    x
    -
    The sequence to be sorted. +
    desc
    +
    the communication descriptor.
    -Type:required. +Scope:local.
    -Specified as: an integer, real or complex array of rank 1. -
    -
    ix
    -
    A vector of indices. -
    -Type:optional. -
    -Specified as: an integer array of (at least) the same size as $X$. -
    -
    dir
    -
    The desired ordering. -
    -Type:optional. -
    -Specified as: an integer value:
    -
    Integer and real data:
    -
    psb_sort_up_, -psb_sort_down_, psb_asort_up_, psb_asort_down_; -default psb_sort_up_. -
    -
    Complex data:
    -
    psb_lsort_up_, -psb_lsort_down_, psb_asort_up_, psb_asort_down_; -default psb_lsort_up_. -
    -
    -
    -
    flag
    -
    Whether to keep the original values in $IX$. +Type:required.
    -Type:optional. +Intent: in.
    -Specified as: an integer value psb_sort_ovw_idx_ or -psb_sort_keep_idx_; default psb_sort_ovw_idx_. - -

    +Specified as: a structured data of type descdatapsb_desc_type.

    @@ -137,155 +84,46 @@ Specified as: an integer value psb_sort_ovw_idx_ or
    On Return
    -
    x
    -
    The sequence of values, in the chosen ordering. +
    ovrel
    +
    The list of overlap elements on the calling process, in + local numbering.
    -Type:required. +Scope: local
    -Specified as: an integer, real or complex array of rank 1. -
    -
    ix
    -
    A vector of indices. +Type: required +
    +Intent: out. +
    +Specified as: a rank one array with the ALLOCATABLE +attribute, of type integer. +
    +
    info
    +
    Error code. +
    +Scope: local +
    +Type: required
    -Type: Optional +Intent: out.
    -An integer array of rank 1, whose entries are moved to the same -position as the corresponding entries in $x$. +An integer value; 0 means no error has been detected.
    -

    -

    Notes

      -
    1. For integer or real data the sorting can be performed in the up/down direction, on the - natural or absolute values; -
    2. -
    3. For complex data the sorting can be done in a lexicographic - order (i.e.: sort on the real part with ties broken according to - the imaginary part) or on the absolute values; -
    4. -
    5. The routines return the items in the chosen ordering; the - output difference is the handling of ties (i.e. items with an - equal value) in the original input. With the merge-sort algorithm - ties are preserved in the same relative order as they had in the - original sequence, while this is not guaranteed for quicksort or - heapsort; -
    6. -
    7. If -$flag = psb\_sort\_ovw\_idx\_$ then the entries in $ix(1:n)$ - where $n$ is the size of $x$ are initialized to -$ix(i) \leftarrow
-i$; thus, upon return from the subroutine, for each - index $i$ we have in $ix(i)$ the position that the item $x(i)$ - occupied in the original data sequence; -
    8. -
    9. If -$flag = psb\_sort\_keep\_idx\_$ the routine will assume that - the entries in $ix(:)$ have already been initialized by the user; -
    10. -
    11. The three sorting algorithms have a similar $O(n \log n)$ expected - running time; in the average case quicksort will be the - fastest and merge-sort the slowest. However note that: - -
        -
      1. The worst case running time for quicksort is $O(n^2)$; the algorithm - implemented here follows the well-known median-of-three heuristics, - but the worst case may still apply; +
      2. If there are no overlap elements the output vector is set + to the “not allocated” state.
      3. -
      4. The worst case running time for merge-sort and heap-sort is - $O(n \log n)$ as the average case; -
      5. -
      6. The merge-sort algorithm is implemented to take advantage of - subsequences that may be already in the desired ordering prior to - the subroutine call; this situation is relatively common when - dealing with groups of indices of sparse matrix entries, thus - merge-sort is the preferred choice when a sorting is needed - by other routines in the library. -
      7. -
      +
    12. Otherwise the size of ovrel will be exactly equal to the + number of overlap elements.

    - -

    - -

    - +

    diff --git a/docs/html/node99.html b/docs/html/node99.html index 24fa37b8..57f6c73e 100644 --- a/docs/html/node99.html +++ b/docs/html/node99.html @@ -3,8 +3,8 @@ -Parallel environment routines - +psb_sp_getrow -- Extract row(s) from a sparse matrix + @@ -14,93 +14,243 @@ - - - + + + -

    - +

    +psb_sp_getrow -- Extract row(s) from a sparse + matrix +

    + +

    +

    +call psb_sp_getrow(row, a, nz, ia, ja, val, info, &
    +              & append, nzin, lrw)
    +
    + +

    +

    +
    Type:
    +
    Asynchronous. +
    +
    On Entry
    +
    +
    +
    row
    +
    The (first) row to be extracted. +
    +Scope:local +
    +Type:required +
    +Intent: in. +
    +Specified as: an integer $>0$. +
    +
    a
    +
    the matrix from which to get rows. +
    +Scope:local +
    +Type:required +
    +Intent: in. +
    +Specified as: a structured data of type spdatapsb_Tspmat_type. +
    +
    append
    +
    Whether to append or overwrite existing output. +
    +Scope:local +
    +Type:optional +
    +Intent: in.
    -Parallel environment routines - +Specified as: a logical value default: false (overwrite). +
    +
    nzin
    +
    Input size to be appended to. +
    +Scope:local +
    +Type:optional +
    +Intent: in. +
    +Specified as: an integer $>0$. When append is true, specifies how many +entries in the output vectors are already filled. +
    +
    lrw
    +
    The last row to be extracted. +
    +Scope:local +
    +Type:optional +
    +Intent: in. +
    +Specified as: an integer $>0$, default: $row$.

    -


    - -Subsections - - - -

    +
    +
    + +

    +

    +
    On Return
    +
    +
    +
    nz
    +
    the number of elements returned by this call. +
    +Scope:local. +
    +Type:required. +
    +Intent: out. +
    +Returned as: an integer scalar. +
    +
    ia
    +
    the row indices. +
    +Scope:local. +
    +Type:required. +
    +Intent: inout. +
    +Specified as: an integer array with the ALLOCATABLE attribute. +
    +
    ja
    +
    the column indices of the elements to be inserted. +
    +Scope:local. +
    +Type:required. +
    +Intent: inout. +
    +Specified as: an integer array with the ALLOCATABLE attribute. +
    +
    val
    +
    the elements to be inserted. +
    +Scope:local. +
    +Type:required. +
    +Intent: inout. +
    +Specified as: a real array with the ALLOCATABLE attribute. +
    +
    info
    +
    Error code. +
    +Scope: local +
    +Type: required +
    +Intent: out. +
    +An integer value; 0 means no error has been detected. +
    +
    + +

    +Notes + +

      +
    1. The output $nz$ is always the size of the output generated by + the current call; thus, if append=.true., the total output + size will be $nzin+nz$, with the newly extracted coefficients stored in + entries nzin+1:nzin+nz of the array arguments; +
    2. +
    3. When append=.true. the output arrays are reallocated as + necessary; +
    4. +
    5. The row and column indices are returned in the local numbering + scheme; if the global numbering is desired, the user may employ the + psb_loc_to_glob routine on the output. +
    6. +
    + +

    + +

    + diff --git a/docs/html/userhtml.html b/docs/html/userhtml.html index e3200a83..cccebd92 100644 --- a/docs/html/userhtml.html +++ b/docs/html/userhtml.html @@ -20,18 +20,18 @@ @@ -61,345 +61,351 @@ Dec 1st, 2018