SHMEM_INIT(3) Open MPI SHMEM_INIT(3)
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 be-
fore calling any other SHMEM routine. This routine is responsible in-
ter 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, exam-
ple 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, unex-
pected 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)
4.1.2 Nov 24, 2021 SHMEM_INIT(3)
Generated by dwww version 1.14 on Sun Aug 24 14:51:52 CEST 2025.