NAME

     bsp_sync - end of a superstep.



C SYNOPSIS

     #include "bsp.h"

     void bsp_sync()


FORTRAN SYNOPSIS

     SUBROUTINE  bspsync()



DESCRIPTION

     A bsplib(3) calculation consists of  a  sequence  of  super-
     steps.  During a superstep each process can perform a number
     of computations on data held locally at the start of  super-
     step  and  may  communicate  data  to  other processes using
     either bsp_put(3), bsp_get(3),  bsp_hpput(3),  bsp_hpget(3),
     or  bsp_send(3).   Any communications within a superstep are
     guaranteed to occur by the end of the superstep,  where  the
     bsp_nprocs(3) processes synchronise at a barrier. The end of
     one superstep and the start of the next is identified  by  a
     call  to  the library procedure bsp_sync. Communication ini-
     tiated during a superstep is not guaranteed to  occur  until
     bsp_sync  is  executed; this is even the case for the unbuf-
     fered variants of communication (i.e., bsp_hpput(3))


EXAMPLE

     1)   bsp_begin(3) and bsp_init(3)),  the  following  program
          attempts (it is not guaranteed) to serialise the print-
          ing by ensuring each process prints its output in turn.
          This is done by performing p iterations, each separated
          by a barrier synchronisation, where  process  i  prints
          ``Hello BSP Worldwide'' during iteration i.

          void main(void) {
            int i;
            bsp_begin(bsp_nprocs());
              for(i=0; i<bsp_nprocs(); i++) {
                if (bsp_pid()==i)
                  printf("Hello BSP Worldwide from process %d of %d0,
                         i,bsp_nprocs());
                fflush(stdout);
                bsp_sync();
              }
            bsp_end();
          }


     2)   Consider a  Fortran  77  program  that  prints  ``Hello
          World'' in parallel.
                PROGRAM MAIN
                  INCLUDE 'fbsp.h'
                  INTEGER i
                  CALL bspbegin(bspnprocs())
                    DO i=0,bspnprocs()-1
                      IF (bsppid() .eq. i) THEN
                        WRITE (*,*) 'Hello BSP Worldwide from process',
               +                    i,' of ',bspnprocs()
                      END IF
                      CALL bspsync()
                    END DO
                  CALL bspend()
                END



SEE ALSO

     bsplib(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.



NOTES

     bsplib(3) has no form of subset synchronisation.



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