mirror of
https://github.com/sfilippone/psblas3.git
synced 2026-10-19 04:12:09 +00:00
Updates to user guide
This commit is contained in:
+93
-93
@@ -17,10 +17,10 @@ href="userhtmlse5.html#tailuserhtmlse5.html" >prev-tail</a>] [<a
|
||||
href="userhtmlse3.html#tailuserhtmlse6.html">tail</a>] [<a
|
||||
href="userhtml.html#userhtmlse9.html" >up</a>] </p></div>
|
||||
<h3 class="sectionHead"><span class="titlemark">6 </span> <a
|
||||
id="x11-770006"></a>Data management routines</h3>
|
||||
id="x12-780006"></a>Data management routines</h3>
|
||||
<!--l. 8--><p class="noindent" >
|
||||
<h4 class="subsectionHead"><span class="titlemark">6.1 </span> <a
|
||||
id="x11-780006.1"></a>psb_cdall — Allocates a communication descriptor</h4>
|
||||
id="x12-790006.1"></a>psb_cdall — Allocates a communication descriptor</h4>
|
||||
|
||||
|
||||
|
||||
@@ -261,7 +261,7 @@ class="newline" />An integer value; 0 means no error has been detected.</dd></dl
|
||||
class="pplb7t-x-x-120">Notes</span>
|
||||
<ol class="enumerate1" >
|
||||
<li
|
||||
class="enumerate" id="x11-78002x1">
|
||||
class="enumerate" id="x12-79002x1">
|
||||
|
||||
|
||||
|
||||
@@ -427,7 +427,7 @@ class="cmtt-10">local</span></span></span> in calls to <span class="obeylines-h"
|
||||
class="cmtt-10">psb_spins</span></span></span> and
|
||||
<span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-10">psb_geins</span></span></span>; see also sec. <a
|
||||
href="userhtmlse2.html#x4-70002.3.1">2.3.1<!--tex4ht:ref: sec:usermaps --></a>.
|
||||
href="userhtmlse2.html#x5-80002.3.1">2.3.1<!--tex4ht:ref: sec:usermaps --></a>.
|
||||
</dd><dt class="description">
|
||||
<!--l. 165--><p class="noindent" >
|
||||
<span
|
||||
@@ -452,18 +452,18 @@ class="description">
|
||||
multilevel preconditioners.</dd></dl>
|
||||
</li>
|
||||
<li
|
||||
class="enumerate" id="x11-78004x2">
|
||||
class="enumerate" id="x12-79004x2">
|
||||
<!--l. 173--><p class="noindent" >On exit from this routine the descriptor is in the build state.
|
||||
</li>
|
||||
<li
|
||||
class="enumerate" id="x11-78006x3">
|
||||
class="enumerate" id="x12-79006x3">
|
||||
<!--l. 175--><p class="noindent" >Calling the routine with <span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-10">vg</span></span></span> or <span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-10">parts</span></span></span> implies that every process will scan the
|
||||
entire index space to figure out the local indices.
|
||||
</li>
|
||||
<li
|
||||
class="enumerate" id="x11-78008x4">
|
||||
class="enumerate" id="x12-79008x4">
|
||||
<!--l. 178--><p class="noindent" >Overlapped indices are possible with both <span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-10">parts</span></span></span> and <span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-10">vl</span></span></span> invocations.
|
||||
@@ -472,7 +472,7 @@ class="cmtt-10">vl</span></span></span> invocations.
|
||||
|
||||
</li>
|
||||
<li
|
||||
class="enumerate" id="x11-78010x5">
|
||||
class="enumerate" id="x12-79010x5">
|
||||
<!--l. 180--><p class="noindent" >When the subroutine is invoked with <span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-10">vl</span></span></span> in conjunction with <span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-10">globalcheck=.true.</span></span></span>,
|
||||
@@ -480,7 +480,7 @@ class="cmtt-10">globalcheck=.true.</span></span></span>,
|
||||
indices.
|
||||
</li>
|
||||
<li
|
||||
class="enumerate" id="x11-78012x6">
|
||||
class="enumerate" id="x12-79012x6">
|
||||
<!--l. 183--><p class="noindent" >When the subroutine is invoked with <span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-10">vl</span></span></span> in conjunction with
|
||||
<span class="obeylines-h"><span class="verb"><span
|
||||
@@ -491,7 +491,7 @@ class="cmtt-10">vl</span></span></span> have
|
||||
unpredictable.
|
||||
</li>
|
||||
<li
|
||||
class="enumerate" id="x11-78014x7">
|
||||
class="enumerate" id="x12-79014x7">
|
||||
<!--l. 189--><p class="noindent" >Orphan and overlap indices are impossible by construction when the
|
||||
subroutine is invoked with <span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-10">nl</span></span></span> (alone), or <span class="obeylines-h"><span class="verb"><span
|
||||
@@ -500,7 +500,7 @@ class="cmtt-10">vg</span></span></span>.</li></ol>
|
||||
|
||||
|
||||
<h4 class="subsectionHead"><span class="titlemark">6.2 </span> <a
|
||||
id="x11-790006.2"></a>psb_cdins — Communication descriptor insert routine</h4>
|
||||
id="x12-800006.2"></a>psb_cdins — Communication descriptor insert routine</h4>
|
||||
|
||||
|
||||
|
||||
@@ -696,25 +696,25 @@ class="zplmr7m-">nz</span>.
|
||||
class="pplb7t-x-x-120">Notes</span>
|
||||
<ol class="enumerate1" >
|
||||
<li
|
||||
class="enumerate" id="x11-79002x1">
|
||||
class="enumerate" id="x12-80002x1">
|
||||
<!--l. 279--><p class="noindent" >This routine may only be called if the descriptor is in the build state;
|
||||
</li>
|
||||
<li
|
||||
class="enumerate" id="x11-79004x2">
|
||||
class="enumerate" id="x12-80004x2">
|
||||
<!--l. 281--><p class="noindent" >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.
|
||||
</li>
|
||||
<li
|
||||
class="enumerate" id="x11-79006x3">
|
||||
class="enumerate" id="x12-80006x3">
|
||||
<!--l. 284--><p class="noindent" >The second form of this routine will be useful when dealing with
|
||||
user-specified index mappings; see also <a
|
||||
href="userhtmlse2.html#x4-70002.3.1">2.3.1<!--tex4ht:ref: sec:usermaps --></a>.</li></ol>
|
||||
href="userhtmlse2.html#x5-80002.3.1">2.3.1<!--tex4ht:ref: sec:usermaps --></a>.</li></ol>
|
||||
|
||||
|
||||
|
||||
<h4 class="subsectionHead"><span class="titlemark">6.3 </span> <a
|
||||
id="x11-800006.3"></a>psb_cdasb — Communication descriptor assembly routine</h4>
|
||||
id="x12-810006.3"></a>psb_cdasb — Communication descriptor assembly routine</h4>
|
||||
|
||||
|
||||
|
||||
@@ -818,7 +818,7 @@ class="newline" />An integer value; 0 means no error has been detected.</dd></dl
|
||||
class="pplb7t-x-x-120">Notes</span>
|
||||
<ol class="enumerate1" >
|
||||
<li
|
||||
class="enumerate" id="x11-80002x1">
|
||||
class="enumerate" id="x12-81002x1">
|
||||
<!--l. 331--><p class="noindent" >On exit from this routine the descriptor is in the assembled state.</li></ol>
|
||||
<!--l. 334--><p class="noindent" >This call will set up all the necessary information for the halo data exchanges. In doing
|
||||
so, the library will need to identify the set of processes owning the halo indices
|
||||
@@ -835,7 +835,7 @@ class="cmtt-10">psb_cdasb</span></span></span>.
|
||||
|
||||
|
||||
<h4 class="subsectionHead"><span class="titlemark">6.4 </span> <a
|
||||
id="x11-810006.4"></a>psb_cdcpy — Copies a communication descriptor</h4>
|
||||
id="x12-820006.4"></a>psb_cdcpy — Copies a communication descriptor</h4>
|
||||
|
||||
|
||||
|
||||
@@ -920,7 +920,7 @@ class="newline" />An integer value; 0 means no error has been detected.</dd></dl
|
||||
|
||||
|
||||
<h4 class="subsectionHead"><span class="titlemark">6.5 </span> <a
|
||||
id="x11-820006.5"></a>psb_cdfree — Frees a communication descriptor</h4>
|
||||
id="x12-830006.5"></a>psb_cdfree — Frees a communication descriptor</h4>
|
||||
|
||||
|
||||
|
||||
@@ -983,7 +983,7 @@ class="newline" />An integer value; 0 means no error has been detected.</dd></dl
|
||||
|
||||
|
||||
<h4 class="subsectionHead"><span class="titlemark">6.6 </span> <a
|
||||
id="x11-830006.6"></a>psb_cdbldext — Build an extended communication descriptor</h4>
|
||||
id="x12-840006.6"></a>psb_cdbldext — Build an extended communication descriptor</h4>
|
||||
|
||||
|
||||
|
||||
@@ -1116,7 +1116,7 @@ class="newline" />An integer value; 0 means no error has been detected.</dd></dl
|
||||
class="pplb7t-x-x-120">Notes</span>
|
||||
<ol class="enumerate1" >
|
||||
<li
|
||||
class="enumerate" id="x11-83002x1">
|
||||
class="enumerate" id="x12-84002x1">
|
||||
<!--l. 465--><p class="noindent" >Specifying <span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-10">psb_ovt_xhal_</span></span></span> for the <span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-10">extype</span></span></span> argument the user will obtain
|
||||
@@ -1125,7 +1125,7 @@ class="cmtt-10">extype</span></span></span> argument the user will obtain
|
||||
mapping is identical to that of the base descriptor;
|
||||
</li>
|
||||
<li
|
||||
class="enumerate" id="x11-83004x2">
|
||||
class="enumerate" id="x12-84004x2">
|
||||
|
||||
|
||||
|
||||
@@ -1139,7 +1139,7 @@ class="cmtt-10">extype</span></span></span> argument the user will obtain
|
||||
|
||||
|
||||
<h4 class="subsectionHead"><span class="titlemark">6.7 </span> <a
|
||||
id="x11-840006.7"></a>psb_spall — Allocates a sparse matrix</h4>
|
||||
id="x12-850006.7"></a>psb_spall — Allocates a sparse matrix</h4>
|
||||
|
||||
|
||||
|
||||
@@ -1272,18 +1272,18 @@ class="newline" />An integer value; 0 means no error has been detected.</dd></dl
|
||||
class="pplb7t-x-x-120">Notes</span>
|
||||
<ol class="enumerate1" >
|
||||
<li
|
||||
class="enumerate" id="x11-84002x1">
|
||||
class="enumerate" id="x12-85002x1">
|
||||
<!--l. 597--><p class="noindent" >On exit from this routine the sparse matrix is in the build state.
|
||||
</li>
|
||||
<li
|
||||
class="enumerate" id="x11-84004x2">
|
||||
class="enumerate" id="x12-85004x2">
|
||||
<!--l. 599--><p class="noindent" >The descriptor may be in either the build or assembled state.
|
||||
|
||||
|
||||
|
||||
</li>
|
||||
<li
|
||||
class="enumerate" id="x11-84006x3">
|
||||
class="enumerate" id="x12-85006x3">
|
||||
<!--l. 600--><p class="noindent" >Providing a good estimate for the number of nonzeroes <span
|
||||
class="zplmr7m-">nnz </span>in the
|
||||
assembled matrix may substantially improve performance in the matrix
|
||||
@@ -1291,7 +1291,7 @@ class="zplmr7m-">nnz </span>in the
|
||||
multiple) data reallocations;
|
||||
</li>
|
||||
<li
|
||||
class="enumerate" id="x11-84008x4">
|
||||
class="enumerate" id="x12-85008x4">
|
||||
<!--l. 604--><p class="noindent" >Using <span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-10">psb_matbld_remote_</span></span></span> is likely to cause a runtime overhead at
|
||||
assembly time;</li></ol>
|
||||
@@ -1299,7 +1299,7 @@ class="cmtt-10">psb_matbld_remote_</span></span></span> is likely to cause a
|
||||
|
||||
|
||||
<h4 class="subsectionHead"><span class="titlemark">6.8 </span> <a
|
||||
id="x11-850006.8"></a>psb_spins — Insert a set of coefficients into a sparse matrix</h4>
|
||||
id="x12-860006.8"></a>psb_spins — Insert a set of coefficients into a sparse matrix</h4>
|
||||
|
||||
|
||||
|
||||
@@ -1523,17 +1523,17 @@ class="pplb7t-x-x-120">Notes</span>
|
||||
|
||||
<ol class="enumerate1" >
|
||||
<li
|
||||
class="enumerate" id="x11-85002x1">
|
||||
class="enumerate" id="x12-86002x1">
|
||||
<!--l. 702--><p class="noindent" >On entry to this routine the descriptor may be in either the build or
|
||||
assembled state.
|
||||
</li>
|
||||
<li
|
||||
class="enumerate" id="x11-85004x2">
|
||||
class="enumerate" id="x12-86004x2">
|
||||
<!--l. 704--><p class="noindent" >On entry to this routine the sparse matrix may be in either the build or
|
||||
update state.
|
||||
</li>
|
||||
<li
|
||||
class="enumerate" id="x11-85006x3">
|
||||
class="enumerate" id="x12-86006x3">
|
||||
<!--l. 706--><p class="noindent" >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 <span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-10">psb_cdins</span></span></span>
|
||||
@@ -1542,11 +1542,11 @@ class="cmtt-10">psb_cdins</span></span></span>
|
||||
appropriate processing;
|
||||
</li>
|
||||
<li
|
||||
class="enumerate" id="x11-85008x4">
|
||||
class="enumerate" id="x12-86008x4">
|
||||
<!--l. 712--><p class="noindent" >The input data can be passed in either COO or CSR formats;
|
||||
</li>
|
||||
<li
|
||||
class="enumerate" id="x11-85010x5">
|
||||
class="enumerate" id="x12-86010x5">
|
||||
<!--l. 713--><p class="noindent" >In COO format the coefficients to be inserted are represented by the
|
||||
ordered triples <span
|
||||
class="zplmr7m-">ia</span><span
|
||||
@@ -1568,7 +1568,7 @@ class="zplmr7m-">nz</span>; these triples are
|
||||
arbitrary;
|
||||
</li>
|
||||
<li
|
||||
class="enumerate" id="x11-85012x6">
|
||||
class="enumerate" id="x12-86012x6">
|
||||
<!--l. 716--><p class="noindent" >In CSR format the coefficients to be inserted for each input row <span
|
||||
class="zplmr7m-">i </span><span
|
||||
class="zplmr7t-">= </span>1, <span
|
||||
@@ -1610,7 +1610,7 @@ class="zplmr7y-">- </span>1 should be one of the local indices, but are
|
||||
arbitrary;
|
||||
</li>
|
||||
<li
|
||||
class="enumerate" id="x11-85014x7">
|
||||
class="enumerate" id="x12-86014x7">
|
||||
<!--l. 721--><p class="noindent" >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);
|
||||
@@ -1619,12 +1619,12 @@ class="zplmr7y-">- </span>1 should be one of the local indices, but are
|
||||
|
||||
</li>
|
||||
<li
|
||||
class="enumerate" id="x11-85016x8">
|
||||
class="enumerate" id="x12-86016x8">
|
||||
<!--l. 724--><p class="noindent" >Coefficients from different rows may also be mixed up freely in a single
|
||||
call, according to the application needs;
|
||||
</li>
|
||||
<li
|
||||
class="enumerate" id="x11-85018x9">
|
||||
class="enumerate" id="x12-86018x9">
|
||||
<!--l. 726--><p class="noindent" >Coefficients from matrix rows not owned by the calling process are
|
||||
treated according to the value of <span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-10">bldmode</span></span></span> specified at allocation time; if
|
||||
@@ -1634,20 +1634,20 @@ class="cmtt-10">psb_matbld_remote_</span></span></span> the library will keep tr
|
||||
of them, otherwise they are silently ignored;
|
||||
</li>
|
||||
<li
|
||||
class="enumerate" id="x11-85020x10">
|
||||
class="enumerate" id="x12-86020x10">
|
||||
<!--l. 731--><p class="noindent" >If the descriptor is in the assembled state, then any entries in the sparse
|
||||
matrix that would generate additional communication requirements are
|
||||
ignored;
|
||||
</li>
|
||||
<li
|
||||
class="enumerate" id="x11-85022x11">
|
||||
class="enumerate" id="x12-86022x11">
|
||||
<!--l. 734--><p class="noindent" >If the matrix is in the update state, any entries in positions that were not
|
||||
present in the original matrix are ignored.</li></ol>
|
||||
|
||||
|
||||
|
||||
<h4 class="subsectionHead"><span class="titlemark">6.9 </span> <a
|
||||
id="x11-860006.9"></a>psb_spasb — Sparse matrix assembly routine</h4>
|
||||
id="x12-870006.9"></a>psb_spasb — Sparse matrix assembly routine</h4>
|
||||
|
||||
|
||||
|
||||
@@ -1798,7 +1798,7 @@ class="newline" />An integer value; 0 means no error has been detected.</dd></dl
|
||||
class="pplb7t-x-x-120">Notes</span>
|
||||
<ol class="enumerate1" >
|
||||
<li
|
||||
class="enumerate" id="x11-86002x1">
|
||||
class="enumerate" id="x12-87002x1">
|
||||
<!--l. 795--><p class="noindent" >On entry to this routine the descriptor must be in the assembled state, i.e.
|
||||
<span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-10">psb_cdasb</span></span></span> must already have been called.
|
||||
@@ -1807,17 +1807,17 @@ class="cmtt-10">psb_cdasb</span></span></span> must already have been called.
|
||||
|
||||
</li>
|
||||
<li
|
||||
class="enumerate" id="x11-86004x2">
|
||||
class="enumerate" id="x12-87004x2">
|
||||
<!--l. 797--><p class="noindent" >The sparse matrix may be in either the build or update state;
|
||||
</li>
|
||||
<li
|
||||
class="enumerate" id="x11-86006x3">
|
||||
class="enumerate" id="x12-87006x3">
|
||||
<!--l. 798--><p class="noindent" >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;
|
||||
</li>
|
||||
<li
|
||||
class="enumerate" id="x11-86008x4">
|
||||
class="enumerate" id="x12-87008x4">
|
||||
<!--l. 801--><p class="noindent" >If the update choice is <span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-10">psb_upd_perm_</span></span></span>, then subsequent calls to
|
||||
<span class="obeylines-h"><span class="verb"><span
|
||||
@@ -1826,16 +1826,16 @@ class="cmtt-10">psb_spins</span></span></span> to update the matrix must be arra
|
||||
at the first assembly;
|
||||
</li>
|
||||
<li
|
||||
class="enumerate" id="x11-86010x5">
|
||||
class="enumerate" id="x12-87010x5">
|
||||
<!--l. 805--><p class="noindent" >The output storage format need not be the same on all processes;
|
||||
</li>
|
||||
<li
|
||||
class="enumerate" id="x11-86012x6">
|
||||
class="enumerate" id="x12-87012x6">
|
||||
<!--l. 807--><p class="noindent" >On exit from this routine the matrix is in the assembled state, and thus is
|
||||
suitable for the computational routines;
|
||||
</li>
|
||||
<li
|
||||
class="enumerate" id="x11-86014x7">
|
||||
class="enumerate" id="x12-87014x7">
|
||||
<!--l. 809--><p class="noindent" >If the <span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-10">bldmode=psb_matbld_remote_</span></span></span> value was specified at allocation
|
||||
time, contributions defined on the current process but belonging to a
|
||||
@@ -1848,7 +1848,7 @@ class="cmtt-10">dupl=psb_dupl_add_</span></span></span>; it is necessary
|
||||
|
||||
|
||||
<h4 class="subsectionHead"><span class="titlemark">6.10 </span> <a
|
||||
id="x11-870006.10"></a>psb_spfree — Frees a sparse matrix</h4>
|
||||
id="x12-880006.10"></a>psb_spfree — Frees a sparse matrix</h4>
|
||||
|
||||
|
||||
|
||||
@@ -1931,7 +1931,7 @@ class="newline" />An integer value; 0 means no error has been detected.</dd></dl
|
||||
|
||||
|
||||
<h4 class="subsectionHead"><span class="titlemark">6.11 </span> <a
|
||||
id="x11-880006.11"></a>psb_sprn — Reinit sparse matrix structure for psblas routines.</h4>
|
||||
id="x12-890006.11"></a>psb_sprn — Reinit sparse matrix structure for psblas routines.</h4>
|
||||
|
||||
|
||||
|
||||
@@ -2027,13 +2027,13 @@ class="newline" />An integer value; 0 means no error has been detected.</dd></dl
|
||||
class="pplb7t-x-x-120">Notes</span>
|
||||
<ol class="enumerate1" >
|
||||
<li
|
||||
class="enumerate" id="x11-88002x1">
|
||||
class="enumerate" id="x12-89002x1">
|
||||
<!--l. 930--><p class="noindent" >On exit from this routine the sparse matrix is in the update state.</li></ol>
|
||||
|
||||
|
||||
|
||||
<h4 class="subsectionHead"><span class="titlemark">6.12 </span> <a
|
||||
id="x11-890006.12"></a>psb_geall — Allocates a dense matrix</h4>
|
||||
id="x12-900006.12"></a>psb_geall — Allocates a dense matrix</h4>
|
||||
|
||||
|
||||
|
||||
@@ -2190,7 +2190,7 @@ class="newline" />An integer value; 0 means no error has been detected.</dd></dl
|
||||
class="pplb7t-x-x-120">Notes</span>
|
||||
<ol class="enumerate1" >
|
||||
<li
|
||||
class="enumerate" id="x11-89002x1">
|
||||
class="enumerate" id="x12-90002x1">
|
||||
<!--l. 1040--><p class="noindent" >Using <span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-10">psb_matbld_remote_</span></span></span> is likely to cause a runtime overhead at
|
||||
assembly time;</li></ol>
|
||||
@@ -2198,7 +2198,7 @@ class="cmtt-10">psb_matbld_remote_</span></span></span> is likely to cause a
|
||||
|
||||
|
||||
<h4 class="subsectionHead"><span class="titlemark">6.13 </span> <a
|
||||
id="x11-900006.13"></a>psb_geins — Dense matrix insertion routine</h4>
|
||||
id="x12-910006.13"></a>psb_geins — Dense matrix insertion routine</h4>
|
||||
|
||||
|
||||
|
||||
@@ -2349,18 +2349,18 @@ class="pplb7t-x-x-120">Notes</span>
|
||||
|
||||
<ol class="enumerate1" >
|
||||
<li
|
||||
class="enumerate" id="x11-90002x1">
|
||||
class="enumerate" id="x12-91002x1">
|
||||
<!--l. 1105--><p class="noindent" >Dense vectors/matrices do not have an associated state;
|
||||
</li>
|
||||
<li
|
||||
class="enumerate" id="x11-90004x2">
|
||||
class="enumerate" id="x12-91004x2">
|
||||
<!--l. 1106--><p class="noindent" >Duplicate entries are either overwritten or added, there is no provision
|
||||
for raising an error condition.</li></ol>
|
||||
|
||||
|
||||
|
||||
<h4 class="subsectionHead"><span class="titlemark">6.14 </span> <a
|
||||
id="x11-910006.14"></a>psb_geasb — Assembly a dense matrix</h4>
|
||||
id="x12-920006.14"></a>psb_geasb — Assembly a dense matrix</h4>
|
||||
|
||||
|
||||
|
||||
@@ -2473,13 +2473,13 @@ class="newline" />An integer value; 0 means no error has been detected.</dd></dl
|
||||
class="pplb7t-x-x-120">Notes</span>
|
||||
<ol class="enumerate1" >
|
||||
<li
|
||||
class="enumerate" id="x11-91002x1">
|
||||
class="enumerate" id="x12-92002x1">
|
||||
<!--l. 1155--><p class="noindent" >On entry to this routine the descriptor must be in the assembled state, i.e.
|
||||
<span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-10">psb_cdasb</span></span></span> must already have been called.
|
||||
</li>
|
||||
<li
|
||||
class="enumerate" id="x11-91004x2">
|
||||
class="enumerate" id="x12-92004x2">
|
||||
<!--l. 1157--><p class="noindent" >If the <span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-10">bldmode=psb_matbld_remote_</span></span></span> value was specified at allocation
|
||||
time, contributions defined on the current process but belonging to a
|
||||
@@ -2490,7 +2490,7 @@ class="cmtt-10">dupl=psb_dupl_add_</span></span></span>.</li></ol>
|
||||
|
||||
|
||||
<h4 class="subsectionHead"><span class="titlemark">6.15 </span> <a
|
||||
id="x11-920006.15"></a>psb_gefree — Frees a dense matrix</h4>
|
||||
id="x12-930006.15"></a>psb_gefree — Frees a dense matrix</h4>
|
||||
|
||||
|
||||
|
||||
@@ -2577,7 +2577,7 @@ class="newline" />An integer value; 0 means no error has been detected.</dd></dl
|
||||
|
||||
|
||||
<h4 class="subsectionHead"><span class="titlemark">6.16 </span> <a
|
||||
id="x11-930006.16"></a>psb_gelp — Applies a left permutation to a dense matrix</h4>
|
||||
id="x12-940006.16"></a>psb_gelp — Applies a left permutation to a dense matrix</h4>
|
||||
|
||||
|
||||
|
||||
@@ -2673,7 +2673,7 @@ class="newline" />An integer value; 0 means no error has been detected.</dd></dl
|
||||
|
||||
|
||||
<h4 class="subsectionHead"><span class="titlemark">6.17 </span> <a
|
||||
id="x11-940006.17"></a>psb_glob_to_loc — Global to local indices convertion</h4>
|
||||
id="x12-950006.17"></a>psb_glob_to_loc — Global to local indices convertion</h4>
|
||||
|
||||
|
||||
|
||||
@@ -2815,7 +2815,7 @@ class="newline" />An integer value; 0 means no error has been detected.</dd></dl
|
||||
class="pplb7t-x-x-120">Notes</span>
|
||||
<ol class="enumerate1" >
|
||||
<li
|
||||
class="enumerate" id="x11-94002x1">
|
||||
class="enumerate" id="x12-95002x1">
|
||||
|
||||
|
||||
|
||||
@@ -2823,7 +2823,7 @@ class="pplb7t-x-x-120">Notes</span>
|
||||
set to a negative number;
|
||||
</li>
|
||||
<li
|
||||
class="enumerate" id="x11-94004x2">
|
||||
class="enumerate" id="x12-95004x2">
|
||||
<!--l. 1311--><p class="noindent" >The default <span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-10">I</span></span></span>gnore means that the negative output is the only action
|
||||
taken on an out-of-range input.</li></ol>
|
||||
@@ -2831,7 +2831,7 @@ class="cmtt-10">I</span></span></span>gnore means that the negative output
|
||||
|
||||
|
||||
<h4 class="subsectionHead"><span class="titlemark">6.18 </span> <a
|
||||
id="x11-950006.18"></a>psb_loc_to_glob — Local to global indices conversion</h4>
|
||||
id="x12-960006.18"></a>psb_loc_to_glob — Local to global indices conversion</h4>
|
||||
|
||||
|
||||
|
||||
@@ -2959,7 +2959,7 @@ class="newline" />An integer value; 0 means no error has been detected.</dd></dl
|
||||
|
||||
|
||||
<h4 class="subsectionHead"><span class="titlemark">6.19 </span> <a
|
||||
id="x11-960006.19"></a>psb_is_owned — </h4>
|
||||
id="x12-970006.19"></a>psb_is_owned — </h4>
|
||||
|
||||
|
||||
|
||||
@@ -3040,7 +3040,7 @@ class="newline" /></dd></dl>
|
||||
class="pplb7t-x-x-120">Notes</span>
|
||||
<ol class="enumerate1" >
|
||||
<li
|
||||
class="enumerate" id="x11-96002x1">
|
||||
class="enumerate" id="x12-97002x1">
|
||||
<!--l. 1407--><p class="noindent" >This routine returns a <span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-10">.true.</span></span></span> value for an index that is strictly owned by
|
||||
the current process, excluding the halo indices</li></ol>
|
||||
@@ -3048,7 +3048,7 @@ class="cmtt-10">.true.</span></span></span> value for an index that is strictly
|
||||
|
||||
|
||||
<h4 class="subsectionHead"><span class="titlemark">6.20 </span> <a
|
||||
id="x11-970006.20"></a>psb_owned_index — </h4>
|
||||
id="x12-980006.20"></a>psb_owned_index — </h4>
|
||||
|
||||
|
||||
|
||||
@@ -3158,7 +3158,7 @@ class="newline" />An integer value; 0 means no error has been detected.</dd></dl
|
||||
class="pplb7t-x-x-120">Notes</span>
|
||||
<ol class="enumerate1" >
|
||||
<li
|
||||
class="enumerate" id="x11-97002x1">
|
||||
class="enumerate" id="x12-98002x1">
|
||||
<!--l. 1459--><p class="noindent" >This routine returns a <span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-10">.true.</span></span></span> value for those indices that are strictly
|
||||
owned by the current process, excluding the halo indices</li></ol>
|
||||
@@ -3166,7 +3166,7 @@ class="cmtt-10">.true.</span></span></span> value for those indices that ar
|
||||
|
||||
|
||||
<h4 class="subsectionHead"><span class="titlemark">6.21 </span> <a
|
||||
id="x11-980006.21"></a>psb_is_local — </h4>
|
||||
id="x12-990006.21"></a>psb_is_local — </h4>
|
||||
|
||||
|
||||
|
||||
@@ -3247,7 +3247,7 @@ class="newline" /></dd></dl>
|
||||
class="pplb7t-x-x-120">Notes</span>
|
||||
<ol class="enumerate1" >
|
||||
<li
|
||||
class="enumerate" id="x11-98002x1">
|
||||
class="enumerate" id="x12-99002x1">
|
||||
<!--l. 1499--><p class="noindent" >This routine returns a <span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-10">.true.</span></span></span> value for an index that is local to the current
|
||||
process, including the halo indices</li></ol>
|
||||
@@ -3255,7 +3255,7 @@ class="cmtt-10">.true.</span></span></span> value for an index that is local to
|
||||
|
||||
|
||||
<h4 class="subsectionHead"><span class="titlemark">6.22 </span> <a
|
||||
id="x11-990006.22"></a>psb_local_index — </h4>
|
||||
id="x12-1000006.22"></a>psb_local_index — </h4>
|
||||
|
||||
|
||||
|
||||
@@ -3365,7 +3365,7 @@ class="newline" />An integer value; 0 means no error has been detected.</dd></dl
|
||||
class="pplb7t-x-x-120">Notes</span>
|
||||
<ol class="enumerate1" >
|
||||
<li
|
||||
class="enumerate" id="x11-99002x1">
|
||||
class="enumerate" id="x12-100002x1">
|
||||
<!--l. 1550--><p class="noindent" >This routine returns a <span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-10">.true.</span></span></span> value for those indices that are local to the
|
||||
current process, including the halo indices.</li></ol>
|
||||
@@ -3373,7 +3373,7 @@ class="cmtt-10">.true.</span></span></span> value for those indices that are loc
|
||||
|
||||
|
||||
<h4 class="subsectionHead"><span class="titlemark">6.23 </span> <a
|
||||
id="x11-1000006.23"></a>psb_get_boundary — Extract list of boundary elements</h4>
|
||||
id="x12-1010006.23"></a>psb_get_boundary — Extract list of boundary elements</h4>
|
||||
|
||||
|
||||
|
||||
@@ -3453,13 +3453,13 @@ class="newline" />An integer value; 0 means no error has been detected.</dd></dl
|
||||
class="pplb7t-x-x-120">Notes</span>
|
||||
<ol class="enumerate1" >
|
||||
<li
|
||||
class="enumerate" id="x11-100002x1">
|
||||
class="enumerate" id="x12-101002x1">
|
||||
<!--l. 1596--><p class="noindent" >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.
|
||||
</li>
|
||||
<li
|
||||
class="enumerate" id="x11-100004x2">
|
||||
class="enumerate" id="x12-101004x2">
|
||||
<!--l. 1599--><p class="noindent" >Otherwise the size of <span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-10">bndel</span></span></span> will be exactly equal to the number of
|
||||
boundary elements.</li></ol>
|
||||
@@ -3467,7 +3467,7 @@ class="cmtt-10">bndel</span></span></span> will be exactly equal to the nu
|
||||
|
||||
|
||||
<h4 class="subsectionHead"><span class="titlemark">6.24 </span> <a
|
||||
id="x11-1010006.24"></a>psb_get_overlap — Extract list of overlap elements</h4>
|
||||
id="x12-1020006.24"></a>psb_get_overlap — Extract list of overlap elements</h4>
|
||||
|
||||
|
||||
|
||||
@@ -3547,12 +3547,12 @@ class="newline" />An integer value; 0 means no error has been detected.</dd></dl
|
||||
class="pplb7t-x-x-120">Notes</span>
|
||||
<ol class="enumerate1" >
|
||||
<li
|
||||
class="enumerate" id="x11-101002x1">
|
||||
class="enumerate" id="x12-102002x1">
|
||||
<!--l. 1639--><p class="noindent" >If there are no overlap elements the output vector is set to the “not
|
||||
allocated” state.
|
||||
</li>
|
||||
<li
|
||||
class="enumerate" id="x11-101004x2">
|
||||
class="enumerate" id="x12-102004x2">
|
||||
<!--l. 1641--><p class="noindent" >Otherwise the size of <span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-10">ovrel</span></span></span> will be exactly equal to the number of overlap
|
||||
elements.</li></ol>
|
||||
@@ -3560,7 +3560,7 @@ class="cmtt-10">ovrel</span></span></span> will be exactly equal to the number o
|
||||
|
||||
|
||||
<h4 class="subsectionHead"><span class="titlemark">6.25 </span> <a
|
||||
id="x11-1020006.25"></a>psb_sp_getrow — Extract row(s) from a sparse matrix</h4>
|
||||
id="x12-1030006.25"></a>psb_sp_getrow — Extract row(s) from a sparse matrix</h4>
|
||||
|
||||
|
||||
|
||||
@@ -3742,7 +3742,7 @@ class="newline" />An integer value; 0 means no error has been detected.</dd></dl
|
||||
class="pplb7t-x-x-120">Notes</span>
|
||||
<ol class="enumerate1" >
|
||||
<li
|
||||
class="enumerate" id="x11-102002x1">
|
||||
class="enumerate" id="x12-103002x1">
|
||||
<!--l. 1727--><p class="noindent" >The output <span
|
||||
class="zplmr7m-">nz </span>is always the size of the output generated by the current
|
||||
call; thus, if <span class="obeylines-h"><span class="verb"><span
|
||||
@@ -3755,12 +3755,12 @@ class="cmtt-10">nzin+1:nzin+nz</span></span></span> of the
|
||||
array arguments;
|
||||
</li>
|
||||
<li
|
||||
class="enumerate" id="x11-102004x2">
|
||||
class="enumerate" id="x12-103004x2">
|
||||
<!--l. 1731--><p class="noindent" >When <span class="obeylines-h"><span class="verb"><span
|
||||
class="cmtt-10">append=.true.</span></span></span> the output arrays are reallocated as necessary;
|
||||
</li>
|
||||
<li
|
||||
class="enumerate" id="x11-102006x3">
|
||||
class="enumerate" id="x12-103006x3">
|
||||
<!--l. 1733--><p class="noindent" >The row and column indices are returned in the local numbering
|
||||
scheme; if the global numbering is desired, the user may employ the
|
||||
<span class="obeylines-h"><span class="verb"><span
|
||||
@@ -3769,7 +3769,7 @@ class="cmtt-10">psb_loc_to_glob</span></span></span> routine on the output.</li>
|
||||
|
||||
|
||||
<h4 class="subsectionHead"><span class="titlemark">6.26 </span> <a
|
||||
id="x11-1030006.26"></a>psb_sizeof — Memory occupation</h4>
|
||||
id="x12-1040006.26"></a>psb_sizeof — Memory occupation</h4>
|
||||
<!--l. 1744--><p class="noindent" >This function computes the memory occupation of a PSBLAS object.
|
||||
|
||||
|
||||
@@ -3869,7 +3869,7 @@ class="cmtt-10">integer(psb_long_int_k_)</span></span></span> number.</dd></dl>
|
||||
|
||||
|
||||
<h4 class="subsectionHead"><span class="titlemark">6.27 </span> <a
|
||||
id="x11-1040006.27"></a>Sorting utilities — </h4>
|
||||
id="x12-1050006.27"></a>Sorting utilities — </h4>
|
||||
<!--l. 1783--><p class="noindent" ><span
|
||||
class="pplb7t-x-x-120">psb</span><span
|
||||
class="pplb7t-x-x-120">_msort — Sorting by the Merge-sort algorithm</span>
|
||||
@@ -4005,12 +4005,12 @@ class="zplmr7m-">x</span>.</dd></dl>
|
||||
class="pplb7t-x-x-120">Notes</span>
|
||||
<ol class="enumerate1" >
|
||||
<li
|
||||
class="enumerate" id="x11-104002x1">
|
||||
class="enumerate" id="x12-105002x1">
|
||||
<!--l. 1839--><p class="noindent" >For integer or real data the sorting can be performed in the up/down
|
||||
direction, on the natural or absolute values;
|
||||
</li>
|
||||
<li
|
||||
class="enumerate" id="x11-104004x2">
|
||||
class="enumerate" id="x12-105004x2">
|
||||
<!--l. 1841--><p class="noindent" >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;
|
||||
@@ -4019,7 +4019,7 @@ class="pplb7t-x-x-120">Notes</span>
|
||||
|
||||
</li>
|
||||
<li
|
||||
class="enumerate" id="x11-104006x3">
|
||||
class="enumerate" id="x12-105006x3">
|
||||
<!--l. 1844--><p class="noindent" >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
|
||||
@@ -4027,7 +4027,7 @@ class="pplb7t-x-x-120">Notes</span>
|
||||
guaranteed for quicksort or heapsort;
|
||||
</li>
|
||||
<li
|
||||
class="enumerate" id="x11-104008x4">
|
||||
class="enumerate" id="x12-105008x4">
|
||||
<!--l. 1850--><p class="noindent" >If <span
|
||||
class="zplmr7m-">flag </span><span
|
||||
class="zplmr7t-">= </span><span
|
||||
@@ -4062,7 +4062,7 @@ class="zplmr7t-">) </span>occupied
|
||||
in the original data sequence;
|
||||
</li>
|
||||
<li
|
||||
class="enumerate" id="x11-104010x5">
|
||||
class="enumerate" id="x12-105010x5">
|
||||
<!--l. 1855--><p class="noindent" >If <span
|
||||
class="zplmr7m-">flag </span><span
|
||||
class="zplmr7t-">= </span><span
|
||||
@@ -4075,7 +4075,7 @@ class="zplmr7m-">ix</span><span
|
||||
class="zplmr7t-">(:) </span>have already been initialized by the user;
|
||||
</li>
|
||||
<li
|
||||
class="enumerate" id="x11-104012x6">
|
||||
class="enumerate" id="x12-105012x6">
|
||||
<!--l. 1857--><p class="noindent" >The three sorting algorithms have a similar <span
|
||||
class="zplmr7m-">O</span><span
|
||||
class="zplmr7t-">(</span><span
|
||||
@@ -4086,7 +4086,7 @@ class="zplmr7t-">) </span>expected running time;
|
||||
However note that:
|
||||
<ol class="enumerate2" >
|
||||
<li
|
||||
class="enumerate" id="x11-104014x1">
|
||||
class="enumerate" id="x12-105014x1">
|
||||
<!--l. 1861--><p class="noindent" >The worst case running time
|
||||
for quicksort is <span
|
||||
class="zplmr7m-">O</span><span
|
||||
@@ -4098,7 +4098,7 @@ class="zplmr7t-">)</span>; the algorithm implemented here follows the
|
||||
apply;
|
||||
</li>
|
||||
<li
|
||||
class="enumerate" id="x11-104016x2">
|
||||
class="enumerate" id="x12-105016x2">
|
||||
<!--l. 1864--><p class="noindent" >The worst case running time for merge-sort and heap-sort is
|
||||
<span
|
||||
class="zplmr7m-">O</span><span
|
||||
@@ -4108,7 +4108,7 @@ class="zplmr7m-">n</span><span
|
||||
class="zplmr7t-">) </span>as the average case;
|
||||
</li>
|
||||
<li
|
||||
class="enumerate" id="x11-104018x3">
|
||||
class="enumerate" id="x12-105018x3">
|
||||
<!--l. 1866--><p class="noindent" >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
|
||||
|
||||
Reference in New Issue
Block a user