base/internals/psi_idx_ins_cnv.f90
 base/modules/psb_base_tools_mod.f90
 base/modules/psb_gen_block_map_mod.f90
 base/modules/psb_hash_map_mod.f90
 base/modules/psb_indx_map_mod.f90
 base/modules/psb_list_map_mod.f90
 base/modules/psb_repl_map_mod.f90
 base/modules/psi_i_mod.f90
 base/tools/psb_cdins.f90
 docs/html/footnode.html
 docs/html/index.html
 docs/html/node1.html
 docs/html/node10.html
 docs/html/node100.html
 docs/html/node101.html
 docs/html/node102.html
 docs/html/node103.html
 docs/html/node104.html
 docs/html/node105.html
 docs/html/node106.html
 docs/html/node107.html
 docs/html/node108.html
 docs/html/node109.html
 docs/html/node11.html
 docs/html/node110.html
 docs/html/node111.html
 docs/html/node112.html
 docs/html/node113.html
 docs/html/node114.html
 docs/html/node115.html
 docs/html/node116.html
 docs/html/node117.html
 docs/html/node118.html
 docs/html/node119.html
 docs/html/node12.html
 docs/html/node120.html
 docs/html/node13.html
 docs/html/node14.html
 docs/html/node15.html
 docs/html/node16.html
 docs/html/node17.html
 docs/html/node18.html
 docs/html/node19.html
 docs/html/node2.html
 docs/html/node20.html
 docs/html/node21.html
 docs/html/node22.html
 docs/html/node23.html
 docs/html/node24.html
 docs/html/node25.html
 docs/html/node26.html
 docs/html/node27.html
 docs/html/node28.html
 docs/html/node29.html
 docs/html/node3.html
 docs/html/node30.html
 docs/html/node31.html
 docs/html/node32.html
 docs/html/node33.html
 docs/html/node34.html
 docs/html/node35.html
 docs/html/node36.html
 docs/html/node37.html
 docs/html/node38.html
 docs/html/node39.html
 docs/html/node4.html
 docs/html/node40.html
 docs/html/node41.html
 docs/html/node42.html
 docs/html/node43.html
 docs/html/node44.html
 docs/html/node45.html
 docs/html/node46.html
 docs/html/node47.html
 docs/html/node48.html
 docs/html/node49.html
 docs/html/node5.html
 docs/html/node50.html
 docs/html/node51.html
 docs/html/node52.html
 docs/html/node53.html
 docs/html/node54.html
 docs/html/node55.html
 docs/html/node56.html
 docs/html/node57.html
 docs/html/node58.html
 docs/html/node59.html
 docs/html/node6.html
 docs/html/node60.html
 docs/html/node61.html
 docs/html/node62.html
 docs/html/node63.html
 docs/html/node64.html
 docs/html/node65.html
 docs/html/node66.html
 docs/html/node67.html
 docs/html/node68.html
 docs/html/node69.html
 docs/html/node7.html
 docs/html/node70.html
 docs/html/node71.html
 docs/html/node72.html
 docs/html/node73.html
 docs/html/node74.html
 docs/html/node75.html
 docs/html/node76.html
 docs/html/node77.html
 docs/html/node78.html
 docs/html/node79.html
 docs/html/node8.html
 docs/html/node80.html
 docs/html/node81.html
 docs/html/node82.html
 docs/html/node83.html
 docs/html/node84.html
 docs/html/node85.html
 docs/html/node86.html
 docs/html/node87.html
 docs/html/node88.html
 docs/html/node89.html
 docs/html/node9.html
 docs/html/node90.html
 docs/html/node91.html
 docs/html/node92.html
 docs/html/node93.html
 docs/html/node94.html
 docs/html/node95.html
 docs/html/node96.html
 docs/html/node97.html
 docs/html/node98.html
 docs/html/node99.html
 docs/html/userhtml.html
 docs/psblas-3.0.pdf
 docs/src/intro.tex

