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.
psblas3/docs/html/node3.html

209 lines
7.7 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<!--Converted with LaTeX2HTML 2002-2-1 (1.71)
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 v2002-2-1">
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
<LINK REL="STYLESHEET" HREF="userhtml.css">
<LINK REL="next" HREF="node8.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="tex2html191"
HREF="node4.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
SRC="file:/usr/share/latex2html/icons/next.png"></A>
<A NAME="tex2html187"
HREF="userhtml.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
SRC="file:/usr/share/latex2html/icons/up.png"></A>
<A NAME="tex2html181"
HREF="node2.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
SRC="file:/usr/share/latex2html/icons/prev.png"></A>
<A NAME="tex2html189"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
SRC="file:/usr/share/latex2html/icons/contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html192"
HREF="node4.html">Basic Nomenclature</A>
<B> Up:</B> <A NAME="tex2html188"
HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html182"
HREF="node2.html">Introduction</A>
&nbsp; <B> <A NAME="tex2html190"
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&nbsp;<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&nbsp;95 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 implemented through the Basic
Linear Algebra Communication Subroutines (BLACS) library&nbsp;[<A
HREF="node105.html#BLACS">6</A>]
that guarantees a portable and efficient communication layer. The
Message Passing Interface code is encapsulated within the BLACS
layer. However, in some cases, MPI routines are directly used either
to improve efficiency or to implement communication patterns for which
the BLACS package doesn't provide any method.
<P>
In any case we provide wrappers around the BLACS routines so that the
user does not need to delve into their details (see Sec.&nbsp;<A HREF="node70.html#sec:parenv">7</A>).
<P>
<DIV ALIGN="CENTER"><A NAME="fig:psblas"></A><A NAME="224"></A>
<TABLE>
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 1:</STRONG>
PSBLAS library components hierarchy.</CAPTION>
<TR><TD>
<DIV ALIGN="CENTER">
<IMG
WIDTH="204" HEIGHT="294" ALIGN="BOTTOM" BORDER="0"
SRC="img3.png"
ALT="\includegraphics[scale=0.65]{figures/psblas.eps}">
<!-- MATH
$\rotatebox{-90}{\includegraphics[scale=0.65]{figures/psblas}}$
-->
<IMG
WIDTH="37" HEIGHT="2" ALIGN="BOTTOM" BORDER="0"
SRC="img2.png"
ALT="\rotatebox{-90}{\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 data distributions commonly used in
ScaLAPACK 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&nbsp;[<A
HREF="node105.html#METIS">11</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#foot165"><SUP>1</SUP></A>, even though the resulting
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="tex2html193"
HREF="node4.html">Basic Nomenclature</A>
<LI><A NAME="tex2html194"
HREF="node5.html">Library contents</A>
<LI><A NAME="tex2html195"
HREF="node6.html">Application structure</A>
<LI><A NAME="tex2html196"
HREF="node7.html">Programming model</A>
</UL>
<!--End of Table of Child-Links-->
<HR>
<!--Navigation Panel-->
<A NAME="tex2html191"
HREF="node4.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
SRC="file:/usr/share/latex2html/icons/next.png"></A>
<A NAME="tex2html187"
HREF="userhtml.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
SRC="file:/usr/share/latex2html/icons/up.png"></A>
<A NAME="tex2html181"
HREF="node2.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
SRC="file:/usr/share/latex2html/icons/prev.png"></A>
<A NAME="tex2html189"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
SRC="file:/usr/share/latex2html/icons/contents.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html192"
HREF="node4.html">Basic Nomenclature</A>
<B> Up:</B> <A NAME="tex2html188"
HREF="userhtml.html">userhtml</A>
<B> Previous:</B> <A NAME="tex2html182"
HREF="node2.html">Introduction</A>
&nbsp; <B> <A NAME="tex2html190"
HREF="node1.html">Contents</A></B>
<!--End of Navigation Panel-->
</BODY>
</HTML>