File: shmem_ptr.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 (178 lines) | stat: -rw-r--r-- 3,734 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
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
.\" Man page generated from reStructuredText.
.
.TH "SHMEM_PTR" "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_ptr\fP(3) \- Returns a pointer to a data object on a specified
processing element (PE).
.SH SYNOPSIS
.sp
C or C++:
.INDENT 0.0
.INDENT 3.5
.sp
.nf
.ft C
#include <mpp/shmem.h>

void *shmem_ptr(const void *target, int pe)
.ft P
.fi
.UNINDENT
.UNINDENT
.sp
Fortran:
.INDENT 0.0
.INDENT 3.5
.sp
.nf
.ft C
INCLUDE "mpp/shmem.fh"

POINTER (PTR, POINTEE)
INTEGER pe

PTR = SHMEM_PTR(target, pe)
.ft P
.fi
.UNINDENT
.UNINDENT
.SH DESCRIPTION
.sp
The \fI\%shmem_ptr\fP routine returns an address that can be used to directly
reference \fBtarget\fP on the remote PE \fBpe\fP\&. With this address we can
perform ordinary loads and stores to the remote address.
.sp
When a sequence of loads (gets) and stores (puts) to a data object on a
remote PE does not match the access pattern provided in a SHMEM data
transfer routine like \fI\%shmem_put32\fP(3) or shmem_real_iget(3), the
\fI\%shmem_ptr\fP function can provide an efficient means to accomplish the
communication.
.sp
The arguments are as follows:
.INDENT 0.0
.TP
.B target
The symmetric data object to be referenced.
.TP
.B pe
An integer that indicates the PE number on which target is to be
accessed. If you are using Fortran, it must be a default integer
value.
.UNINDENT
.SH EXAMPLES
.sp
This Fortran program calls \fI\%shmem_ptr\fP and then PE 0 writes to the BIGD
array on PE 1:
.INDENT 0.0
.INDENT 3.5
.sp
.nf
.ft C
PROGRAM REMOTEWRITE
  INCLUDE \(aqmpp/shmem.fh\(aq

  INTEGER BIGD(100)
  SAVE BIGD
  INTEGER POINTEE(*)

  POINTER (PTR,POINTEE)
  CALL START_PES(0)
  IF (MY_PE() .EQ. 0) THEN
                             ! initialize PE 1\(aqs BIGD array
    PTR = SHMEM_PTR(BIGD, 1) ! get address of PE 1\(aqs BIGD
                             ! array
    DO I=1,100
      POINTEE(I) = I
    ENDDO
  ENDIF
  CALL SHMEM_BARRIER_ALL
  IF (MY_PE() .EQ. 1) THEN
    PRINT *, \(aqBIGD on PE 1 is: \(aq
    PRINT *, BIGD
  ENDIF
END
.ft P
.fi
.UNINDENT
.UNINDENT
.sp
This is the equivalent program written in C:
.INDENT 0.0
.INDENT 3.5
.sp
.nf
.ft C
#include <mpp/shmem.h>

main()
{
  static int bigd[100];
  int *ptr;
  int i;

  shmem_init();
  if (shmem_my_pe() == 0) {
  /* initialize PE 1\(aqs bigd array */
    ptr = shmem_ptr(bigd, 1);
    for (i=0; i<100; i++)
      *ptr++ = i+1;
  }
  shmem_barrier_all();
  if (shmem_my_pe() == 1) {
    printf("bigd on PE 1 is:\en");
    for (i=0; i<100; i++)
      printf(" %d\en",bigd[i]);
    printf("\en");
  }
}
.ft P
.fi
.UNINDENT
.UNINDENT
.SH NOTES
.sp
The \fI\%shmem_ptr\fP function is available only on systems where ordinary
memory loads and stores are used to implement SHMEM put and get
operations.
.SH RETURN VALUES
.sp
\fI\%shmem_ptr\fP returns a pointer to the data object on the specified remote
PE. If target is not remotely accessible, a NULL pointer is returned.
.sp
\fBSEE ALSO:\fP
.INDENT 0.0
.INDENT 3.5
\fIintro_shmem\fP(3) \fIshmem_put\fP(3) \fIshmem_get\fP(3)
.UNINDENT
.UNINDENT
.SH COPYRIGHT
2003-2025, The Open MPI Community
.\" Generated by docutils manpage writer.
.