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 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244
|
<!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>BLACS as an Efficient, Portable and Adequate
Message-Passing Interface</TITLE>
<META NAME="description" CONTENT="BLACS as an Efficient, Portable and Adequate
Message-Passing Interface">
<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="tex2html3602" HREF="node112.html"><IMG WIDTH=37 HEIGHT=24 ALIGN=BOTTOM ALT="next" SRC="http://www.netlib.org/utk/icons/next_motif.gif"></A> <A NAME="tex2html3600" HREF="node108.html"><IMG WIDTH=26 HEIGHT=24 ALIGN=BOTTOM ALT="up" SRC="http://www.netlib.org/utk/icons/up_motif.gif"></A> <A NAME="tex2html3594" HREF="node110.html"><IMG WIDTH=63 HEIGHT=24 ALIGN=BOTTOM ALT="previous" SRC="http://www.netlib.org/utk/icons/previous_motif.gif"></A> <A NAME="tex2html3604" 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="tex2html3605" 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="tex2html3603" HREF="node112.html">Parallel Efficiency</A>
<B>Up:</B> <A NAME="tex2html3601" HREF="node108.html">PerformancePortability and Scalability</A>
<B> Previous:</B> <A NAME="tex2html3595" HREF="node110.html">Two-Dimensional Block Cyclic Data </A>
<BR> <P>
<H2><A NAME="SECTION04523000000000000000">BLACS as an Efficient, Portable and Adequate
Message-Passing Interface</A></H2>
<A NAME="subsecblacs"> </A>
<P>
The total volume
of data communicated
by most of the
ScaLAPACK driver
routines for dense
matrices can be
approximated by
the quantity
<IMG WIDTH=44 HEIGHT=31 ALIGN=MIDDLE ALT="tex2html_wrap_inline16256" SRC="img370.gif"><A NAME="3636"> </A>, where
<I>N</I> is the order
of the largest
matrix operand.
The number of
messages, however,
is proportional to
<I>N</I> and can be
approximated by
the quantity
<IMG WIDTH=78 HEIGHT=27 ALIGN=MIDDLE ALT="tex2html_wrap_inline12070" SRC="img5.gif"><A NAME="3637"> </A>,
where <I>NB</I> is the
logical blocking
factor used in
the computation.
Similar to the
situation described
above, the ``standard''
constants <IMG WIDTH=17 HEIGHT=25 ALIGN=MIDDLE ALT="tex2html_wrap_inline16270" SRC="img371.gif"> for
the communication
volume depend upon
the performed computation
and are of the same
order as the
floating-point
operation constants
<IMG WIDTH=18 HEIGHT=25 ALIGN=MIDDLE ALT="tex2html_wrap_inline16191" SRC="img364.gif"> shown in
Table <A HREF="node116.html#standardflopcount">5.8</A>.
The values of the
``standard''
constants <IMG WIDTH=17 HEIGHT=25 ALIGN=MIDDLE ALT="tex2html_wrap_inline16270" SRC="img371.gif">
for a few selected
ScaLAPACK drivers
are presented in
Table <A HREF="node116.html#standardflopcount">5.8</A>.
As a result, a
significant
percentage of
the ScaLAPACK
software aims
at exchanging
messages between
processes.
<P>
Developing an adequate
message-passing interface
specialized for linear
algebra operations has
been one of the first
achievements of the
ScaLAPACK project.
The Basic Linear
Algebra Communications
Subprograms (BLACS)<A NAME="3640"> </A>
[<A HREF="node189.html#lawn37">50</A>, <A HREF="node189.html#lawn94">54</A>]
were thus specifically
designed to facilitate
the expression of the
relevant communication
operations. The simplicity
of the BLACS interface, as
well as the rigor of their
specification, allows for
an easy port of the entire
ScaLAPACK software.
Currently, the BLACS
have been efficiently
ported on machine-specific
message-passing libraries
such as the IBM (MPL)<A NAME="3642"> </A><A NAME="3643"> </A> and
Intel (NX)<A NAME="3644"> </A><A NAME="3645"> </A> message-passing
libraries, as well as more
generic interfaces such
as PVM<A NAME="3646"> </A><A NAME="3647"> </A> and
MPI<A NAME="3648"> </A><A NAME="3649"> </A>. The
BLACS<A NAME="3650"> </A>
overhead has been shown
to be negligible
[<A HREF="node189.html#lawn94">54</A>].
<P>
The BLACS
interface
provides the
user and
library
designer
with an
appropriate
level of
notation.
Indeed, the
BLACS operate
on typed
two-dimensional
arrays. The
computational
model consists
of a one- or
two-dimensional
grid of processes,
where each process
stores matrices
and vectors. The
BLACS include
synchronous
send/receive
routines to
send a matrix
or submatrix
from one process
to another,
to broadcast
submatrices,
or to perform
global reductions
(sums, maxima
and minima).
Other
routines
establish,
change, or
query the
process grid.
The BLACS
provide an
adequate
interface
level for
linear
algebra
communication
operations.
<P>
For ease of use
and flexibility,
the BLACS send
operation is <B>
locally blocking</B>;<A NAME="3653"> </A>
that is, the
return from
the send
operation
indicates that
the resources
may be reused.
However, since
this depends only
on local information,
it is unknown
whether the
receive operation
has been called.
Buffering is
necessary on
the sending or
the receiving
process. The
BLACS receive
operation is
<B>globally blocking</B><A NAME="3655"> </A>.
The return from the
receive operation
indicates that the
message has been
(sent and) received.
On a system natively
supporting globally
blocking sends such
as the IBM SP2 computer,
nonblocking sends
coupled with buffering
are used to simulate
locally blocking sends.
This extra buffering
operation may cause
a slight performance
degradation on those
systems.
<P>
The BLACS broadcast
and combine operations
feature the ability of
selecting different
virtual network
topologies. This
easy-to-use built-in
facility allows for
the expression of
various message
scheduling approaches,
such as a communication
pipeline. This unique
and distinctive BLACS
characteristic is
necessary for achieving
the highest performance
levels on distributed-memory
platforms.
<P>
<BR> <HR>
<UL><A NAME="CHILD_LINKS"> </A>
<LI> <A NAME="tex2html3606" HREF="node112.html#SECTION04523100000000000000">Parallel Efficiency</A>
</UL>
<HR><A NAME="tex2html3602" HREF="node112.html"><IMG WIDTH=37 HEIGHT=24 ALIGN=BOTTOM ALT="next" SRC="http://www.netlib.org/utk/icons/next_motif.gif"></A> <A NAME="tex2html3600" HREF="node108.html"><IMG WIDTH=26 HEIGHT=24 ALIGN=BOTTOM ALT="up" SRC="http://www.netlib.org/utk/icons/up_motif.gif"></A> <A NAME="tex2html3594" HREF="node110.html"><IMG WIDTH=63 HEIGHT=24 ALIGN=BOTTOM ALT="previous" SRC="http://www.netlib.org/utk/icons/previous_motif.gif"></A> <A NAME="tex2html3604" 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="tex2html3605" 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="tex2html3603" HREF="node112.html">Parallel Efficiency</A>
<B>Up:</B> <A NAME="tex2html3601" HREF="node108.html">PerformancePortability and Scalability</A>
<B> Previous:</B> <A NAME="tex2html3595" HREF="node110.html">Two-Dimensional Block Cyclic Data </A>
<P><ADDRESS>
<I>Susan Blackford <BR>
Tue May 13 09:21:01 EDT 1997</I>
</ADDRESS>
</BODY>
</HTML>
|