This source file includes following definitions.
- SHMEM_CTX_TYPE_PUTMEM_NB
1
2
3
4
5
6
7
8
9
10 #include "oshmem_config.h"
11
12 #include "oshmem/constants.h"
13 #include "oshmem/include/shmem.h"
14
15 #include "oshmem/runtime/runtime.h"
16
17 #include "oshmem/mca/spml/spml.h"
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 #define DO_SHMEM_TYPE_PUT_NB(ctx, type, target, source, len, pe) do { \
33 int rc = OSHMEM_SUCCESS; \
34 size_t size = 0; \
35 \
36 RUNTIME_CHECK_INIT(); \
37 RUNTIME_CHECK_PE(pe); \
38 RUNTIME_CHECK_ADDR(target); \
39 \
40 size = len * sizeof(type); \
41 rc = MCA_SPML_CALL(put_nb( \
42 ctx, \
43 (void *)target, \
44 size, \
45 (void *)source, \
46 pe, NULL)); \
47 RUNTIME_CHECK_RC(rc); \
48 } while (0)
49
50 #define SHMEM_CTX_TYPE_PUT_NB(type_name, type) \
51 void shmem_ctx##type_name##_put_nbi(shmem_ctx_t ctx, type *target, const type *source, size_t len, int pe) \
52 { \
53 DO_SHMEM_TYPE_PUT_NB(ctx, type, target, source, len, pe); \
54 return ; \
55 }
56
57 #define SHMEM_TYPE_PUT_NB(type_name, type) \
58 void shmem##type_name##_put_nbi(type *target, const type *source, size_t len, int pe) \
59 { \
60 DO_SHMEM_TYPE_PUT_NB(oshmem_ctx_default, type, target, \
61 source, len, pe); \
62 return ; \
63 }
64
65 #if OSHMEM_PROFILING
66 #include "oshmem/include/pshmem.h"
67 #pragma weak shmem_ctx_char_put_nbi = pshmem_ctx_char_put_nbi
68 #pragma weak shmem_ctx_short_put_nbi = pshmem_ctx_short_put_nbi
69 #pragma weak shmem_ctx_int_put_nbi = pshmem_ctx_int_put_nbi
70 #pragma weak shmem_ctx_long_put_nbi = pshmem_ctx_long_put_nbi
71 #pragma weak shmem_ctx_float_put_nbi = pshmem_ctx_float_put_nbi
72 #pragma weak shmem_ctx_double_put_nbi = pshmem_ctx_double_put_nbi
73 #pragma weak shmem_ctx_longlong_put_nbi = pshmem_ctx_longlong_put_nbi
74 #pragma weak shmem_ctx_schar_put_nbi = pshmem_ctx_schar_put_nbi
75 #pragma weak shmem_ctx_uchar_put_nbi = pshmem_ctx_uchar_put_nbi
76 #pragma weak shmem_ctx_ushort_put_nbi = pshmem_ctx_ushort_put_nbi
77 #pragma weak shmem_ctx_uint_put_nbi = pshmem_ctx_uint_put_nbi
78 #pragma weak shmem_ctx_ulong_put_nbi = pshmem_ctx_ulong_put_nbi
79 #pragma weak shmem_ctx_ulonglong_put_nbi = pshmem_ctx_ulonglong_put_nbi
80 #pragma weak shmem_ctx_longdouble_put_nbi = pshmem_ctx_longdouble_put_nbi
81 #pragma weak shmem_ctx_int8_put_nbi = pshmem_ctx_int8_put_nbi
82 #pragma weak shmem_ctx_int16_put_nbi = pshmem_ctx_int16_put_nbi
83 #pragma weak shmem_ctx_int32_put_nbi = pshmem_ctx_int32_put_nbi
84 #pragma weak shmem_ctx_int64_put_nbi = pshmem_ctx_int64_put_nbi
85 #pragma weak shmem_ctx_uint8_put_nbi = pshmem_ctx_uint8_put_nbi
86 #pragma weak shmem_ctx_uint16_put_nbi = pshmem_ctx_uint16_put_nbi
87 #pragma weak shmem_ctx_uint32_put_nbi = pshmem_ctx_uint32_put_nbi
88 #pragma weak shmem_ctx_uint64_put_nbi = pshmem_ctx_uint64_put_nbi
89 #pragma weak shmem_ctx_size_put_nbi = pshmem_ctx_size_put_nbi
90 #pragma weak shmem_ctx_ptrdiff_put_nbi = pshmem_ctx_ptrdiff_put_nbi
91
92 #pragma weak shmem_char_put_nbi = pshmem_char_put_nbi
93 #pragma weak shmem_short_put_nbi = pshmem_short_put_nbi
94 #pragma weak shmem_int_put_nbi = pshmem_int_put_nbi
95 #pragma weak shmem_long_put_nbi = pshmem_long_put_nbi
96 #pragma weak shmem_float_put_nbi = pshmem_float_put_nbi
97 #pragma weak shmem_double_put_nbi = pshmem_double_put_nbi
98 #pragma weak shmem_longlong_put_nbi = pshmem_longlong_put_nbi
99 #pragma weak shmem_schar_put_nbi = pshmem_schar_put_nbi
100 #pragma weak shmem_uchar_put_nbi = pshmem_uchar_put_nbi
101 #pragma weak shmem_ushort_put_nbi = pshmem_ushort_put_nbi
102 #pragma weak shmem_uint_put_nbi = pshmem_uint_put_nbi
103 #pragma weak shmem_ulong_put_nbi = pshmem_ulong_put_nbi
104 #pragma weak shmem_ulonglong_put_nbi = pshmem_ulonglong_put_nbi
105 #pragma weak shmem_longdouble_put_nbi = pshmem_longdouble_put_nbi
106 #pragma weak shmem_int8_put_nbi = pshmem_int8_put_nbi
107 #pragma weak shmem_int16_put_nbi = pshmem_int16_put_nbi
108 #pragma weak shmem_int32_put_nbi = pshmem_int32_put_nbi
109 #pragma weak shmem_int64_put_nbi = pshmem_int64_put_nbi
110 #pragma weak shmem_uint8_put_nbi = pshmem_uint8_put_nbi
111 #pragma weak shmem_uint16_put_nbi = pshmem_uint16_put_nbi
112 #pragma weak shmem_uint32_put_nbi = pshmem_uint32_put_nbi
113 #pragma weak shmem_uint64_put_nbi = pshmem_uint64_put_nbi
114 #pragma weak shmem_size_put_nbi = pshmem_size_put_nbi
115 #pragma weak shmem_ptrdiff_put_nbi = pshmem_ptrdiff_put_nbi
116
117 #pragma weak shmem_put8_nbi = pshmem_put8_nbi
118 #pragma weak shmem_put16_nbi = pshmem_put16_nbi
119 #pragma weak shmem_put32_nbi = pshmem_put32_nbi
120 #pragma weak shmem_put64_nbi = pshmem_put64_nbi
121 #pragma weak shmem_put128_nbi = pshmem_put128_nbi
122 #pragma weak shmem_putmem_nbi = pshmem_putmem_nbi
123
124 #pragma weak shmem_ctx_put8_nbi = pshmem_ctx_put8_nbi
125 #pragma weak shmem_ctx_put16_nbi = pshmem_ctx_put16_nbi
126 #pragma weak shmem_ctx_put32_nbi = pshmem_ctx_put32_nbi
127 #pragma weak shmem_ctx_put64_nbi = pshmem_ctx_put64_nbi
128 #pragma weak shmem_ctx_put128_nbi = pshmem_ctx_put128_nbi
129 #pragma weak shmem_ctx_putmem_nbi = pshmem_ctx_putmem_nbi
130 #include "oshmem/shmem/c/profile/defines.h"
131 #endif
132
133 SHMEM_CTX_TYPE_PUT_NB(_char, char)
134 SHMEM_CTX_TYPE_PUT_NB(_short, short)
135 SHMEM_CTX_TYPE_PUT_NB(_int, int)
136 SHMEM_CTX_TYPE_PUT_NB(_long, long)
137 SHMEM_CTX_TYPE_PUT_NB(_longlong, long long)
138 SHMEM_CTX_TYPE_PUT_NB(_schar, signed char)
139 SHMEM_CTX_TYPE_PUT_NB(_uchar, unsigned char)
140 SHMEM_CTX_TYPE_PUT_NB(_ushort, unsigned short)
141 SHMEM_CTX_TYPE_PUT_NB(_uint, unsigned int)
142 SHMEM_CTX_TYPE_PUT_NB(_ulong, unsigned long)
143 SHMEM_CTX_TYPE_PUT_NB(_ulonglong, unsigned long long)
144 SHMEM_CTX_TYPE_PUT_NB(_float, float)
145 SHMEM_CTX_TYPE_PUT_NB(_double, double)
146 SHMEM_CTX_TYPE_PUT_NB(_longdouble, long double)
147 SHMEM_CTX_TYPE_PUT_NB(_int8, int8_t)
148 SHMEM_CTX_TYPE_PUT_NB(_int16, int16_t)
149 SHMEM_CTX_TYPE_PUT_NB(_int32, int32_t)
150 SHMEM_CTX_TYPE_PUT_NB(_int64, int64_t)
151 SHMEM_CTX_TYPE_PUT_NB(_uint8, uint8_t)
152 SHMEM_CTX_TYPE_PUT_NB(_uint16, uint16_t)
153 SHMEM_CTX_TYPE_PUT_NB(_uint32, uint32_t)
154 SHMEM_CTX_TYPE_PUT_NB(_uint64, uint64_t)
155 SHMEM_CTX_TYPE_PUT_NB(_size, size_t)
156 SHMEM_CTX_TYPE_PUT_NB(_ptrdiff, ptrdiff_t)
157
158 SHMEM_TYPE_PUT_NB(_char, char)
159 SHMEM_TYPE_PUT_NB(_short, short)
160 SHMEM_TYPE_PUT_NB(_int, int)
161 SHMEM_TYPE_PUT_NB(_long, long)
162 SHMEM_TYPE_PUT_NB(_longlong, long long)
163 SHMEM_TYPE_PUT_NB(_schar, signed char)
164 SHMEM_TYPE_PUT_NB(_uchar, unsigned char)
165 SHMEM_TYPE_PUT_NB(_ushort, unsigned short)
166 SHMEM_TYPE_PUT_NB(_uint, unsigned int)
167 SHMEM_TYPE_PUT_NB(_ulong, unsigned long)
168 SHMEM_TYPE_PUT_NB(_ulonglong, unsigned long long)
169 SHMEM_TYPE_PUT_NB(_float, float)
170 SHMEM_TYPE_PUT_NB(_double, double)
171 SHMEM_TYPE_PUT_NB(_longdouble, long double)
172 SHMEM_TYPE_PUT_NB(_int8, int8_t)
173 SHMEM_TYPE_PUT_NB(_int16, int16_t)
174 SHMEM_TYPE_PUT_NB(_int32, int32_t)
175 SHMEM_TYPE_PUT_NB(_int64, int64_t)
176 SHMEM_TYPE_PUT_NB(_uint8, uint8_t)
177 SHMEM_TYPE_PUT_NB(_uint16, uint16_t)
178 SHMEM_TYPE_PUT_NB(_uint32, uint32_t)
179 SHMEM_TYPE_PUT_NB(_uint64, uint64_t)
180 SHMEM_TYPE_PUT_NB(_size, size_t)
181 SHMEM_TYPE_PUT_NB(_ptrdiff, ptrdiff_t)
182
183 #define DO_SHMEM_PUTMEM_NB(ctx, target, source, element_size, nelems, pe) do { \
184 int rc = OSHMEM_SUCCESS; \
185 size_t size = 0; \
186 \
187 RUNTIME_CHECK_INIT(); \
188 RUNTIME_CHECK_PE(pe); \
189 RUNTIME_CHECK_ADDR(target); \
190 \
191 size = nelems * element_size; \
192 rc = MCA_SPML_CALL(put_nb( \
193 ctx, \
194 (void *)target, \
195 size, \
196 (void *)source, \
197 pe, NULL)); \
198 RUNTIME_CHECK_RC(rc); \
199 } while (0)
200
201 #define SHMEM_CTX_TYPE_PUTMEM_NB(name, element_size, prefix) \
202 void prefix##_ctx##name##_nbi(shmem_ctx_t ctx, void *target, const void *source, size_t nelems, int pe) \
203 { \
204 DO_SHMEM_PUTMEM_NB(ctx, target, source, element_size, \
205 nelems, pe); \
206 return ; \
207 }
208
209 #define SHMEM_TYPE_PUTMEM_NB(name, element_size, prefix) \
210 void prefix##name##_nbi(void *target, const void *source, size_t nelems, int pe) \
211 { \
212 DO_SHMEM_PUTMEM_NB(oshmem_ctx_default, target, source, \
213 element_size, nelems, pe); \
214 return ; \
215 }
216
217 SHMEM_CTX_TYPE_PUTMEM_NB(_put8, 1, shmem)
218 SHMEM_CTX_TYPE_PUTMEM_NB(_put16, 2, shmem)
219 SHMEM_CTX_TYPE_PUTMEM_NB(_put32, 4, shmem)
220 SHMEM_CTX_TYPE_PUTMEM_NB(_put64, 8, shmem)
221 SHMEM_CTX_TYPE_PUTMEM_NB(_put128, 16, shmem)
222 SHMEM_CTX_TYPE_PUTMEM_NB(_putmem, 1, shmem)
223 SHMEM_TYPE_PUTMEM_NB(_put8, 1, shmem)
224 SHMEM_TYPE_PUTMEM_NB(_put16, 2, shmem)
225 SHMEM_TYPE_PUTMEM_NB(_put32, 4, shmem)
226 SHMEM_TYPE_PUTMEM_NB(_put64, 8, shmem)
227 SHMEM_TYPE_PUTMEM_NB(_put128, 16, shmem)
228 SHMEM_TYPE_PUTMEM_NB(_putmem, 1, shmem)
229
230 void shmemx_alltoall_global_nb(void *dest,
231 const void *source,
232 size_t size,
233 long *counter)
234 {
235 int rc = MCA_SPML_CALL(put_all_nb(dest, source, size, counter));
236 RUNTIME_CHECK_RC(rc);
237 }