Documentation changes. We have barely begun.....
This commit is contained in:
Salvatore Filippone
2011-12-16 16:45:25 +00:00
parent c730f15b58
commit 844a942947
243 changed files with 14860 additions and 15182 deletions
+86 -58
View File
@@ -26,26 +26,26 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html288"
<A NAME="tex2html285"
HREF="node10.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html284"
<A NAME="tex2html281"
HREF="node8.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html278"
<A NAME="tex2html275"
HREF="node8.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html286"
<A NAME="tex2html283"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html289"
<B> Next:</B> <A NAME="tex2html286"
HREF="node10.html">Named Constants</A>
<B> Up:</B> <A NAME="tex2html285"
<B> Up:</B> <A NAME="tex2html282"
HREF="node8.html">Data Structures</A>
<B> Previous:</B> <A NAME="tex2html279"
<B> Previous:</B> <A NAME="tex2html276"
HREF="node8.html">Data Structures</A>
&nbsp; <B> <A NAME="tex2html287"
&nbsp; <B> <A NAME="tex2html284"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
@@ -59,25 +59,73 @@ Descriptor data structure
All the general matrix informations and elements to be
exchanged among processes are stored within a data structure of the
type descdata<TT>psb_desc_type</TT>.
Every structure of this type is associated to a sparse matrix, it
contains data about general matrix informations and elements to be
exchanged among processes.
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.
<P>
It is not necessary for the user to know the internal structure of
<code>psb_desc_type</code>, it is set in a transparent mode by the tools
routines of Sec.&nbsp;<A HREF="node45.html#sec:toolsrout">6</A>, and its fields may be accessed
if necessary via the routines of sec.&nbsp;<A HREF="node16.html#sec:dataquery">3.5</A>;
nevertheless we include a description for the curious
reader:
The data structure itself <code>psb_desc_type</code> can be treated as an
opaque object handled via the tools routines of
Sec.&nbsp;<A HREF="node44.html#sec:toolsrout">6</A> and&nbsp;<A HREF="node15.html#sec:dataquery">3.5</A>;
nevertheless we include here a description for the curious
reader.
<P>
First we describe the <code>psb_indx_map</code> type. This is a data
structure that keeps track of a certain number of basic issues such
as:
<UL>
<LI>The value of the communication/MPI context;
</LI>
<LI>The number of indices in the index space, i.e. global number of
rows and columns of a sparse matrix;
</LI>
<LI>The local set of indices, including:
<UL>
<LI>The number of local indices (and local rows);
</LI>
<LI>The number of halo indices (and therefore local columns);
</LI>
<LI>The global indices corresponding to the local ones.
</LI>
</UL>
</LI>
</UL>
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>
<LI>For a given set of local indices, find the corresponding indices
in the global numbering;
</LI>
<LI>For a given set of global indices, find the corresponding
indices in the local numbering, if any, or return an invalid
</LI>
<LI>Add a global index to the set of halo indices;
</LI>
<LI>Find the process owner of each member of a set of global
indices.
</LI>
</UL>
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&nbsp;<A HREF="node44.html#sec:toolsrout">6</A>).
<P>
The descriptor contents are as follows:
<DL>
<DT><STRONG><B>matrix_data</B></STRONG></DT>
<DD>includes general information about matrix and
process grid, such as the communication context, the size of the
global matrix, the size of the portion of matrix stored on the current
process, and so on.
Specified as: an allocatable integer array of dimension <code>psb_mdata_size_</code>.
</DD>
<DT><STRONG><B>indxmap</B></STRONG></DT>
<DD>A polymorphic variable of a type that is any
extension of the indx_map type described above.
<BR></DD>
<DT><STRONG><B>halo_index</B></STRONG></DT>
<DD>A list of the halo and boundary elements for
the current process to be exchanged with other processes; for each
@@ -146,27 +194,15 @@ ecurrent process:
</OL>
Specified as: an allocatable integer array of rank two.
</DD>
<DT><STRONG><B>loc_to_glob</B></STRONG></DT>
<DD>each element <IMG
WIDTH="9" HEIGHT="17" ALIGN="BOTTOM" BORDER="0"
SRC="img4.png"
ALT="$i$"> of this array contains
global identifier of the local variable <IMG
WIDTH="9" HEIGHT="17" ALIGN="BOTTOM" BORDER="0"
SRC="img4.png"
ALT="$i$">.
<BR>
Specified as: an allocatable integer array of rank one.
</DD>
<DT><STRONG><B>glob_to_loc, glb_lc, hashv</B></STRONG></DT>
<DD>Contain a mapping from
global to local indices.
<DT><STRONG><B>bnd_elem</B></STRONG></DT>
<DD>A list of all boundary points, i.e. points
that have a connection with other processes.
</DD>
</DL>
The Fortran&nbsp;95 definition for <code>psb_desc_type</code> structures is
The Fortran&nbsp;2003 declaration for <code>psb_desc_type</code> structures is
as follows:
<DIV ALIGN="CENTER"><A NAME="fig:desctype"></A><A NAME="674"></A>
<DIV ALIGN="CENTER"><A NAME="fig:desctype"></A><A NAME="637"></A>
<TABLE>
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 3:</STRONG>
The PSBLAS defined data type that
@@ -201,14 +237,6 @@ state, which can take the following values:
only possible in this state.
</DD>
</DL>
The global to local index mapping may be stored in two different
formats: the first is simpler but more expensive, as it requires on
each process an amount of memory proportional to the global size of
the index space; the second is more complex, but only requires memory
proportional to the local index space size. The choice is made at the
time of the initialization according to a threshold; this threshold
may be queried and set using the functions in
sec.&nbsp;<A HREF="node16.html#sec:dataquery">3.5</A>.
<P>
<BR><HR>
@@ -216,32 +244,32 @@ sec.&nbsp;<A HREF="node16.html#sec:dataquery">3.5</A>.
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
<UL>
<LI><A NAME="tex2html290"
<LI><A NAME="tex2html287"
HREF="node10.html">Named Constants</A>
</UL>
<!--End of Table of Child-Links-->
<HR>
<!--Navigation Panel-->
<A NAME="tex2html288"
<A NAME="tex2html285"
HREF="node10.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html284"
<A NAME="tex2html281"
HREF="node8.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html278"
<A NAME="tex2html275"
HREF="node8.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html286"
<A NAME="tex2html283"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html289"
<B> Next:</B> <A NAME="tex2html286"
HREF="node10.html">Named Constants</A>
<B> Up:</B> <A NAME="tex2html285"
<B> Up:</B> <A NAME="tex2html282"
HREF="node8.html">Data Structures</A>
<B> Previous:</B> <A NAME="tex2html279"
<B> Previous:</B> <A NAME="tex2html276"
HREF="node8.html">Data Structures</A>
&nbsp; <B> <A NAME="tex2html287"
&nbsp; <B> <A NAME="tex2html284"
HREF="node1.html">Contents</A></B>
<!--End of Navigation Panel-->