You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
698 lines
29 KiB
HTML
698 lines
29 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
|
|
"http://www.w3.org/TR/html4/loose.dtd">
|
|
<html >
|
|
<head><title>Descriptor data structure</title>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
|
|
<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)">
|
|
<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)">
|
|
<!-- html,3 -->
|
|
<meta name="src" content="userhtml.tex">
|
|
<link rel="stylesheet" type="text/css" href="userhtml.css">
|
|
</head><body
|
|
>
|
|
<!--l. 44--><div class="crosslinks"><p class="noindent">[<a
|
|
href="userhtmlsu9.html" >next</a>] [<a
|
|
href="#tailuserhtmlsu5.html">tail</a>] [<a
|
|
href="userhtmlsu7.html#userhtmlsu8.html" >up</a>] </p></div>
|
|
<h4 class="subsectionHead"><span class="titlemark">3.1 </span> <a
|
|
id="x13-100003.1"></a>Descriptor data structure</h4>
|
|
<!--l. 46--><p class="noindent" >All the general matrix informations and elements to be exchanged among processes
|
|
are stored within a data structure of the type <a
|
|
id="descdata"><span
|
|
class="cmtt-10">psb</span><span
|
|
class="cmtt-10">_desc</span><span
|
|
class="cmtt-10">_type</span></a>. Every structure of this
|
|
type is associated with a discretization pattern and enables data communications and
|
|
other operations that are necessary for implementing the various algorithms of
|
|
interest to us.
|
|
|
|
|
|
|
|
<!--l. 53--><p class="indent" > The data structure itself <span class="obeylines-h"><span class="verb"><span
|
|
class="cmtt-10">psb_desc_type</span></span></span> can be treated as an opaque object
|
|
handled via the tools routines of Sec. <a
|
|
href="userhtmlse6.html#x37-710006">6<!--tex4ht:ref: sec:toolsrout --></a> or the query routines detailed below;
|
|
nevertheless we include here a description for the curious reader.
|
|
<!--l. 59--><p class="indent" > First we describe the <span class="obeylines-h"><span class="verb"><span
|
|
class="cmtt-10">psb_indx_map</span></span></span> type. This is a data structure that keeps
|
|
track of a certain number of basic issues such as:
|
|
<ul class="itemize1">
|
|
<li class="itemize">The value of the communication/MPI context;
|
|
</li>
|
|
<li class="itemize">The number of indices in the index space, i.e. global number of rows and
|
|
columns of a sparse matrix;
|
|
</li>
|
|
<li class="itemize">The local set of indices, including:
|
|
<ul class="itemize2">
|
|
<li class="itemize">The number of local indices (and local rows);
|
|
</li>
|
|
<li class="itemize">The number of halo indices (and therefore local columns);
|
|
</li>
|
|
<li class="itemize">The global indices corresponding to the local ones.</li></ul>
|
|
</li></ul>
|
|
<!--l. 73--><p class="noindent" >There are many different schemes for storing these data; therefore there are a number of
|
|
types extending the base one, and the descriptor structure holds a polymorphic
|
|
object whose dynamic type can be any of the extended types. The methods
|
|
associated with this data type answer the following queries:
|
|
<ul class="itemize1">
|
|
<li class="itemize">For a given set of local indices, find the corresponding indices in the global
|
|
numbering;
|
|
</li>
|
|
<li class="itemize">For a given set of global indices, find the corresponding indices in the local
|
|
numbering, if any, or return an invalid
|
|
</li>
|
|
<li class="itemize">Add a global index to the set of halo indices;
|
|
</li>
|
|
<li class="itemize">Find the process owner of each member of a set of global indices.</li></ul>
|
|
<!--l. 88--><p class="noindent" >All methods but the last are purely local; the last method potentially requires
|
|
communication among processes, and thus is a synchronous method. The
|
|
choice of a specific dynamic type for the index map is made at the time the
|
|
descriptor is initially allocated, according to the mode of initialization (see
|
|
also <a
|
|
href="userhtmlse6.html#x37-710006">6<!--tex4ht:ref: sec:toolsrout --></a>).
|
|
<!--l. 94--><p class="indent" > The descriptor contents are as follows:
|
|
<dl class="description"><dt class="description">
|
|
<span
|
|
class="cmbx-10">indxmap</span> </dt><dd
|
|
class="description">A polymorphic variable of a type that is any extension of the
|
|
indx_map type described above. <br
|
|
class="newline" />
|
|
|
|
|
|
|
|
</dd><dt class="description">
|
|
<span
|
|
class="cmbx-10">halo</span><span
|
|
class="cmbx-10">_index</span> </dt><dd
|
|
class="description">A list of the halo and boundary elements for the current process to be
|
|
exchanged with other processes; for each processes with which it is necessary to
|
|
communicate:
|
|
<ol class="enumerate1" >
|
|
<li
|
|
class="enumerate" id="x13-10002x1">Process identifier;
|
|
</li>
|
|
<li
|
|
class="enumerate" id="x13-10004x2">Number of points to be received;
|
|
</li>
|
|
<li
|
|
class="enumerate" id="x13-10006x3">Indices of points to be received;
|
|
</li>
|
|
<li
|
|
class="enumerate" id="x13-10008x4">Number of points to be sent;
|
|
</li>
|
|
<li
|
|
class="enumerate" id="x13-10010x5">Indices of points to be sent;</li></ol>
|
|
<!--l. 110--><p class="noindent" >Specified as: a vector of integer type, see <a
|
|
href="userhtmlsu7.html#x15-430003.3">3.3<!--tex4ht:ref: sec:vecttype --></a>.
|
|
</dd><dt class="description">
|
|
<span
|
|
class="cmbx-10">ext</span><span
|
|
class="cmbx-10">_index</span> </dt><dd
|
|
class="description">A list of element indices to be exchanged to implement the mapping
|
|
between a base descriptor and a descriptor with overlap. <br
|
|
class="newline" />Specified as: a vector of integer type, see <a
|
|
href="userhtmlsu7.html#x15-430003.3">3.3<!--tex4ht:ref: sec:vecttype --></a>.
|
|
</dd><dt class="description">
|
|
<span
|
|
class="cmbx-10">ovrlap</span><span
|
|
class="cmbx-10">_index</span> </dt><dd
|
|
class="description">A list of the overlap elements for the current process, organized in
|
|
groups like the previous vector:
|
|
<ol class="enumerate1" >
|
|
<li
|
|
class="enumerate" id="x13-10012x1">Process identifier;
|
|
</li>
|
|
<li
|
|
class="enumerate" id="x13-10014x2">Number of points to be received;
|
|
</li>
|
|
<li
|
|
class="enumerate" id="x13-10016x3">Indices of points to be received;
|
|
</li>
|
|
<li
|
|
class="enumerate" id="x13-10018x4">Number of points to be sent;
|
|
</li>
|
|
<li
|
|
class="enumerate" id="x13-10020x5">Indices of points to be sent;</li></ol>
|
|
<!--l. 126--><p class="noindent" >Specified as: a vector of integer type, see <a
|
|
href="userhtmlsu7.html#x15-430003.3">3.3<!--tex4ht:ref: sec:vecttype --></a>.
|
|
</dd><dt class="description">
|
|
<span
|
|
class="cmbx-10">ovr</span><span
|
|
class="cmbx-10">_mst</span><span
|
|
class="cmbx-10">_idx</span> </dt><dd
|
|
class="description">A list to retrieve the value of each overlap element from the respective
|
|
master process.<br
|
|
class="newline" />Specified as: a vector of integer type, see <a
|
|
href="userhtmlsu7.html#x15-430003.3">3.3<!--tex4ht:ref: sec:vecttype --></a>.
|
|
</dd><dt class="description">
|
|
<span
|
|
class="cmbx-10">ovrlap</span><span
|
|
class="cmbx-10">_elem</span> </dt><dd
|
|
class="description">For all overlap points belonging to th ecurrent process:
|
|
<ol class="enumerate1" >
|
|
<li
|
|
class="enumerate" id="x13-10022x1">Overlap point index;
|
|
|
|
|
|
|
|
</li>
|
|
<li
|
|
class="enumerate" id="x13-10024x2">Number of processes sharing that overlap points;
|
|
</li>
|
|
<li
|
|
class="enumerate" id="x13-10026x3">Index of a “master” process:</li></ol>
|
|
<!--l. 137--><p class="noindent" >Specified as: an allocatable integer array of rank two.
|
|
</dd><dt class="description">
|
|
<span
|
|
class="cmbx-10">bnd</span><span
|
|
class="cmbx-10">_elem</span> </dt><dd
|
|
class="description">A list of all boundary points, i.e. points that have a connection with
|
|
other processes.</dd></dl>
|
|
<!--l. 141--><p class="noindent" >The Fortran 2003 declaration for <span class="obeylines-h"><span class="verb"><span
|
|
class="cmtt-10">psb_desc_type</span></span></span> structures is as follows: <hr class="figure"><div class="figure"
|
|
><a
|
|
id="x13-100273"></a>
|
|
<div class="center"
|
|
>
|
|
<!--l. 145--><p class="noindent" >
|
|
<div class="minipage"><div class="verbatim" id="verbatim-1">
|
|
type psb_desc_type
|
|
 <br />    class(psb_indx_map), allocatable :: indxmap