New docs for LIDX. New LIDX parm in idx_cnv_ins.
This commit is contained in:
Salvatore Filippone
2012-04-17 16:49:25 +00:00
parent 4accecb0c9
commit fe85dcc848
134 changed files with 15319 additions and 14743 deletions
+66 -78
View File
@@ -7,8 +7,8 @@ original version by: Nikos Drakos, CBLU, University of Leeds
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>Programming model</TITLE>
<META NAME="description" CONTENT="Programming model">
<TITLE>User-defined index mappings</TITLE>
<META NAME="description" CONTENT="User-defined index mappings">
<META NAME="keywords" CONTENT="userhtml">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
@@ -19,105 +19,93 @@ original version by: Nikos Drakos, CBLU, University of Leeds
<LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="previous" HREF="node6.html">
<LINK REL="up" HREF="node3.html">
<LINK REL="up" HREF="node6.html">
<LINK REL="next" HREF="node8.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html256"
<A NAME="tex2html259"
HREF="node8.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html252"
HREF="node3.html">
<A NAME="tex2html255"
HREF="node6.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html248"
<A NAME="tex2html251"
HREF="node6.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html254"
<A NAME="tex2html257"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html257"
HREF="node8.html">Data Structures and Classes</A>
<B> Up:</B> <A NAME="tex2html253"
HREF="node3.html">General overview</A>
<B> Previous:</B> <A NAME="tex2html249"
<B> Next:</B> <A NAME="tex2html260"
HREF="node8.html">Programming model</A>
<B> Up:</B> <A NAME="tex2html256"
HREF="node6.html">Application structure</A>
&nbsp; <B> <A NAME="tex2html255"
<B> Previous:</B> <A NAME="tex2html252"
HREF="node6.html">Application structure</A>
&nbsp; <B> <A NAME="tex2html258"
HREF="node1.html">Contents</A></B>
<BR>
<BR>
<!--End of Navigation Panel-->
<H2><A NAME="SECTION00034000000000000000">
Programming model</A>
</H2>
<H3><A NAME="SECTION00033100000000000000">
User-defined index mappings</A>
</H3>
<P>
The PSBLAS librarary is based on the Single Program Multiple Data
(SPMD) programming model: each process participating in the
computation performs the same actions on a chunk of data. Parallelism
is thus data-driven.
PSBLAS supports user-defined global to local index mappings, subject
to the constraints outlined in sec.&nbsp;<A HREF="node6.html#sec:appstruct">2.3</A>:
<OL>
<LI>The set of indices owned locally must be mapped to the set
<!-- MATH
$1\dots n_{\hbox{row}_i}$
-->
<IMG
WIDTH="77" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img17.png"
ALT="$1\dots n_{\hbox{row}_i}$">;
</LI>
<LI>The set of halo points must be mapped to the set
<!-- MATH
$n_{\hbox{row}_i}+1\dots n_{\hbox{col}_i}$
-->
<IMG
WIDTH="130" HEIGHT="30" ALIGN="MIDDLE" BORDER="0"
SRC="img18.png"
ALT="$n_{\hbox{row}_i}+1\dots n_{\hbox{col}_i}$">;
</LI>
</OL>
but otherwise the mapping is arbitrary. The user application is
responsible to ensure consistency of this mapping; some errors may be
catched by the library, but this is not guaranteed.
The application structure to
support this usage is as follows:
<OL>
<LI>Initialize index space with
<code>psb_cdall(ictx,desc,info,vl=vl,lidx=lidx)</code> passing the vectors
<code>vl(:)</code> containing the set of global indices owned by the
current process and <code>lidx(:)</code> containing the corresponding
local indices;
</LI>
<LI>Add the halo points <code>ja(:)</code> and their associated local
indices <code>lidx(:)</code> with a(some) call(s) to
<code>psb_cdins(nz,ja,desc,info,lidx=lidx)</code>;
</LI>
<LI>Assemble the descriptor with <code>psb_cdasb</code>;
</LI>
<LI>Build the sparse matrices and vectors, optionally making use in
<code>psb_spins</code> and <code>psb_geins</code> of the <code>local</code> argument
specifying that the indices in <code>ia</code>, <code>ja</code> and <code>irw</code>,
respectively, are already local indices.
</LI>
</OL>
<P>
Because of this structure, many subroutines coordinate their action
across the various processes, thus providing an implicit
synchronization point, and therefore <I>must</I> be
called simultaneously by all processes participating in the
computation. This is certainly true for the data allocation and
assembly routines, for all the computational routines and for some of
the tools routines.
<P>
However there are many cases where no synchronization, and indeed no
communication among processes, is implied; for instance, all the routines in
sec.&nbsp;<A HREF="#sec:dataquery"><IMG ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A> are only acting on the local data structures,
and thus may be called independently. The most important case is that
of the coefficient insertion routines: since the number of
coefficients in the sparse and dense matrices varies among the
processors, and since the user is free to choose an arbitrary order in
builiding the matrix entries, these routines cannot imply a
synchronization.
<P>
Throughout this user's guide each subroutine will be clearly indicated
as:
<DL>
<DT><STRONG>Synchronous:</STRONG></DT>
<DD>must be called simultaneously by all the
processes in the relevant communication context;
</DD>
<DT><STRONG>Asynchronous:</STRONG></DT>
<DD>may be called in a totally independent manner.
</DD>
</DL>
<P>
<HR>
<!--Navigation Panel-->
<A NAME="tex2html256"
HREF="node8.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
<A NAME="tex2html252"
HREF="node3.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
<A NAME="tex2html248"
HREF="node6.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
<A NAME="tex2html254"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html257"
HREF="node8.html">Data Structures and Classes</A>
<B> Up:</B> <A NAME="tex2html253"
HREF="node3.html">General overview</A>
<B> Previous:</B> <A NAME="tex2html249"
HREF="node6.html">Application structure</A>
&nbsp; <B> <A NAME="tex2html255"
HREF="node1.html">Contents</A></B>
<!--End of Navigation Panel-->
<BR><HR>
</BODY>
</HTML>