mirror of
https://github.com/sfilippone/psblas3.git
synced 2026-10-07 07:04:57 +00:00
docs/html/footnode.html docs/html/img101.png docs/html/img103.png docs/html/img104.png docs/html/img108.png docs/html/img112.png docs/html/img129.png docs/html/img13.png docs/html/img133.png docs/html/img136.png docs/html/img138.png docs/html/img140.png docs/html/img145.png docs/html/img147.png docs/html/img148.png docs/html/img149.png docs/html/img15.png docs/html/img150.png docs/html/img151.png docs/html/img152.png docs/html/img153.png docs/html/img156.png docs/html/img157.png docs/html/img158.png docs/html/img159.png docs/html/img16.png docs/html/img160.png docs/html/img161.png docs/html/img162.png docs/html/img163.png docs/html/img164.png docs/html/img165.png docs/html/img166.png docs/html/img20.png docs/html/img22.png docs/html/img25.png docs/html/img26.png docs/html/img28.png docs/html/img31.png docs/html/img32.png docs/html/img35.png docs/html/img37.png docs/html/img40.png docs/html/img41.png docs/html/img42.png docs/html/img43.png docs/html/img45.png docs/html/img49.png docs/html/img53.png docs/html/img56.png docs/html/img58.png docs/html/img63.png docs/html/img68.png docs/html/img73.png docs/html/img75.png docs/html/img79.png docs/html/img8.png docs/html/img80.png docs/html/img81.png docs/html/img86.png docs/html/img89.png 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/node121.html docs/html/node122.html docs/html/node123.html docs/html/node124.html docs/html/node125.html docs/html/node126.html docs/html/node127.html docs/html/node128.html docs/html/node129.html docs/html/node13.html docs/html/node130.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.5.pdf docs/src/Makefile docs/src/precs.tex prec/psb_c_base_prec_mod.f90 prec/psb_c_bjacprec.f90 prec/psb_c_diagprec.f90 prec/psb_c_nullprec.f90 prec/psb_c_prec_type.f90 prec/psb_d_base_prec_mod.f90 prec/psb_d_bjacprec.f90 prec/psb_d_diagprec.f90 prec/psb_d_nullprec.f90 prec/psb_d_prec_type.f90 prec/psb_s_base_prec_mod.f90 prec/psb_s_bjacprec.f90 prec/psb_s_diagprec.f90 prec/psb_s_nullprec.f90 prec/psb_s_prec_type.f90 prec/psb_z_base_prec_mod.f90 prec/psb_z_bjacprec.f90 prec/psb_z_diagprec.f90 prec/psb_z_nullprec.f90 prec/psb_z_prec_type.f90 Cosmetic changes to prec%descr Fix docs.
197 lines
7.2 KiB
HTML
197 lines
7.2 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
|
|
|
|
<!--Converted with LaTeX2HTML 2012 (1.2)
|
|
original version by: Nikos Drakos, CBLU, University of Leeds
|
|
* revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan
|
|
* with significant contributions from:
|
|
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
|
|
<HTML>
|
|
<HEAD>
|
|
<TITLE>General overview</TITLE>
|
|
<META NAME="description" CONTENT="General overview">
|
|
<META NAME="keywords" CONTENT="userhtml">
|
|
<META NAME="resource-type" CONTENT="document">
|
|
<META NAME="distribution" CONTENT="global">
|
|
|
|
<META NAME="Generator" CONTENT="LaTeX2HTML v2012">
|
|
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
|
|
|
|
<LINK REL="STYLESHEET" HREF="userhtml.css">
|
|
|
|
<LINK REL="next" HREF="node9.html">
|
|
<LINK REL="previous" HREF="node2.html">
|
|
<LINK REL="up" HREF="userhtml.html">
|
|
<LINK REL="next" HREF="node4.html">
|
|
</HEAD>
|
|
|
|
<BODY >
|
|
<!--Navigation Panel-->
|
|
<A NAME="tex2html222"
|
|
HREF="node4.html">
|
|
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
|
<A NAME="tex2html218"
|
|
HREF="userhtml.html">
|
|
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
|
<A NAME="tex2html212"
|
|
HREF="node2.html">
|
|
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
|
<A NAME="tex2html220"
|
|
HREF="node1.html">
|
|
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
|
<BR>
|
|
<B> Next:</B> <A NAME="tex2html223"
|
|
HREF="node4.html">Basic Nomenclature</A>
|
|
<B> Up:</B> <A NAME="tex2html219"
|
|
HREF="userhtml.html">userhtml</A>
|
|
<B> Previous:</B> <A NAME="tex2html213"
|
|
HREF="node2.html">Introduction</A>
|
|
<B> <A NAME="tex2html221"
|
|
HREF="node1.html">Contents</A></B>
|
|
<BR>
|
|
<BR>
|
|
<!--End of Navigation Panel-->
|
|
|
|
<H1><A NAME="SECTION00030000000000000000"></A>
|
|
<A NAME="sec:overview"></A>
|
|
<BR>
|
|
General overview
|
|
</H1>
|
|
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 <IMG
|
|
WIDTH="16" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
|
|
SRC="img1.png"
|
|
ALT="$A$"> must be square;
|
|
it may be real or complex, nonsymmetric, and its sparsity pattern
|
|
needs not to be symmetric. The serial computation parts are based on
|
|
the serial sparse BLAS, so that any extension made to the data
|
|
structures of the serial kernels is available to the parallel
|
|
version. The overall design and parallelization strategy have been
|
|
influenced by the structure of the ScaLAPACK parallel
|
|
library. The layered structure of the PSBLAS library
|
|
is shown in figure <A HREF="#fig:psblas">1</A>; lower layers of the library
|
|
indicate an encapsulation relationship with upper layers. The ongoing
|
|
discussion focuses on the Fortran 2003 layer immediately below the
|
|
application layer.
|
|
The serial parts of the computation on each process are executed through
|
|
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 [<A
|
|
HREF="node132.html#BLACS">7</A>].
|
|
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. <A HREF="node98.html#sec:parenv">7</A>.
|
|
<P>
|
|
|
|
<DIV ALIGN="CENTER"><A NAME="fig:psblas"></A><A NAME="270"></A>
|
|
<TABLE>
|
|
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 1:</STRONG>
|
|
PSBLAS library components hierarchy.</CAPTION>
|
|
<TR><TD>
|
|
<DIV ALIGN="CENTER">
|
|
<IMG
|
|
WIDTH="195" HEIGHT="223" ALIGN="BOTTOM" BORDER="0"
|
|
SRC="img2.png"
|
|
ALT="\includegraphics[scale=0.65]{figures/psblas.eps}">
|
|
|
|
<IMG
|
|
WIDTH="195" HEIGHT="223" ALIGN="BOTTOM" BORDER="0"
|
|
SRC="img3.png"
|
|
ALT="\includegraphics[scale=0.65]{figures/psblas}">
|
|
|
|
</DIV></TD></TR>
|
|
</TABLE>
|
|
</DIV>
|
|
|
|
<P>
|
|
The type of linear system matrices that we address typically arise in the
|
|
numerical solution of PDEs; in such a context,
|
|
it is necessary to pay special attention to the
|
|
structure of the problem from which the application originates.
|
|
The nonzero pattern of a matrix arising from the
|
|
discretization of a PDE is influenced by various factors, such as the
|
|
shape of the domain, the discretization strategy, and
|
|
the equation/unknown ordering. The matrix itself can be interpreted as
|
|
the adjacency matrix of the graph associated with the discretization
|
|
mesh.
|
|
|
|
<P>
|
|
The distribution of the coefficient matrix for the linear system is
|
|
based on the ``owner computes'' rule:
|
|
the variable associated to each mesh point is assigned to a process
|
|
that will own the corresponding row in the coefficient matrix and
|
|
will carry out all related computations. This allocation strategy
|
|
is equivalent to a partition of the discretization mesh into <EM>sub-domains</EM>.
|
|
Our library supports any distribution that keeps together
|
|
the coefficients of each matrix row; there are no other constraints on
|
|
the variable assignment.
|
|
This choice is consistent with simple data distributions such as <code>CYCLIC(N)</code> and <code>BLOCK</code>,
|
|
as well as completely arbitrary assignments of
|
|
equation indices to processes.
|
|
In particular it is consistent with the
|
|
usage of graph partitioning tools commonly available in the
|
|
literature, e.g. METIS [<A
|
|
HREF="node132.html#METIS">14</A>].
|
|
Dense vectors conform to sparse
|
|
matrices, that is, the entries of a vector follow the same distribution
|
|
of the matrix rows.
|
|
|
|
<P>
|
|
We assume that the sparse matrix is built in parallel, where each
|
|
process generates its own portion. We never require that the entire
|
|
matrix be available on a single node. However, it is possible
|
|
to hold the entire matrix in one process and distribute it
|
|
explicitly<A NAME="tex2html2"
|
|
HREF="footnode.html#foot201"><SUP>1</SUP></A>, even though the resulting memory
|
|
bottleneck would make this option unattractive in most cases.
|
|
|
|
<P>
|
|
<BR><HR>
|
|
<!--Table of Child-Links-->
|
|
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
|
|
|
|
<UL>
|
|
<LI><A NAME="tex2html224"
|
|
HREF="node4.html">Basic Nomenclature</A>
|
|
<LI><A NAME="tex2html225"
|
|
HREF="node5.html">Library contents</A>
|
|
<LI><A NAME="tex2html226"
|
|
HREF="node6.html">Application structure</A>
|
|
<UL>
|
|
<LI><A NAME="tex2html227"
|
|
HREF="node7.html">User-defined index mappings</A>
|
|
</UL>
|
|
<BR>
|
|
<LI><A NAME="tex2html228"
|
|
HREF="node8.html">Programming model</A>
|
|
</UL>
|
|
<!--End of Table of Child-Links-->
|
|
<HR>
|
|
<!--Navigation Panel-->
|
|
<A NAME="tex2html222"
|
|
HREF="node4.html">
|
|
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
|
|
<A NAME="tex2html218"
|
|
HREF="userhtml.html">
|
|
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
|
|
<A NAME="tex2html212"
|
|
HREF="node2.html">
|
|
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
|
|
<A NAME="tex2html220"
|
|
HREF="node1.html">
|
|
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
|
|
<BR>
|
|
<B> Next:</B> <A NAME="tex2html223"
|
|
HREF="node4.html">Basic Nomenclature</A>
|
|
<B> Up:</B> <A NAME="tex2html219"
|
|
HREF="userhtml.html">userhtml</A>
|
|
<B> Previous:</B> <A NAME="tex2html213"
|
|
HREF="node2.html">Introduction</A>
|
|
<B> <A NAME="tex2html221"
|
|
HREF="node1.html">Contents</A></B>
|
|
<!--End of Navigation Panel-->
|
|
|
|
</BODY>
|
|
</HTML>
|