Provided by: openmpi-doc_4.1.5-3ubuntu1_all bug

NAME

       shmem_init, start_pes - Allocates a block of memory from the symmetric heap.

SYNOPSIS

       C or C++:
       void shmem_init(void);
       void start_pes(int npes);

       Fortran:
       CALL SHMEM_INIT()
       CALL START_PES(npes)

DESCRIPTION

       The start_pes routine should be the first statement in a SHMEM parallel program.

       The start_pes routine accepts the following argument:

       npes   Unused. Should be set to 0.

       This  routine  initializes  the  SHMEM API, therefore it must be called before calling any
       other SHMEM routine.  This routine is responsible inter alia for setting up the  symmetric
       heap on the calling PE, and the creation of the virtual PE numbers. Upon successful return
       from this routine, the calling PE will be able to communicate with and  transfer  data  to
       other PEs.

       Multiple calls to this function are not allowed.

       For  an overview of programming with SHMEM communication routines, example SHMEM programs,
       and instructions for compiling SHMEM programs, see the intro_shmem(3) man page.

EXAMPLES

       This is a simple program that calls shmem_integer_put(3):
       PROGRAM PUT
         INCLUDE "mpp/shmem.fh"

         INTEGER TARG, SRC, RECEIVER, BAR
         COMMON /T/ TARG
         PARAMETER (RECEIVER=1)

         CALL SHMEM_INIT()
         IF (MY_PE() .EQ. 0) THEN
           SRC = 33
           CALL SHMEM_INTEGER_PUT(TARG, SRC, 1, RECEIVER)
         ENDIF
         CALL SHMEM_BARRIER_ALL ! SYNCHRONIZES SENDER AND RECEIVER
         IF (MY_PE() .EQ. RECEIVER) THEN
           PRINT *,'PE ', MY_PE(),' TARG=',TARG,' (expect 33)'
         ENDIF
       END

NOTES

       If the start_pes call is not the first statement in  a  program,  unexpected  results  may
       occur on some architectures.

SEE ALSO

       intro_shmem(3),    shmem_barrier(3),    shmem_barrier_all(3),   shmem_put(3),   my_pe(3I),
       shmem_n_pes(3I)