1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121
|
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<!--Converted with LaTeX2HTML 96.1-h (September 30, 1996) by Nikos Drakos (nikos@cbl.leeds.ac.uk), CBLU, University of Leeds -->
<HTML>
<HEAD>
<TITLE>Basics</TITLE>
<META NAME="description" CONTENT="Basics">
<META NAME="keywords" CONTENT="slug">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
<LINK REL=STYLESHEET HREF="slug.css">
</HEAD>
<BODY LANG="EN" >
<A NAME="tex2html3043" HREF="node70.html"><IMG WIDTH=37 HEIGHT=24 ALIGN=BOTTOM ALT="next" SRC="http://www.netlib.org/utk/icons/next_motif.gif"></A> <A NAME="tex2html3041" HREF="node68.html"><IMG WIDTH=26 HEIGHT=24 ALIGN=BOTTOM ALT="up" SRC="http://www.netlib.org/utk/icons/up_motif.gif"></A> <A NAME="tex2html3035" HREF="node68.html"><IMG WIDTH=63 HEIGHT=24 ALIGN=BOTTOM ALT="previous" SRC="http://www.netlib.org/utk/icons/previous_motif.gif"></A> <A NAME="tex2html3045" HREF="node1.html"><IMG WIDTH=65 HEIGHT=24 ALIGN=BOTTOM ALT="contents" SRC="http://www.netlib.org/utk/icons/contents_motif.gif"></A> <A NAME="tex2html3046" HREF="node190.html"><IMG WIDTH=43 HEIGHT=24 ALIGN=BOTTOM ALT="index" SRC="http://www.netlib.org/utk/icons/index_motif.gif"></A> <BR>
<B> Next:</B> <A NAME="tex2html3044" HREF="node70.html">Process Grid</A>
<B>Up:</B> <A NAME="tex2html3042" HREF="node68.html">Data Distributions and Software </A>
<B> Previous:</B> <A NAME="tex2html3036" HREF="node68.html">Data Distributions and Software </A>
<BR> <P>
<H1><A NAME="SECTION04410000000000000000">Basics</A></H1>
<A NAME="sec2dbsdintro"> </A>
<P>
ScaLAPACK requires that all
global data (vectors or matrices)
be distributed across the processes
prior to invoking the ScaLAPACK
routines. The storage schemes
of global data structures in
ScaLAPACK are conceptually the
same as for LAPACK.
<P>
Global data is mapped to the
local memories of processes
assuming specific data distributions.
The local data on each process is
referred to as the <B>local array</B>.
<P>
The layout of an application's
data within the hierarchical
memory<A NAME="2233"> </A><A NAME="2234"> </A>
of a concurrent computer is
critical in determining the
performance and scalability<A NAME="2235"> </A>
of the parallel code.
On shared-memory concurrent
computers (or <EM>multiprocessors</EM>)
LAPACK seeks to make efficient
use of the hierarchical memory
by maximizing data reuse (e.g.,
on a cache-based computer LAPACK
avoids having to reload the cache
too frequently). Specifically,
LAPACK casts linear algebra
computations in terms of
block-oriented, matrix-matrix
operations through the use of
the Level 3 BLAS whenever
possible. This approach
generally results in maximizing
the ratio of floating-point
operations to memory references
and enables data reuse as much
as possible while it is stored
in the highest levels of the
memory hierarchy (e.g., vector
registers or high-speed cache).
<P>
An analogous approach has been
followed in the design of ScaLAPACK for
distributed-memory<A NAME="2237"> </A>
machines. By using block-partitioned
algorithms<A NAME="2238"> </A>
we seek to reduce the frequency with
which data must be transferred between
processes, thereby reducing the fixed
startup cost (or latency)<A NAME="2239"> </A>
incurred each time a message is communicated.
<P>
The ScaLAPACK routines for solving
dense linear systems and eigenvalue
problems assume that all global data
has been distributed to the processes
with a one-dimensional or two-dimensional
block-cyclic data distribution. This
distribution is a natural expression
of the block-partitioned algorithms
present in ScaLAPACK. The ScaLAPACK
routines for solving band linear
systems and tridiagonal systems
assume that all global data has
been distributed to the processes
with a one-dimensional block data
distribution. Each of these distributions
is supported in the High Performance
Fortran standard [<A HREF="node189.html#hpf">91</A>].
Explanations for each distribution
will be presented and accompanied
by the appropriate HPF directives.
<P>
Our implementation of ScaLAPACK
emphasizes the mathematical view
of a matrix over its storage. In
fact, it is even possible to reuse
our interface
for a different block data distribution
that would not fit in the block-cyclic scheme.
<P>
<BR> <HR>
<UL><A NAME="CHILD_LINKS"> </A>
<LI> <A NAME="tex2html3047" HREF="node70.html#SECTION04411000000000000000">Process Grid</A>
<LI> <A NAME="tex2html3048" HREF="node71.html#SECTION04412000000000000000">Contexts</A>
<LI> <A NAME="tex2html3049" HREF="node72.html#SECTION04413000000000000000">Scoped Operations</A>
</UL>
<HR><A NAME="tex2html3043" HREF="node70.html"><IMG WIDTH=37 HEIGHT=24 ALIGN=BOTTOM ALT="next" SRC="http://www.netlib.org/utk/icons/next_motif.gif"></A> <A NAME="tex2html3041" HREF="node68.html"><IMG WIDTH=26 HEIGHT=24 ALIGN=BOTTOM ALT="up" SRC="http://www.netlib.org/utk/icons/up_motif.gif"></A> <A NAME="tex2html3035" HREF="node68.html"><IMG WIDTH=63 HEIGHT=24 ALIGN=BOTTOM ALT="previous" SRC="http://www.netlib.org/utk/icons/previous_motif.gif"></A> <A NAME="tex2html3045" HREF="node1.html"><IMG WIDTH=65 HEIGHT=24 ALIGN=BOTTOM ALT="contents" SRC="http://www.netlib.org/utk/icons/contents_motif.gif"></A> <A NAME="tex2html3046" HREF="node190.html"><IMG WIDTH=43 HEIGHT=24 ALIGN=BOTTOM ALT="index" SRC="http://www.netlib.org/utk/icons/index_motif.gif"></A> <BR>
<B> Next:</B> <A NAME="tex2html3044" HREF="node70.html">Process Grid</A>
<B>Up:</B> <A NAME="tex2html3042" HREF="node68.html">Data Distributions and Software </A>
<B> Previous:</B> <A NAME="tex2html3036" HREF="node68.html">Data Distributions and Software </A>
<P><ADDRESS>
<I>Susan Blackford <BR>
Tue May 13 09:21:01 EDT 1997</I>
</ADDRESS>
</BODY>
</HTML>
|