This source file includes following definitions.
- SHMEM_GENERATE_WEAK_BINDINGS
- SHMEM_GENERATE_FORTRAN_BINDINGS_SUB
- SHMEM_GENERATE_FORTRAN_BINDINGS_SUB
- SHMEM_GENERATE_FORTRAN_BINDINGS_SUB
- SHMEM_GENERATE_FORTRAN_BINDINGS_SUB
- SHMEM_GENERATE_FORTRAN_BINDINGS_SUB
- SHMEM_GENERATE_FORTRAN_BINDINGS_SUB
- SHMEM_GENERATE_FORTRAN_BINDINGS_SUB
- SHMEM_GENERATE_FORTRAN_BINDINGS_SUB
- SHMEM_GENERATE_FORTRAN_BINDINGS_SUB
- SHMEM_GENERATE_FORTRAN_BINDINGS_SUB
- SHMEM_GENERATE_FORTRAN_BINDINGS_SUB
1
2
3
4
5
6
7
8
9
10
11 #include "oshmem_config.h"
12 #include "oshmem/shmem/fortran/bindings.h"
13 #include "oshmem/include/shmem.h"
14 #include "oshmem/shmem/shmem_api_logger.h"
15 #include "oshmem/runtime/runtime.h"
16 #include "oshmem/mca/spml/spml.h"
17 #include "ompi/datatype/ompi_datatype.h"
18 #include "stdio.h"
19
20 #if OSHMEM_PROFILING
21 #include "oshmem/shmem/fortran/profile/pbindings.h"
22
23 SHMEM_GENERATE_WEAK_BINDINGS(SHMEM_GETMEM_NBI, shmem_getmem_nbi)
24
25 SHMEM_GENERATE_WEAK_BINDINGS(SHMEM_CHARACTER_GET_NBI, shmem_character_get_nbi)
26 SHMEM_GENERATE_WEAK_BINDINGS(SHMEM_COMPLEX_GET_NBI, shmem_complex_get_nbi)
27 SHMEM_GENERATE_WEAK_BINDINGS(SHMEM_DOUBLE_GET_NBI, shmem_double_get_nbi)
28 SHMEM_GENERATE_WEAK_BINDINGS(SHMEM_INTEGER_GET_NBI, shmem_integer_get_nbi)
29 SHMEM_GENERATE_WEAK_BINDINGS(SHMEM_LOGICAL_GET_NBI, shmem_logical_get_nbi)
30 SHMEM_GENERATE_WEAK_BINDINGS(SHMEM_REAL_GET_NBI, shmem_real_get_nbi)
31
32 SHMEM_GENERATE_WEAK_BINDINGS(SHMEM_GET4_NBI, shmem_get4_nbi)
33 SHMEM_GENERATE_WEAK_BINDINGS(SHMEM_GET8_NBI, shmem_get8_nbi)
34 SHMEM_GENERATE_WEAK_BINDINGS(SHMEM_GET32_NBI, shmem_get32_nbi)
35 SHMEM_GENERATE_WEAK_BINDINGS(SHMEM_GET64_NBI, shmem_get64_nbi)
36 SHMEM_GENERATE_WEAK_BINDINGS(SHMEM_GET128_NBI, shmem_get128_nbi)
37
38 #include "oshmem/shmem/fortran/profile/defines.h"
39 #endif
40
41 SHMEM_GENERATE_FORTRAN_BINDINGS_SUB (void,
42 SHMEM_GETMEM_NBI,
43 shmem_getmem_nbi_,
44 shmem_getmem_nbi__,
45 shmem_getmem_nbi_f,
46 (FORTRAN_POINTER_T target, FORTRAN_POINTER_T source, MPI_Fint *len, MPI_Fint *pe),
47 (target,source,len,pe) )
48
49 void shmem_getmem_nbi_f(FORTRAN_POINTER_T target, FORTRAN_POINTER_T source, MPI_Fint *len, MPI_Fint *pe)
50 {
51 MCA_SPML_CALL(get_nb(oshmem_ctx_default, FPTR_2_VOID_PTR(source),
52 OMPI_FINT_2_INT(*len),
53 FPTR_2_VOID_PTR(target),
54 OMPI_FINT_2_INT(*pe), NULL));
55 }
56
57 SHMEM_GENERATE_FORTRAN_BINDINGS_SUB (void,
58 SHMEM_CHARACTER_GET_NBI,
59 shmem_character_get_nbi_,
60 shmem_character_get_nbi__,
61 shmem_character_get_nbi_f,
62 (FORTRAN_POINTER_T target, FORTRAN_POINTER_T source, MPI_Fint *len, MPI_Fint *pe),
63 (target,source,len,pe))
64
65 void shmem_character_get_nbi_f(FORTRAN_POINTER_T target, FORTRAN_POINTER_T source, MPI_Fint *len, MPI_Fint *pe)
66 {
67 size_t character_type_size = 0;
68 ompi_datatype_type_size(&ompi_mpi_character.dt, &character_type_size);
69
70 MCA_SPML_CALL(get_nb(oshmem_ctx_default, FPTR_2_VOID_PTR(source),
71 OMPI_FINT_2_INT(*len) * character_type_size,
72 FPTR_2_VOID_PTR(target),
73 OMPI_FINT_2_INT(*pe), NULL));
74 }
75
76 SHMEM_GENERATE_FORTRAN_BINDINGS_SUB (void,
77 SHMEM_COMPLEX_GET_NBI,
78 shmem_complex_get_nbi_,
79 shmem_complex_get_nbi__,
80 shmem_complex_get_nbi_f,
81 (FORTRAN_POINTER_T target, FORTRAN_POINTER_T source, MPI_Fint *len, MPI_Fint *pe),
82 (target,source,len,pe) )
83
84 void shmem_complex_get_nbi_f(FORTRAN_POINTER_T target, FORTRAN_POINTER_T source, MPI_Fint *len, MPI_Fint *pe)
85 {
86 size_t complex_type_size = 0;
87 ompi_datatype_type_size(&ompi_mpi_cplex.dt, &complex_type_size);
88
89 MCA_SPML_CALL(get_nb(oshmem_ctx_default, FPTR_2_VOID_PTR(source),
90 OMPI_FINT_2_INT(*len) * complex_type_size,
91 FPTR_2_VOID_PTR(target),
92 OMPI_FINT_2_INT(*pe), NULL));
93 }
94
95 SHMEM_GENERATE_FORTRAN_BINDINGS_SUB (void,
96 SHMEM_DOUBLE_GET_NBI,
97 shmem_double_get_nbi_,
98 shmem_double_get_nbi__,
99 shmem_double_get_nbi_f,
100 (FORTRAN_POINTER_T target, FORTRAN_POINTER_T source, MPI_Fint *len, MPI_Fint *pe),
101 (target,source,len,pe) )
102
103 void shmem_double_get_nbi_f(FORTRAN_POINTER_T target, FORTRAN_POINTER_T source, MPI_Fint *len, MPI_Fint *pe)
104 {
105 size_t double_type_size = 0;
106 ompi_datatype_type_size(&ompi_mpi_dblprec.dt, &double_type_size);
107
108 MCA_SPML_CALL(get_nb(oshmem_ctx_default, FPTR_2_VOID_PTR(source),
109 OMPI_FINT_2_INT(*len) * double_type_size,
110 FPTR_2_VOID_PTR(target),
111 OMPI_FINT_2_INT(*pe), NULL));
112 }
113
114 SHMEM_GENERATE_FORTRAN_BINDINGS_SUB (void,
115 SHMEM_INTEGER_GET_NBI,
116 shmem_integer_get_nbi_,
117 shmem_integer_get_nbi__,
118 shmem_integer_get_nbi_f,
119 (FORTRAN_POINTER_T target, FORTRAN_POINTER_T source, MPI_Fint *len, MPI_Fint *pe),
120 (target,source,len,pe) )
121
122 void shmem_integer_get_nbi_f(FORTRAN_POINTER_T target, FORTRAN_POINTER_T source, MPI_Fint *len, MPI_Fint *pe)
123 {
124 size_t integer_type_size = 0;
125 ompi_datatype_type_size(&ompi_mpi_integer.dt, &integer_type_size);
126
127 MCA_SPML_CALL(get_nb(oshmem_ctx_default, FPTR_2_VOID_PTR(source),
128 OMPI_FINT_2_INT(*len) * integer_type_size,
129 FPTR_2_VOID_PTR(target),
130 OMPI_FINT_2_INT(*pe), NULL));
131 }
132
133 SHMEM_GENERATE_FORTRAN_BINDINGS_SUB (void,
134 SHMEM_LOGICAL_GET_NBI,
135 shmem_logical_get_nbi_,
136 shmem_logical_get_nbi__,
137 shmem_logical_get_nbi_f,
138 (FORTRAN_POINTER_T target, FORTRAN_POINTER_T source, MPI_Fint *len, MPI_Fint *pe),
139 (target,source,len,pe) )
140
141 void shmem_logical_get_nbi_f(FORTRAN_POINTER_T target, FORTRAN_POINTER_T source, MPI_Fint *len, MPI_Fint *pe)
142 {
143 size_t logical_type_size = 0;
144 ompi_datatype_type_size(&ompi_mpi_logical.dt, &logical_type_size);
145
146 MCA_SPML_CALL(get_nb(oshmem_ctx_default, FPTR_2_VOID_PTR(source),
147 OMPI_FINT_2_INT(*len) * logical_type_size,
148 FPTR_2_VOID_PTR(target),
149 OMPI_FINT_2_INT(*pe), NULL));
150 }
151
152 SHMEM_GENERATE_FORTRAN_BINDINGS_SUB (void,
153 SHMEM_REAL_GET_NBI,
154 shmem_real_get_nbi_,
155 shmem_real_get_nbi__,
156 shmem_real_get_nbi_f,
157 (FORTRAN_POINTER_T target, FORTRAN_POINTER_T source, MPI_Fint *len, MPI_Fint *pe),
158 (target,source,len,pe) )
159
160 void shmem_real_get_nbi_f(FORTRAN_POINTER_T target, FORTRAN_POINTER_T source, MPI_Fint *len, MPI_Fint *pe)
161 {
162 size_t real_type_size = 0;
163 ompi_datatype_type_size(&ompi_mpi_real.dt, &real_type_size);
164
165 MCA_SPML_CALL(get_nb(oshmem_ctx_default, FPTR_2_VOID_PTR(source),
166 OMPI_FINT_2_INT(*len) * real_type_size,
167 FPTR_2_VOID_PTR(target),
168 OMPI_FINT_2_INT(*pe), NULL));
169 }
170
171
172 SHMEM_GENERATE_FORTRAN_BINDINGS_SUB (void,
173 SHMEM_GET4_NBI,
174 shmem_get4_nbi_,
175 shmem_get4_nbi__,
176 shmem_get4_nbi_f,
177 (FORTRAN_POINTER_T target, FORTRAN_POINTER_T source, MPI_Fint *len, MPI_Fint *pe),
178 (target,source,len,pe) )
179
180 void shmem_get4_nbi_f(FORTRAN_POINTER_T target, FORTRAN_POINTER_T source, MPI_Fint *len, MPI_Fint *pe)
181 {
182 MCA_SPML_CALL(get_nb(oshmem_ctx_default, FPTR_2_VOID_PTR(source),
183 OMPI_FINT_2_INT(*len) * 4,
184 FPTR_2_VOID_PTR(target),
185 OMPI_FINT_2_INT(*pe), NULL));
186 }
187
188 SHMEM_GENERATE_FORTRAN_BINDINGS_SUB (void,
189 SHMEM_GET8_NBI,
190 shmem_get8_nbi_,
191 shmem_get8_nbi__,
192 shmem_get8_nbi_f,
193 (FORTRAN_POINTER_T target, FORTRAN_POINTER_T source, MPI_Fint *len, MPI_Fint *pe),
194 (target,source,len,pe) )
195
196 void shmem_get8_nbi_f(FORTRAN_POINTER_T target, FORTRAN_POINTER_T source, MPI_Fint *len, MPI_Fint *pe)
197 {
198 MCA_SPML_CALL(get_nb(oshmem_ctx_default, FPTR_2_VOID_PTR(source),
199 OMPI_FINT_2_INT(*len) * 8,
200 FPTR_2_VOID_PTR(target),
201 OMPI_FINT_2_INT(*pe), NULL));
202 }
203
204 SHMEM_GENERATE_FORTRAN_BINDINGS_SUB (void,
205 SHMEM_GET32_NBI,
206 shmem_get32_nbi_,
207 shmem_get32_nbi__,
208 shmem_get32_nbi_f,
209 (FORTRAN_POINTER_T target, FORTRAN_POINTER_T source, MPI_Fint *len, MPI_Fint *pe),
210 (target,source,len,pe) )
211
212 void shmem_get32_nbi_f(FORTRAN_POINTER_T target, FORTRAN_POINTER_T source, MPI_Fint *len, MPI_Fint *pe)
213 {
214 MCA_SPML_CALL(get_nb(oshmem_ctx_default, FPTR_2_VOID_PTR(source),
215 OMPI_FINT_2_INT(*len) * 4,
216 FPTR_2_VOID_PTR(target),
217 OMPI_FINT_2_INT(*pe), NULL));
218 }
219
220 SHMEM_GENERATE_FORTRAN_BINDINGS_SUB (void,
221 SHMEM_GET64_NBI,
222 shmem_get64_nbi_,
223 shmem_get64_nbi__,
224 shmem_get64_nbi_f,
225 (FORTRAN_POINTER_T target, FORTRAN_POINTER_T source, MPI_Fint *len, MPI_Fint *pe),
226 (target,source,len,pe) )
227
228 void shmem_get64_nbi_f(FORTRAN_POINTER_T target, FORTRAN_POINTER_T source, MPI_Fint *len, MPI_Fint *pe)
229 {
230 MCA_SPML_CALL(get_nb(oshmem_ctx_default, FPTR_2_VOID_PTR(source),
231 OMPI_FINT_2_INT(*len) * 8,
232 FPTR_2_VOID_PTR(target),
233 OMPI_FINT_2_INT(*pe), NULL));
234 }
235
236 SHMEM_GENERATE_FORTRAN_BINDINGS_SUB (void,
237 SHMEM_GET128_NBI,
238 shmem_get128_nbi_,
239 shmem_get128_nbi__,
240 shmem_get128_nbi_f,
241 (FORTRAN_POINTER_T target, FORTRAN_POINTER_T source, MPI_Fint *len, MPI_Fint *pe),
242 (target,source,len,pe) )
243
244 void shmem_get128_nbi_f(FORTRAN_POINTER_T target, FORTRAN_POINTER_T source, MPI_Fint *len, MPI_Fint *pe)
245 {
246 MCA_SPML_CALL(get_nb(oshmem_ctx_default, FPTR_2_VOID_PTR(source),
247 OMPI_FINT_2_INT(*len) * 16,
248 FPTR_2_VOID_PTR(target),
249 OMPI_FINT_2_INT(*pe), NULL));
250 }