NAME

     bsp_init - initialise the BSPlib system



C SYNOPSIS

     #include "bsp.h"

     void bsp_init(void (*startproc)(void), int argc, char ** argv);


FORTRAN SYNOPSIS

     SUBROUTINE bspinit(startproc)
     INTERFACE
        SUBROUTINE startproc
     END INTERFACE



DESCRIPTION

     The purpose of bsp_init is to  support  a  mode  of  process
     intialisation  that  allows a single process to start execu-
     tion and determine the number of parallel processes required
     for  a calculation. The desired number of processes are then
     spawned  using  bsp_begin(3).  Execution  of   the   spawned
     processes  continues  in  a  SPMD manner until bsp_end(3) is
     encountered  by  all  the  processes.  At  that  point,  all
     processes  except  process  zero are terminated, and process
     zero is left to continue execution of the rest of  the  pro-
     gram sequentially.

     The procedure bsp_init enables the implementation of  BSPlib
     to simulate this dynamic spawning mechanism by giving a hint
     to the BSPlib system that  SPMD  computation  will  commence
     inside  the  procedure  startproc.  The  procedure  named in
     bsp_init must contain bsp_begin(3)  and  bsp_end(3)  as  its
     first and last statements.




EXAMPLES

     1    A C implementation of a  simple  hello  world  program,
          that  spawns  a number of processes determined by user-
          driven input.

          #include <stdio.h>
          #include "bsp.h"

          int n; /* global variable

          void spmd_part() {
            bsp_begin(n);
              printf("Hello BSP Worldwide from process %d of %d0,
                     bsp_pid(),bsp_nprocs());
            bsp_end();

          }

          void main(int argc, char **argv) {
            bsp_init(spmd_part,argc,argv);
            printf("How many processes? ");
            scanf("%d",&n);
            printf("Only one process should print this\n");
            spmd_start();
            printf("Just about to finish\n");
          }

     When the above program is executed  a  single  process  will
     begin  execution  and read a number from standard input that
     specifies the number of parallel processes  to  be  spawned.
     The  desired number of processes will then be spawned within
     the procedure spmd_part, and each  process  will  print  the
     string ``Hello BSP Worldwide''.

     An example compilation and execution is shown below:

          pippin> bspcc test.c -o hello
          pippin> ./hello
          How many processes? 4
          Only one process should print this
          Hello BSP Worldwide from process  1 of 4
          Hello BSP Worldwide from process  2 of 4
          Hello BSP Worldwide from process  0 of 4
          Hello BSP Worldwide from process  3 of 4
          Just about to finish


     2    A Fortran 77 implementation of  a  simple  hello  world
          program,  that  spawns a number of processes determined
          by user-driven input.

                  SUBROUTINE spmdpart
                    INCLUDE 'fbsp.h'
                    INTEGER nprocs
                    COMMON /global/ nprocs

                    CALL bspbegin(nprocs)
                      WRITE (*,*) 'Hello BSP Worldwide from process',
               +                  bsppid(), ' of ',bspnprocs()
                    CALL bspend()
                  END


                  PROGRAM MAIN
                    EXTERNAL spmdpart
                    INTEGER nprocs
                    COMMON /global/ nprocs

                    CALL bspinit(spmdpart)
                    READ *,nprocs
                    CALL spmdpart
                  END

     An example compilation and execution is shown below:

          pippin> bspf77 test.f -o hello
          pippin> ./hello
          4
          Hello BSP Worldwide from process   0    of   4
          Hello BSP Worldwide from process   2    of   4
          Hello BSP Worldwide from process   3    of   4
          Hello BSP Worldwide from process   1    of   4



SEE ALSO

     bsplib(3), bsp_begin(3), bsp_end(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