NAME
Bulk synchronous message passing
DESCRIPTION
Direct Remote Memory Access ( drma(3)) is a convenient style
of programming for BSP computations which can be statically
analysed in a straightforward way. It is less convenient
for computations where the volumes of data being communi-
cated in supersteps are irregular and data dependent, and
where the computation to be performed in a superstep depends
on the quantity and form of data received at the start of
that superstep. A more appropriate style of programming in
such cases is bulk synchronous message passing (BSMP).
In BSMP, a non-blocking send operation is provided that
delivers messages to a system buffer associated with the
destination process. The message is guaranteed to be in the
destination buffer at the beginning of the subsequent super-
step, and can be accessed by the destination process only
during that superstep. If the message is not accessed dur-
ing that superstep it is removed from the buffer. In keep-
ing with BSP superstep semantics, the messages sent to a
process during a superstep have no implied ordering at the
receiving end; a destination buffer may therefore be viewed
as a queue, where the incoming messages are enqueued in
arbitrary order and are dequeued (accessed) in that same
order. Note that although messages are typically identified
with tags, bsplib(3) provides no tag-matching facility for
the out-of-order access of specific incoming messages.
In bsplib(3), bulk synchronous message passing is based on
the idea of two-part messages, a fixed-length part carrying
tagging information that will help the receiver to interpret
the message, and a variable-length part containing the main
data payload. We will call the fixed-length portion the tag
and the variable-length portion the payload. The length of
the tag is required to be fixed during any particular super-
step, but can vary between supersteps. The buffering mode
of the BSMP operations is buffered on source, buffered on
destination . We note that this buffering classification is
a semantic description; it does not necessarily describe the
underlying implementation.
SEE ALSO
bsp_set_tagsize(3), bsp_send(3), bsp_get_tag(3),
bsp_qsize(3), bsp_move(3), bsp_hpmove(3)
``BSPlib: The BSP Programming Library'' Jonathan M. D. Hill,
Bill McColl, Dan C. Stefanescu, Mark W. Goudreau, Kevin
Lang, Satish B. Rao, , Torsten Suel, Thanasis Tsantilas, and
Rob Bisseling. Parallel Computing, to appear 1998. See
http://www.bsp-worldwide.org for more details.
BUGS
Problems and bug reports should be mailed to bsplib-
bugs@comlab.ox.ac.uk
AUTHORS
The Oxford BSP Toolset implementation of BSPlib was written
by Jonathan.Hill@comlab.ox.ac.uk
http://www.comlab.ox.ac.uk/oucl/people/jonathan.hill.html
Man(1) output converted with
man2html