|
|
 <br />    type(psb_i_vect_type) :: v_halo_index
|
|
 <br />    type(psb_i_vect_type) :: v_ext_index
|
|
 <br />    type(psb_i_vect_type) :: v_ovrlap_index
|
|
 <br />    type(psb_i_vect_type) :: v_ovr_mst_idx
|
|
 <br />    integer, allocatable  :: ovrlap_elem(:,:)
|
|
 <br />    integer, allocatable  :: bnd_elem(:)
|
|
 <br />end type psb_desc_type
|
|
</div>
|
|
<!--l. 157--><p class="nopar" ></div></div>
|
|
<br /> <div class="caption"
|
|
><span class="id">Figure 3: </span><span
|
|
class="content">The PSBLAS defined data type that contains the communication
|
|
descriptor.</span></div><!--tex4ht:label?: x13-100273 -->
|
|
<!--l. 167--><p class="indent" > </div><hr class="endfigure">
|
|
<!--l. 168--><p class="indent" > A communication descriptor associated with a sparse matrix has a state, which
|
|
can take the following values:
|
|
<dl class="description"><dt class="description">
|
|
<span
|
|
class="cmbx-10">Build:</span> </dt><dd
|
|
class="description">State entered after the first allocation, and before the first assembly; in
|
|
this state it is possible to add communication requirements among different
|
|
processes.
|
|
</dd><dt class="description">
|
|
<span
|
|
class="cmbx-10">Assembled:</span> </dt><dd
|
|
class="description">State entered after the assembly; computations using the
|
|
associated sparse matrix, such as matrix-vector products, are only possible
|
|
in this state.</dd></dl>
|
|
<!--l. 179--><p class="noindent" >
|
|
<h5 class="subsubsectionHead"><span class="titlemark">3.1.1 </span> <a
|
|
id="x13-110003.1.1"></a>Descriptor Methods</h5>
|
|
|
|
|
|
|
|
<!--l. 181--><p class="noindent" >
|
|
<h5 class="subsubsectionHead"><span class="titlemark">3.1.2 </span> <a
|
|
id="x13-120003.1.2"></a>get_local_rows — Get number of local rows</h5>
|
|
|
|
|
|
|
|
<div class="verbatim" id="verbatim-2">
|
|
nr = desc%get_local_rows()
|
|
</div>
|
|
<!--l. 185--><p class="nopar" >
|
|
<!--l. 187--><p class="indent" >
|
|
<dl class="description"><dt class="description">
|
|
<span
|
|
class="cmbx-10">Type:</span> </dt><dd
|
|
class="description">Asynchronous.
|
|
</dd><dt class="description">
|
|
<span
|
|
class="cmbx-10">On Entry</span> </dt><dd
|
|
class="description">
|
|
</dd><dt class="description">
|
|
<span
|
|
class="cmbx-10">desc</span> </dt><dd
|
|
class="description">the communication descriptor.<br
|
|
class="newline" />Scope: <span
|
|
class="cmbx-10">local</span>.<br
|
|
class="newline" /></dd></dl>
|
|
<!--l. 197--><p class="indent" >
|
|
<dl class="description"><dt class="description">
|
|
<span
|
|
class="cmbx-10">On Return</span> </dt><dd
|
|
class="description">
|
|
</dd><dt class="description">
|
|
<span
|
|
class="cmbx-10">Function value</span> </dt><dd
|
|
class="description">The number of local rows, i.e. the number of rows owned by
|
|
the current process; as explained in <a
|
|
href="userhtmlse1.html#x3-20001">1<!--tex4ht:ref: sec:intro --></a>, it is equal to <span
|
|
class="cmsy-10">|<img
|
|
src="cmsy10-49.png" alt="I" class="10x-x-49" /></span><sub><span
|
|
class="cmmi-7">i</span></sub><span
|
|
class="cmsy-10">|</span>+<span
|
|
class="cmsy-10">|<img
|
|
src="cmsy10-42.png" alt="B" class="10x-x-42" /></span><sub><span
|
|
class="cmmi-7">i</span></sub><span
|
|
class="cmsy-10">|</span>. The returned
|
|
value is specific to the calling process.</dd></dl>
|
|
<!--l. 206--><p class="noindent" >
|
|
<h5 class="subsubsectionHead"><span class="titlemark">3.1.3 </span> <a
|
|
id="x13-130003.1.3"></a>get_local_cols — Get number of local cols</h5>
|
|
|
|
|
|
|
|
<div class="verbatim" id="verbatim-3">
|
|
nc = desc%get_local_cols()
|
|
</div>
|
|
<!--l. 210--><p class="nopar" >
|
|
<!--l. 212--><p class="indent" >
|
|
<dl class="description"><dt class="description">
|
|
<span
|
|
class="cmbx-10">Type:</span> </dt><dd
|
|
class="description">Asynchronous.
|
|
</dd><dt class="description">
|
|
<span
|
|
class="cmbx-10">On Entry</span> </dt><dd
|
|
class="description">
|
|
</dd><dt class="description">
|
|
<span
|
|
class="cmbx-10">desc</span> </dt><dd
|
|
class="description">the communication descriptor.<br
|
|
class="newline" />Scope: <span
|
|
class="cmbx-10">local</span>.<br
|
|
class="newline" /></dd></dl>
|
|
<!--l. 222--><p class="indent" >
|
|
<dl class="description"><dt class="description">
|
|
<span
|
|
class="cmbx-10">On Return</span> </dt><dd
|
|
class="description">
|
|
</dd><dt class="description">
|
|
<span
|
|
class="cmbx-10">Function value</span> </dt><dd
|
|
class="description">The number of local cols, i.e. the number of indices used by
|
|
the current process, including both local and halo indices; as explained
|
|
in <a
|
|
href="userhtmlse1.html#x3-20001">1<!--tex4ht:ref: sec:intro --></a>, it is equal to <span
|
|
class="cmsy-10">|<img
|
|
src="cmsy10-49.png" alt="I" class="10x-x-49" /></span><sub><span
|
|
class="cmmi-7">i</span></sub><span
|
|
class="cmsy-10">| </span>+ <span
|
|
class="cmsy-10">|<img
|
|
src="cmsy10-42.png" alt="B" class="10x-x-42" /></span><sub><span
|
|
class="cmmi-7">i</span></sub><span
|
|
class="cmsy-10">| </span>+ <span
|
|
class="cmsy-10">|<img
|
|
src="cmsy10-48.png" alt="H" class="10x-x-48" /></span><sub><span
|
|
class="cmmi-7">i</span></sub><span
|
|
class="cmsy-10">|</span>. The returned value is specific to the
|
|
calling process.</dd></dl>
|
|
<!--l. 232--><p class="noindent" >
|
|
<h5 class="subsubsectionHead"><span class="titlemark">3.1.4 </span> <a
|
|
id="x13-140003.1.4"></a>get_global_rows — Get number of global rows</h5>
|
|
|
|
|
|
|
|
<div class="verbatim" id="verbatim-4">
|
|
nr = desc%get_global_rows()
|
|
</div>
|
|
<!--l. 236--><p class="nopar" >
|
|
<!--l. 238--><p class="indent" >
|
|
<dl class="description"><dt class="description">
|
|
<span
|
|
class="cmbx-10">Type:</span> </dt><dd
|
|
class="description">Asynchronous.
|
|
</dd><dt class="description">
|
|
<span
|
|
class="cmbx-10">On Entry</span> </dt><dd
|
|
class="description">
|
|
</dd><dt class="description">
|
|
<span
|
|
class="cmbx-10">desc</span> </dt><dd
|
|
class="description">the communication descriptor.<br
|
|
class="newline" />Scope: <span
|
|
class="cmbx-10">local</span>.<br
|
|
class="newline" /></dd></dl>
|
|
<!--l. 248--><p class="indent" >
|
|
<dl class="description"><dt class="description">
|
|
<span
|
|
class="cmbx-10">On Return</span> </dt><dd
|
|
class="description">
|
|
</dd><dt class="description">
|
|
<span
|
|
class="cmbx-10">Function value</span> </dt><dd
|
|
class="description">The number of global rows, i.e. the size of the global index
|
|
space.</dd></dl>
|
|
<!--l. 254--><p class="noindent" >
|
|
<h5 class="subsubsectionHead"><span class="titlemark">3.1.5 </span> <a
|
|
id="x13-150003.1.5"></a>get_global_cols — Get number of global cols</h5>
|
|
|
|
|
|
|
|
<div class="verbatim" id="verbatim-5">
|
|
nr = desc%get_global_cols()
|
|
</div>
|
|
<!--l. 258--><p class="nopar" >
|
|
<!--l. 260--><p class="indent" >
|
|
<dl class="description"><dt class="description">
|
|
<span
|
|
class="cmbx-10">Type:</span> </dt><dd
|
|
class="description">Asynchronous.
|
|
</dd><dt class="description">
|
|
<span
|
|
class="cmbx-10">On Entry</span> </dt><dd
|
|
class="description">
|
|
</dd><dt class="description">
|
|
<span
|
|
class="cmbx-10">desc</span> </dt><dd
|
|
class="description">the communication descriptor.<br
|
|
class="newline" />Scope: <span
|
|
class="cmbx-10">local</span>.<br
|
|
class="newline" /></dd></dl>
|
|
<!--l. 270--><p class="indent" >
|
|
<dl class="description"><dt class="description">
|
|
<span
|
|
class="cmbx-10">On Return</span> </dt><dd
|
|
class="description">
|
|
</dd><dt class="description">
|
|
<span
|
|
class="cmbx-10">Function value</span> </dt><dd
|
|
class="description">The number of global cols; usually this is equal to the number
|
|
of global rows.</dd></dl>
|
|
<!--l. 277--><p class="noindent" >
|
|
<h5 class="subsubsectionHead"><span class="titlemark">3.1.6 </span> <a
|
|
id="x13-160003.1.6"></a>get_global_indices — Get vector of global indices</h5>
|
|
|
|
|
|
|
|
<div class="verbatim" id="verbatim-6">
|
|
myidx = desc%get_global_indices([owned])
|
|
</div>
|
|
<!--l. 281--><p class="nopar" >
|
|
<!--l. 283--><p class="indent" >
|
|
<dl class="description"><dt class="description">
|
|
<span
|
|
class="cmbx-10">Type:</span> </dt><dd
|
|
class="description">Asynchronous.
|
|
</dd><dt class="description">
|
|
<span
|
|
class="cmbx-10">On Entry</span> </dt><dd
|
|
class="description">
|
|
</dd><dt class="description">
|
|
<span
|
|
class="cmbx-10">desc</span> </dt><dd
|
|
class="description">the communication descriptor.<br
|
|
class="newline" />Scope: <span
|
|
class="cmbx-10">local</span>.<br
|
|
class="newline" />Type: <span
|
|
class="cmbx-10">required</span>.<br
|
|
class="newline" />
|
|
</dd><dt class="description">
|
|
<span
|
|
class="cmbx-10">owned</span> </dt><dd
|
|
class="description">Choose if you only want owned indices (<span class="obeylines-h"><span class="verb"><span
|
|
class="cmtt-10">owned=.true.</span></span></span>) or also halo
|
|
indices (<span class="obeylines-h"><span class="verb"><span
|
|
class="cmtt-10">owned=.false.</span></span></span>). Scope: <span
|
|
class="cmbx-10">local</span>.<br
|
|
class="newline" />Type: <span
|
|
class="cmbx-10">optional</span>; default: <span class="obeylines-h"><span class="verb"><span
|
|
class="cmtt-10">.true.</span></span></span>.<br
|
|
class="newline" /></dd></dl>
|
|
<!--l. 297--><p class="indent" >
|
|
<dl class="description"><dt class="description">
|
|
<span
|
|
class="cmbx-10">On Return</span> </dt><dd
|
|
class="description">
|
|
</dd><dt class="description">
|
|
<span
|
|
class="cmbx-10">Function value</span> </dt><dd
|
|
class="description">The global indices, returned as an allocatable integer array of
|
|
rank 1.</dd></dl>
|
|
<!--l. 305--><p class="noindent" >
|
|
<h5 class="subsubsectionHead"><span class="titlemark">3.1.7 </span> <a
|
|
id="x13-170003.1.7"></a>get_context — Get communication context</h5>
|
|
|
|
|
|
|
|
<div class="verbatim" id="verbatim-7">
|
|
ictxt = desc%get_context()
|
|
</div>
|
|
<!--l. 309--><p class="nopar" >
|
|
<!--l. 311--><p class="indent" >
|
|
<dl class="description"><dt class="description">
|
|
<span
|
|
class="cmbx-10">Type:</span> </dt><dd
|
|
class="description">Asynchronous.
|
|
</dd><dt class="description">
|
|
<span
|
|
class="cmbx-10">On Entry</span> </dt><dd
|
|
class="description">
|
|
</dd><dt class="description">
|
|
<span
|
|
class="cmbx-10">desc</span> </dt><dd
|
|
class="description">the communication descriptor.<br
|
|
class="newline" />Scope: <span
|
|
class="cmbx-10">local</span>.<br
|
|
class="newline" /></dd></dl>
|
|
<!--l. 321--><p class="indent" >
|
|
<dl class="description"><dt class="description">
|
|
<span
|
|
class="cmbx-10">On Return</span> </dt><dd
|
|
class="description">
|
|
</dd><dt class="description">
|
|
<span
|
|
class="cmbx-10">Function value</span> </dt><dd
|
|
class="description">The communication context.</dd></dl>
|
|
<!--l. 326--><p class="noindent" >
|
|
<h5 class="subsubsectionHead"><span class="titlemark">3.1.8 </span> <a
|
|
id="x13-180003.1.8"></a>Clone — clone current object</h5>
|
|
|
|
|
|
|
|
<div class="verbatim" id="verbatim-8">
|
|
call  desc%clone(descout,info)
|
|
</div>
|
|
<!--l. 330--><p class="nopar" >
|
|
<!--l. 332--><p class="indent" >
|
|
<dl class="description"><dt class="description">
|
|
<span
|
|
class="cmbx-10">Type:</span> </dt><dd
|
|
class="description">Asynchronous.
|
|
</dd><dt class="description">
|
|
<span
|
|
class="cmbx-10">On Entry</span> </dt><dd
|
|
class="description">
|
|
</dd><dt class="description">
|
|
<span
|
|
class="cmbx-10">desc</span> </dt><dd
|
|
class="description">the communication descriptor.<br
|
|
class="newline" />Scope: <span
|
|
class="cmbx-10">local</span>.<br
|
|
class="newline" /></dd></dl>
|
|
<!--l. 342--><p class="indent" >
|
|
<dl class="description"><dt class="description">
|
|
<span
|
|
class="cmbx-10">On Return</span> </dt><dd
|
|
class="description">
|
|
</dd><dt class="description">
|
|
<span
|
|
class="cmbx-10">descout</span> </dt><dd
|
|
class="description">A copy of the input object.
|
|
</dd><dt class="description">
|
|
<span
|
|
class="cmbx-10">info</span> </dt><dd
|
|
class="description">Return code.</dd></dl>
|
|
<!--l. 349--><p class="noindent" >
|
|
<h5 class="subsubsectionHead"><span class="titlemark">3.1.9 </span> <a
|
|
id="x13-190003.1.9"></a>CNV — convert internal storage format</h5>
|
|
|
|
|
|
|
|
<div class="verbatim" id="verbatim-9">
|
|
call  desc%cnv(mold)
|
|
</div>
|
|
<!--l. 353--><p class="nopar" >
|
|
<!--l. 355--><p class="indent" >
|
|
<dl class="description"><dt class="description">
|
|
<span
|
|
class="cmbx-10">Type:</span> </dt><dd
|
|
class="description">Asynchronous.
|
|
</dd><dt class="description">
|
|
<span
|
|
class="cmbx-10">On Entry</span> </dt><dd
|
|
class="description">
|
|
</dd><dt class="description">
|
|
<span
|
|
class="cmbx-10">desc</span> </dt><dd
|
|
class="description">the communication descriptor.<br
|
|
class="newline" />Scope: <span
|
|
class="cmbx-10">local</span>.<br
|
|
class="newline" />
|
|
</dd><dt class="description">
|
|
<span
|
|
class="cmbx-10">mold</span> </dt><dd
|
|
class="description">the desred integer storage format.<br
|
|
class="newline" />Scope: <span
|
|
class="cmbx-10">local</span>.<br
|
|
class="newline" />Specified as: a object of type derived from (integer)
|
|
<a
|
|
id="vbasedata"><span
|
|
class="cmtt-10">psb</span><span
|
|
class="cmtt-10">_T</span><span
|
|
class="cmtt-10">_base</span><span
|
|
class="cmtt-10">_vect</span><span
|
|
class="cmtt-10">_type</span></a>.</dd></dl>
|
|
<!--l. 366--><p class="noindent" >The <span class="obeylines-h"><span class="verb"><span
|
|
class="cmtt-10">mold</span></span></span> arguments may be employed to interface with special devices, such as GPUs
|
|
and other accelerators.
|
|
<!--l. 373--><p class="noindent" >
|
|
<h5 class="subsubsectionHead"><span class="titlemark">3.1.10 </span> <a
|
|
id="x13-200003.1.10"></a>psb_cd_get_large_threshold — Get threshold for index mapping
|
|
switch</h5>
|
|
|
|
|
|
|
|
<div class="verbatim" id="verbatim-10">
|
|
ith = psb_cd_get_large_threshold()
|
|
</div>
|
|
<!--l. 377--><p class="nopar" >
|
|
<!--l. 379--><p class="indent" >
|
|
<dl class="description"><dt class="description">
|
|
<span
|
|
class="cmbx-10">Type:</span> </dt><dd
|
|
class="description">Asynchronous.
|
|
</dd><dt class="description">
|
|
<span
|
|
class="cmbx-10">On Return</span> </dt><dd
|
|
class="description">
|
|
</dd><dt class="description">
|
|
<span
|
|
class="cmbx-10">Function value</span> </dt><dd
|
|
class="description">The current value for the size threshold.
|
|
</dd></dl>
|
|
<!--l. 389--><p class="noindent" >
|
|
<h5 class="subsubsectionHead"><span class="titlemark">3.1.11 </span> <a
|
|
id="x13-210003.1.11"></a>psb_cd_set_large_threshold — Set threshold for index mapping
|
|
switch</h5>
|
|
|
|
|
|
|
|
<div class="verbatim" id="verbatim-11">
|
|
call psb_cd_set_large_threshold(ith)
|
|
</div>
|
|
<!--l. 393--><p class="nopar" >
|
|
<!--l. 395--><p class="indent" >
|
|
<dl class="description"><dt class="description">
|
|
<span
|
|
class="cmbx-10">Type:</span> </dt><dd
|
|
class="description">Synchronous.
|
|
</dd><dt class="description">
|
|
<span
|
|
class="cmbx-10">On Entry</span> </dt><dd
|
|
class="description">
|
|
</dd><dt class="description">
|
|
<span
|
|
class="cmbx-10">ith</span> </dt><dd
|
|
class="description">the new threshold for communication descriptors.<br
|
|
class="newline" />Scope: <span
|
|
class="cmbx-10">global</span>.<br
|
|
class="newline" />Type: <span
|
|
class="cmbx-10">required</span>.<br
|
|
class="newline" />Intent: <span
|
|
class="cmbx-10">in</span>.<br
|
|
class="newline" />Specified as: an integer value greater than zero.</dd></dl>
|
|
<!--l. 404--><p class="noindent" >Note: the threshold value is only queried by the library at the time a call to <span class="obeylines-h"><span class="verb"><span
|
|
class="cmtt-10">psb_cdall</span></span></span>
|
|
is executed, therefore changing the threshold has no effect on communication
|
|
descriptors that have already been initialized. Moreover the threshold must have the
|
|
same value on all processes.
|
|
<!--l. 410--><p class="noindent" >
|
|
<h5 class="subsubsectionHead"><span class="titlemark">3.1.12 </span> <a
|
|
id="x13-220003.1.12"></a>Named Constants</h5>
|
|
<!--l. 412--><p class="noindent" >
|
|
<dl class="description"><dt class="description">
|
|
<span
|
|
class="cmbx-10">psb</span><span
|
|
class="cmbx-10">_none</span><span
|
|
class="cmbx-10">_</span> </dt><dd
|
|
class="description">Generic no-op;
|
|
</dd><dt class="description">
|
|
<span
|
|
class="cmbx-10">psb</span><span
|
|
class="cmbx-10">_root</span><span
|
|
class="cmbx-10">_</span> </dt><dd
|
|
class="description">Default root process for broadcast and scatter operations;
|
|
</dd><dt class="description">
|
|
<span
|
|
class="cmbx-10">psb</span><span
|
|
class="cmbx-10">_nohalo</span><span
|
|
class="cmbx-10">_</span> </dt><dd
|
|
class="description">Do not fetch halo elements;
|
|
</dd><dt class="description">
|
|
<span
|
|
class="cmbx-10">psb</span><span
|
|
class="cmbx-10">_halo</span><span
|
|
class="cmbx-10">_</span> </dt><dd
|
|
class="description">Fetch halo elements from neighbouring processes;
|
|
</dd><dt class="description">
|
|
<span
|
|
class="cmbx-10">psb</span><span
|
|
class="cmbx-10">_sum</span><span
|
|
class="cmbx-10">_</span> </dt><dd
|
|
class="description">Sum overlapped elements
|
|
</dd><dt class="description">
|
|
<span
|
|
class="cmbx-10">psb</span><span
|
|
class="cmbx-10">_avg</span><span
|
|
class="cmbx-10">_</span> </dt><dd
|
|
class="description">Average overlapped elements
|
|
</dd><dt class="description">
|
|
<span
|
|
class="cmbx-10">psb</span><span
|
|
class="cmbx-10">_comm</span><span
|
|
class="cmbx-10">_halo</span><span
|
|
class="cmbx-10">_</span> </dt><dd
|
|
class="description">Exchange data based on the <span class="obeylines-h"><span class="verb"><span
|
|
class="cmtt-10">halo_index</span></span></span> list;
|
|
</dd><dt class="description">
|
|
<span
|
|
class="cmbx-10">psb</span><span
|
|
class="cmbx-10">_comm</span><span
|
|
class="cmbx-10">_ext</span><span
|
|
class="cmbx-10">_</span> </dt><dd
|
|
class="description">Exchange data based on the <span class="obeylines-h"><span class="verb"><span
|
|
class="cmtt-10">ext_index</span></span></span> list;
|
|
|
|
|
|
|
|
</dd><dt class="description">
|
|
<span
|
|
class="cmbx-10">psb</span><span
|
|
class="cmbx-10">_comm</span><span
|
|
class="cmbx-10">_ovr</span><span
|
|
class="cmbx-10">_</span> </dt><dd
|
|
class="description">Exchange data based on the <span class="obeylines-h"><span class="verb"><span
|
|
class="cmtt-10">ovrlap_index</span></span></span> list;
|
|
</dd><dt class="description">
|
|
<span
|
|
class="cmbx-10">psb</span><span
|
|
class="cmbx-10">_comm</span><span
|
|
class="cmbx-10">_mov</span><span
|
|
class="cmbx-10">_</span> </dt><dd
|
|
class="description">Exchange data based on the <span class="obeylines-h"><span class="verb"><span
|
|
class="cmtt-10">ovr_mst_idx</span></span></span> list;
|
|
</dd></dl>
|
|
|
|
|
|
|
|
<!--l. 445--><div class="crosslinks"><p class="noindent">[<a
|
|
href="userhtmlsu9.html" >next</a>] [<a
|
|
href="userhtmlsu5.html" >front</a>] [<a
|
|
href="userhtmlsu7.html#userhtmlsu8.html" >up</a>] </p></div>
|
|
<!--l. 445--><p class="indent" > <a
|
|
id="tailuserhtmlsu5.html"></a>
|
|
</body></html>
|