File: shmem_init.3

package info (click to toggle)
openmpi 5.0.8-4
  • links: PTS, VCS
  • area: main
  • in suites:
  • size: 201,684 kB
  • sloc: ansic: 613,078; makefile: 42,353; sh: 11,194; javascript: 9,244; f90: 7,052; java: 6,404; perl: 5,179; python: 1,859; lex: 740; fortran: 61; cpp: 20; tcl: 12
file content (129 lines) | stat: -rw-r--r-- 2,879 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
.\" Man page generated from reStructuredText.
.
.TH "SHMEM_INIT" "3" "May 30, 2025" "" "Open MPI"
.
.nr rst2man-indent-level 0
.
.de1 rstReportMargin
\\$1 \\n[an-margin]
level \\n[rst2man-indent-level]
level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
-
\\n[rst2man-indent0]
\\n[rst2man-indent1]
\\n[rst2man-indent2]
..
.de1 INDENT
.\" .rstReportMargin pre:
. RS \\$1
. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
. nr rst2man-indent-level +1
.\" .rstReportMargin post:
..
.de UNINDENT
. RE
.\" indent \\n[an-margin]
.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
.nr rst2man-indent-level -1
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.sp
\fI\%shmem_init\fP, start_pes \- Allocates a block of memory from the symmetric
heap.
.SH SYNOPSIS
.sp
C or C++:
.INDENT 0.0
.INDENT 3.5
.sp
.nf
.ft C
void shmem_init(void)
void start_pes(int npes)
.ft P
.fi
.UNINDENT
.UNINDENT
.sp
Fortran:
.INDENT 0.0
.INDENT 3.5
.sp
.nf
.ft C
CALL SHMEM_INIT()
CALL START_PES(npes)
.ft P
.fi
.UNINDENT
.UNINDENT
.SH DESCRIPTION
.sp
The start_pes routine should be the first statement in a SHMEM parallel
program.
.sp
The start_pes routine accepts the following argument:
.INDENT 0.0
.TP
.B npes
Unused. Should be set to 0.
.UNINDENT
.sp
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.
.sp
Multiple calls to this function are not allowed.
.sp
For an overview of programming with SHMEM communication routines,
example SHMEM programs, and instructions for compiling SHMEM programs,
see the \fIintro_shmem\fP(3) man page.
.SH EXAMPLES
.sp
This is a simple program that calls shmem_integer_put(3):
.INDENT 0.0
.INDENT 3.5
.sp
.nf
.ft C
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 *,\(aqPE \(aq, MY_PE(),\(aq TARG=\(aq,TARG,\(aq (expect 33)\(aq
  ENDIF
END
.ft P
.fi
.UNINDENT
.UNINDENT
.SH NOTES
.sp
If the start_pes call is not the first statement in a program,
unexpected results may occur on some architectures.
.sp
\fBSEE ALSO:\fP
.INDENT 0.0
.INDENT 3.5
\fIintro_shmem\fP(3) \fI\%shmem_barrier\fP(3) \fI\%shmem_barrier_all\fP(3)
\fIshmem_put\fP(3) \fImy_pe\fP(3) \fIshmem_n_pes\fP(3)
.UNINDENT
.UNINDENT
.SH COPYRIGHT
2003-2025, The Open MPI Community
.\" Generated by docutils manpage writer.
.