


bsmp(3)                 BSPlib FUNCTIONS                  bsmp(3)



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 _t_a_g
     and  the variable-length portion the _p_a_y_l_o_a_d.  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 _b_u_f_f_e_r_e_d  _o_n _s_o_u_r_c_e,  _b_u_f_f_e_r_e_d  _o_n
     _d_e_s_t_i_n_a_t_i_o_n .  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)

     ``_B_S_P_l_i_b: _T_h_e _B_S_P _P_r_o_g_r_a_m_m_i_n_g _L_i_b_r_a_r_y'' Jonathan M. D. Hill,
     Bill  McColl,  Dan  C.  Stefanescu,  Mark W. Goudreau, Kevin



Oxford BSP Toolset  Last change: 1.4 25/9/98                    1






bsmp(3)                 BSPlib FUNCTIONS                  bsmp(3)



     Lang, Satish B. Rao, , Torsten Suel, Thanasis Tsantilas, and
     Rob  Bisseling.  Parallel  Computing,  to  appear  1998. See
     _h_t_t_p://_w_w_w._b_s_p-_w_o_r_l_d_w_i_d_e._o_r_g for more details.


BUGS
     Problems  and  bug  reports  should  be  mailed  to  _b_s_p_l_i_b-
     _b_u_g_s@_c_o_m_l_a_b._o_x._a_c._u_k


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









































Oxford BSP Toolset  Last change: 1.4 25/9/98                    2



