22inline MPI_Datatype mpi_type_i64 = MPI_INT64_T;
23inline MPI_Datatype mpi_type_i32 = MPI_INT32_T;
24inline MPI_Datatype mpi_type_i16 = MPI_INT16_T;
25inline MPI_Datatype mpi_type_i8 = MPI_INT8_T;
26inline MPI_Datatype mpi_type_u64 = MPI_UINT64_T;
27inline MPI_Datatype mpi_type_u32 = MPI_UINT32_T;
28inline MPI_Datatype mpi_type_u16 = MPI_UINT16_T;
29inline MPI_Datatype mpi_type_u8 = MPI_UINT8_T;
30inline MPI_Datatype mpi_type_f16 = MPI_SHORT;
31inline MPI_Datatype mpi_type_f32 = MPI_FLOAT;
32inline MPI_Datatype mpi_type_f64 = MPI_DOUBLE;
34inline MPI_Datatype mpi_type_i64_2;
35inline MPI_Datatype mpi_type_i32_2;
36inline MPI_Datatype mpi_type_i16_2;
37inline MPI_Datatype mpi_type_i8_2;
38inline MPI_Datatype mpi_type_u64_2;
39inline MPI_Datatype mpi_type_u32_2;
40inline MPI_Datatype mpi_type_u16_2;
41inline MPI_Datatype mpi_type_u8_2;
42inline MPI_Datatype mpi_type_f16_2;
43inline MPI_Datatype mpi_type_f32_2;
44inline MPI_Datatype mpi_type_f64_2;
46inline MPI_Datatype mpi_type_i64_3;
47inline MPI_Datatype mpi_type_i32_3;
48inline MPI_Datatype mpi_type_i16_3;
49inline MPI_Datatype mpi_type_i8_3;
50inline MPI_Datatype mpi_type_u64_3;
51inline MPI_Datatype mpi_type_u32_3;
52inline MPI_Datatype mpi_type_u16_3;
53inline MPI_Datatype mpi_type_u8_3;
54inline MPI_Datatype mpi_type_f16_3;
55inline MPI_Datatype mpi_type_f32_3;
56inline MPI_Datatype mpi_type_f64_3;
58inline MPI_Datatype mpi_type_i64_4;
59inline MPI_Datatype mpi_type_i32_4;
60inline MPI_Datatype mpi_type_i16_4;
61inline MPI_Datatype mpi_type_i8_4;
62inline MPI_Datatype mpi_type_u64_4;
63inline MPI_Datatype mpi_type_u32_4;
64inline MPI_Datatype mpi_type_u16_4;
65inline MPI_Datatype mpi_type_u8_4;
66inline MPI_Datatype mpi_type_f16_4;
67inline MPI_Datatype mpi_type_f32_4;
68inline MPI_Datatype mpi_type_f64_4;
70inline MPI_Datatype mpi_type_i64_8;
71inline MPI_Datatype mpi_type_i32_8;
72inline MPI_Datatype mpi_type_i16_8;
73inline MPI_Datatype mpi_type_i8_8;
74inline MPI_Datatype mpi_type_u64_8;
75inline MPI_Datatype mpi_type_u32_8;
76inline MPI_Datatype mpi_type_u16_8;
77inline MPI_Datatype mpi_type_u8_8;
78inline MPI_Datatype mpi_type_f16_8;
79inline MPI_Datatype mpi_type_f32_8;
80inline MPI_Datatype mpi_type_f64_8;
82inline MPI_Datatype mpi_type_i64_16;
83inline MPI_Datatype mpi_type_i32_16;
84inline MPI_Datatype mpi_type_i16_16;
85inline MPI_Datatype mpi_type_i8_16;
86inline MPI_Datatype mpi_type_u64_16;
87inline MPI_Datatype mpi_type_u32_16;
88inline MPI_Datatype mpi_type_u16_16;
89inline MPI_Datatype mpi_type_u8_16;
90inline MPI_Datatype mpi_type_f16_16;
91inline MPI_Datatype mpi_type_f32_16;
92inline MPI_Datatype mpi_type_f64_16;
95MPI_Datatype &get_mpi_type();
100inline MPI_Datatype &get_mpi_type<i64>() {
104inline MPI_Datatype &get_mpi_type<i32>() {
108inline MPI_Datatype &get_mpi_type<i16>() {
112inline MPI_Datatype &get_mpi_type<i8>() {
116inline MPI_Datatype &get_mpi_type<u64>() {
120inline MPI_Datatype &get_mpi_type<u32>() {
126 #if SIZE_MAX == UCHAR_MAX
127 #define _MPI_TYPE_SIZE_T MPI_UNSIGNED_CHAR;
128 #elif SIZE_MAX == USHRT_MAX
129 #define _MPI_TYPE_SIZE_T MPI_UNSIGNED_SHORT;
130 #elif SIZE_MAX == UINT_MAX
131 #define _MPI_TYPE_SIZE_T MPI_UNSIGNED;
132 #elif SIZE_MAX == ULONG_MAX
133 #define _MPI_TYPE_SIZE_T MPI_UNSIGNED_LONG;
134 #elif SIZE_MAX == ULLONG_MAX
135 #define _MPI_TYPE_SIZE_T MPI_UNSIGNED_LONG_LONG;
137 #error "what is happening here?"
139inline MPI_Datatype mpi_type_size_t = _MPI_TYPE_SIZE_T;
141inline MPI_Datatype &get_mpi_type<size_t>() {
142 return mpi_type_size_t;
147inline MPI_Datatype &get_mpi_type<u16>() {
151inline MPI_Datatype &get_mpi_type<u8>() {
156inline MPI_Datatype &get_mpi_type<f32>() {
160inline MPI_Datatype &get_mpi_type<f64>() {
165inline MPI_Datatype &get_mpi_type<i64_2>() {
166 return mpi_type_i64_2;
169inline MPI_Datatype &get_mpi_type<i32_2>() {
170 return mpi_type_i32_2;
173inline MPI_Datatype &get_mpi_type<i16_2>() {
174 return mpi_type_i16_2;
177inline MPI_Datatype &get_mpi_type<i8_2>() {
178 return mpi_type_i8_2;
181inline MPI_Datatype &get_mpi_type<u64_2>() {
182 return mpi_type_u64_2;
185inline MPI_Datatype &get_mpi_type<u32_2>() {
186 return mpi_type_u32_2;
189inline MPI_Datatype &get_mpi_type<u16_2>() {
190 return mpi_type_u16_2;
193inline MPI_Datatype &get_mpi_type<u8_2>() {
194 return mpi_type_u8_2;
198inline MPI_Datatype &get_mpi_type<f32_2>() {
199 return mpi_type_f32_2;
202inline MPI_Datatype &get_mpi_type<f64_2>() {
203 return mpi_type_f64_2;
207inline MPI_Datatype &get_mpi_type<i64_3>() {
208 return mpi_type_i64_3;
211inline MPI_Datatype &get_mpi_type<i32_3>() {
212 return mpi_type_i32_3;
215inline MPI_Datatype &get_mpi_type<i16_3>() {
216 return mpi_type_i16_3;
219inline MPI_Datatype &get_mpi_type<i8_3>() {
220 return mpi_type_i8_3;
223inline MPI_Datatype &get_mpi_type<u64_3>() {
224 return mpi_type_u64_3;
227inline MPI_Datatype &get_mpi_type<u32_3>() {
228 return mpi_type_u32_3;
231inline MPI_Datatype &get_mpi_type<u16_3>() {
232 return mpi_type_u16_3;
235inline MPI_Datatype &get_mpi_type<u8_3>() {
236 return mpi_type_u8_3;
240inline MPI_Datatype &get_mpi_type<f32_3>() {
241 return mpi_type_f32_3;
244inline MPI_Datatype &get_mpi_type<f64_3>() {
245 return mpi_type_f64_3;
249inline MPI_Datatype &get_mpi_type<i64_4>() {
250 return mpi_type_i64_4;
253inline MPI_Datatype &get_mpi_type<i32_4>() {
254 return mpi_type_i32_4;
257inline MPI_Datatype &get_mpi_type<i16_4>() {
258 return mpi_type_i16_4;
261inline MPI_Datatype &get_mpi_type<i8_4>() {
262 return mpi_type_i8_4;
265inline MPI_Datatype &get_mpi_type<u64_4>() {
266 return mpi_type_u64_4;
269inline MPI_Datatype &get_mpi_type<u32_4>() {
270 return mpi_type_u32_4;
273inline MPI_Datatype &get_mpi_type<u16_4>() {
274 return mpi_type_u16_4;
277inline MPI_Datatype &get_mpi_type<u8_4>() {
278 return mpi_type_u8_4;
282inline MPI_Datatype &get_mpi_type<f32_4>() {
283 return mpi_type_f32_4;
286inline MPI_Datatype &get_mpi_type<f64_4>() {
287 return mpi_type_f64_4;
291inline MPI_Datatype &get_mpi_type<i64_8>() {
292 return mpi_type_i64_8;
295inline MPI_Datatype &get_mpi_type<i32_8>() {
296 return mpi_type_i32_8;
299inline MPI_Datatype &get_mpi_type<i16_8>() {
300 return mpi_type_i16_8;
303inline MPI_Datatype &get_mpi_type<i8_8>() {
304 return mpi_type_i8_8;
307inline MPI_Datatype &get_mpi_type<u64_8>() {
308 return mpi_type_u64_8;
311inline MPI_Datatype &get_mpi_type<u32_8>() {
312 return mpi_type_u32_8;
315inline MPI_Datatype &get_mpi_type<u16_8>() {
316 return mpi_type_u16_8;
319inline MPI_Datatype &get_mpi_type<u8_8>() {
320 return mpi_type_u8_8;
324inline MPI_Datatype &get_mpi_type<f32_8>() {
325 return mpi_type_f32_8;
328inline MPI_Datatype &get_mpi_type<f64_8>() {
329 return mpi_type_f64_8;
333inline MPI_Datatype &get_mpi_type<i64_16>() {
334 return mpi_type_i64_16;
337inline MPI_Datatype &get_mpi_type<i32_16>() {
338 return mpi_type_i32_16;
341inline MPI_Datatype &get_mpi_type<i16_16>() {
342 return mpi_type_i16_16;
345inline MPI_Datatype &get_mpi_type<i8_16>() {
346 return mpi_type_i8_16;
349inline MPI_Datatype &get_mpi_type<u64_16>() {
350 return mpi_type_u64_16;
353inline MPI_Datatype &get_mpi_type<u32_16>() {
354 return mpi_type_u32_16;
357inline MPI_Datatype &get_mpi_type<u16_16>() {
358 return mpi_type_u16_16;
361inline MPI_Datatype &get_mpi_type<u8_16>() {
362 return mpi_type_u8_16;
366inline MPI_Datatype &get_mpi_type<f32_16>() {
367 return mpi_type_f32_16;
370inline MPI_Datatype &get_mpi_type<f64_16>() {
371 return mpi_type_f64_16;
374void create_sycl_mpi_types();
375void free_sycl_mpi_types();
376bool is_mpi_sycl_interop_active();
Use this header to include MPI properly.