libxmp/libxmpf in Omni Compiler  1.3.4
xmp_internal.h
Go to the documentation of this file.
1 #ifndef MPI_PORTABLE_PLATFORM_H
2 #define MPI_PORTABLE_PLATFORM_H
3 #endif
4 
5 #ifndef _XMP_INTERNAL
6 #define _XMP_INTERNAL
7 
8 extern int _XMPC_running;
9 extern int _XMPF_running;
10 
11 #ifndef MIN
12 #define MIN(a,b) ( (a)<(b) ? (a) : (b) )
13 #endif
14 
15 #ifndef MAX
16 #define MAX(a,b) ( (a)>(b) ? (a) : (b) )
17 #endif
18 // --------------- including headers --------------------------------
19 #include <mpi.h>
20 #include <stdio.h>
21 #include <stddef.h>
22 #include <stdarg.h>
23 #include <stdint.h>
24 #include <string.h>
25 // --------------- macro functions -----------------------------------
26 #ifdef DEBUG
27 #define _XMP_ASSERT(_flag) \
28 { \
29  if (!(_flag)) { \
30  _XMP_unexpected_error(); \
31  } \
32 }
33 #else
34 #define _XMP_ASSERT(_flag)
35 #endif
36 
37 #define _XMP_RETURN_IF_SINGLE \
38 { \
39  if (_XMP_world_size == 1) { \
40  return; \
41  } \
42 }
43 
44 extern int xmp_get_ruuning();
45 #define _XMP_RETURN_IF_AFTER_FINALIZATION \
46  { \
47  if (! xmp_get_ruuning()) return; \
48  }
49 
50 #define _XMP_IS_SINGLE \
51 (_XMP_world_size == 1)
52 
53 // --------------- structures ----------------------------------------
54 #include "xmp_data_struct.h"
55 
56 #ifdef __cplusplus
57 extern "C" {
58 #define restrict __restrict__
59 #define template template_
60 #endif
61 
62 // ----- extern variables ------------------------------------------------------
63 extern void (*_xmp_pack_array)(void *buffer, void *src, int array_type, size_t array_type_size,
64  int array_dim, int *l, int *u, int *s, unsigned long long *d);
65 extern void (*_xmp_unpack_array)(void *dst, void *buffer, int array_type, size_t array_type_size,
66  int array_dim, int *l, int *u, int *s, unsigned long long *d);
67 
68 // ----- libxmp ------------------------------------------------------
69 // xmp_align.c
70 extern void _XMP_calc_array_dim_elmts(_XMP_array_t *array, int array_index);
71 extern void _XMP_init_array_desc(_XMP_array_t **array, _XMP_template_t *template, int dim,
72  int type, size_t type_size, ...);
73 extern void _XMP_init_array_desc_NOT_ALIGNED(_XMP_array_t **adesc, _XMP_template_t *template, int ndims,
74  int type, size_t type_size, unsigned long long *dim_acc, void *ap);
75 extern void _XMP_finalize_array_desc(_XMP_array_t *array);
76 extern void _XMP_align_array_NOT_ALIGNED(_XMP_array_t *array, int array_index);
77 extern void _XMP_align_array_DUPLICATION(_XMP_array_t *array, int array_index, int template_index,
78  long long align_subscript);
79 extern void _XMP_align_array_BLOCK(_XMP_array_t *array, int array_index, int template_index,
80  long long align_subscript, int *temp0);
81 extern void _XMP_align_array_CYCLIC(_XMP_array_t *array, int array_index, int template_index,
82  long long align_subscript, int *temp0);
83 extern void _XMP_align_array_BLOCK_CYCLIC(_XMP_array_t *array, int array_index, int template_index,
84  long long align_subscript, int *temp0);
85 extern void _XMP_align_array_GBLOCK(_XMP_array_t *array, int array_index, int template_index,
86  long long align_subscript, int *temp0);
87 extern void _XMP_init_array_nodes(_XMP_array_t *array);
88 extern void _XMP_init_array_comm(_XMP_array_t *array, ...);
89 extern void _XMP_init_array_comm2(_XMP_array_t *array, int args[]);
90 extern void _XMP_alloc_array(void **array_addr, _XMP_array_t *array_desc, int is_coarray, ...);
91 extern void _XMP_alloc_array2(void **array_addr, _XMP_array_t *array_desc, int is_coarray, unsigned long long *acc[]);
92 extern void _XMP_dealloc_array(_XMP_array_t *array_desc);
93 
94 // xmp_array_section.c
95 extern void _XMP_normalize_array_section(_XMP_gmv_desc_t *gmv_desc, int idim, int *lower, int *upper, int *stride);
96 /* // FIXME make these static */
97 /* extern void _XMPC_pack_array_BASIC(void *buffer, void *src, int array_type, */
98 /* int array_dim, int *l, int *u, int *s, unsigned long long *d); */
99 /* extern void _XMPC_pack_array_GENERAL(void *buffer, void *src, size_t array_type_size, */
100 /* int array_dim, int *l, int *u, int *s, unsigned long long *d); */
101 /* extern void _XMPC_unpack_array_BASIC(void *dst, void *buffer, int array_type, */
102 /* int array_dim, int *l, int *u, int *s, unsigned long long *d); */
103 /* extern void _XMPC_unpack_array_GENERAL(void *dst, void *buffer, size_t array_type_size, */
104 /* int array_dim, int *l, int *u, int *s, unsigned long long *d); */
105 /* extern void _XMP_pack_array(void *buffer, void *src, int array_type, size_t array_type_size, */
106 /* int array_dim, int *l, int *u, int *s, unsigned long long *d); */
107 /* extern void _XMP_unpack_array(void *dst, void *buffer, int array_type, size_t array_type_size, */
108 /* int array_dim, int *l, int *u, int *s, unsigned long long *d); */
109 extern void _XMPC_pack_array(void *buffer, void *src, int array_type, size_t array_type_size,
110  int array_dim, int *l, int *u, int *s, unsigned long long *d);
111 extern void _XMPC_unpack_array(void *dst, void *buffer, int array_type, size_t array_type_size,
112  int array_dim, int *l, int *u, int *s, unsigned long long *d);
113 
114 // xmp_async.c
116 extern void _XMP_initialize_async_comm_tab();
118 extern void xmpc_end_async(int);
119 
120 // xmp_barrier.c
121 extern void _XMP_barrier_NODES_ENTIRE(_XMP_nodes_t *nodes);
122 extern void _XMP_barrier_EXEC(void);
123 
124 // xmp_bcast.c
125 extern void _XMP_bcast_NODES_ENTIRE_OMITTED(_XMP_nodes_t *bcast_nodes, void *addr, int count, size_t datatype_size);
126 extern void _XMP_bcast_NODES_ENTIRE_NODES(_XMP_nodes_t *bcast_nodes, void *addr, int count, size_t datatype_size,
127  _XMP_nodes_t *from_nodes, ...);
128 extern void _XMP_bcast_NODES_ENTIRE_NODES_V(_XMP_nodes_t *bcast_nodes, void *addr, int count, size_t datatype_size,
129  _XMP_nodes_t *from_nodes, va_list args);
130 
131 // xmp_coarray.c
132 typedef struct _XMP_coarray_list_type {
136 
139 
140 #ifdef _XMP_MPI3_ONESIDED
141 extern void _XMP_coarray_malloc_info_n(const long*, const int, const size_t);
142 extern void _XMP_coarray_malloc_image_info_n(const int*, const int);
143 extern void _XMP_coarray_attach(_XMP_coarray_t*, void*, const size_t);
144 extern void _XMP_coarray_detach(_XMP_coarray_t*);
145 extern void _XMP_coarray_rdma_coarray_set_n(const int, const long[], const long[], const long[]);
146 extern void _XMP_coarray_rdma_array_set_1(const long start1, const long length1, const long stride1,
147  const long elmts1, const size_t elmt);
148 extern void _XMP_coarray_rdma_array_set_n(const int, const long[], const long[], const long[],
149  const long[], const long[]);
150 extern void _XMP_coarray_rdma_image_set_n(const int, const int[]);
151 extern void _XMP_coarray_put(void*, void*, void*);
152 extern void _XMP_coarray_get(void*, void*, void*);
153 extern void _XMP_coarray_rdma_do2(const int rdma_code, void *remote_coarray, void *local_array, void *local_coarray,
154  const long coarray_elmts[], const long coarray_distance[]);
155 extern _XMP_coarray_t** _XMP_coarray_get_list(int *num);
156 #endif
157 
160 extern void _XMP_build_sync_images_table();
161 extern void _XMP_sync_images_EXEC(int* status);
162 extern void _XMP_build_coarray_queue();
163 extern void _XMP_coarray_lastly_deallocate();
164 extern void _XMP_mpi_coarray_deallocate(_XMP_coarray_t *, bool is_acc);
165 extern size_t _XMP_calc_copy_chunk(const int, const _XMP_array_section_t*);
166 extern int _XMP_get_dim_of_allelmts(const int, const _XMP_array_section_t*);
167 extern void _XMP_local_put(_XMP_coarray_t *, const void *, const int, const int, const int, const int,
168  const _XMP_array_section_t *, const _XMP_array_section_t *, const size_t, const size_t);
169 extern void _XMP_local_get(void *, const _XMP_coarray_t *, const int, const int, const int, const int,
170  const _XMP_array_section_t *, const _XMP_array_section_t *, const size_t, const size_t);
171 
172 // From xmp_index.c
173 extern void _XMP_L2G(int local_idx, long long int *global_idx,
174  _XMP_template_t *template, int template_index);
175 extern void _XMP_G2L(long long int global_idx,int *local_idx,
176  _XMP_template_t *template, int template_index);
177 
178 // xmp_intrinsic.c
179 extern void xmpf_transpose(void *dst_p, void *src_p, int opt);
180 extern void xmpf_matmul(void *x_p, void *a_p, void *b_p);
181 extern void xmpf_pack_mask(void *v_p, void *a_p, void *m_p);
182 extern void xmpf_pack_nomask(void *v_p, void *a_p);
183 extern void xmpf_pack(void *v_p, void *a_p, void *m_p);
184 extern void xmpf_unpack_mask(void *a_p, void *v_p, void *m_p);
185 extern void xmpf_unpack_nomask(void *a_p, void *v_p);
186 extern void xmpf_unpack(void *a_p, void *v_p, void *m_p);
187 
188 // xmp_gmove.c
189 extern void _XMP_gtol_array_ref_triplet(_XMP_array_t *array,
190  int dim_index, int *lower, int *upper, int *stride);
191 extern int _XMP_calc_gmove_array_owner_linear_rank_SCALAR(_XMP_array_t *array, int *ref_index);
192 extern void _XMP_gmove_bcast_SCALAR(void *dst_addr, void *src_addr,
193  size_t type_size, int root_rank);
194 extern unsigned long long _XMP_gmove_bcast_ARRAY(void *dst_addr, int dst_dim,
195  int *dst_l, int *dst_u, int *dst_s, unsigned long long *dst_d,
196  void *src_addr, int src_dim,
197  int *src_l, int *src_u, int *src_s, unsigned long long *src_d,
198  int type, size_t type_size, int root_rank);
199 extern int _XMP_check_gmove_array_ref_inclusion_SCALAR(_XMP_array_t *array, int array_index,
200  int ref_index);
201 extern void _XMP_gmove_localcopy_ARRAY(int type, int type_size,
202  void *dst_addr, int dst_dim,
203  int *dst_l, int *dst_u, int *dst_s, unsigned long long *dst_d,
204  void *src_addr, int src_dim,
205  int *src_l, int *src_u, int *src_s, unsigned long long *src_d);
206 extern int _XMP_calc_global_index_HOMECOPY(_XMP_array_t *dst_array, int dst_dim_index,
207  int *dst_l, int *dst_u, int *dst_s,
208  int *src_l, int *src_u, int *src_s);
209 extern int _XMP_calc_global_index_BCAST(int dst_dim, int *dst_l, int *dst_u, int *dst_s,
210  _XMP_array_t *src_array, int *src_array_nodes_ref,
211  int *src_l, int *src_u, int *src_s);
212 extern void _XMP_gmove_array_array_common(_XMP_gmv_desc_t *gmv_desc_leftp, _XMP_gmv_desc_t *gmv_desc_rightp,
213  int *dst_l, int *dst_u, int *dst_s, unsigned long long *dst_d,
214  int *src_l, int *src_u, int *src_s, unsigned long long *src_d, int mode);
215 extern void _XMP_gmove_inout_scalar(void *scalar, _XMP_gmv_desc_t *gmv_desc, int rdma_type);
216 extern unsigned long long _XMP_gtol_calc_offset(_XMP_array_t *a, int g_idx[]);
217 extern void _XMP_gmove_scalar_garray(void *scalar, _XMP_gmv_desc_t *gmv_desc_rightp, int mode);
218 extern void _XMP_gmove_garray_scalar(_XMP_gmv_desc_t *gmv_desc_leftp, void *scalar, int mode);
219 extern void _XMP_gmove_garray_garray(_XMP_gmv_desc_t *gmv_desc_leftp, _XMP_gmv_desc_t *gmv_desc_rightp, int mode);
220 extern void _XMP_gmove_garray_larray(_XMP_gmv_desc_t *gmv_desc_leftp, _XMP_gmv_desc_t *gmv_desc_rightp, int mode);
221 extern void _XMP_gmove_larray_garray(_XMP_gmv_desc_t *gmv_desc_leftp, _XMP_gmv_desc_t *gmv_desc_rightp, int mode);
222 
223 // xmp_loop.c
224 extern int _XMP_sched_loop_template_width_1(int ser_init, int ser_cond, int ser_step,
225  int *par_init, int *par_cond, int *par_step,
226  int template_lower, int template_upper, int template_stride);
227 extern int _XMP_sched_loop_template_width_N(int ser_init, int ser_cond, int ser_step,
228  int *par_init, int *par_cond, int *par_step,
229  int template_lower, int template_upper, int template_stride,
230  int width, int template_ser_lower, int template_ser_upper);
231 extern void _XMP_sched_loop_template_DUPLICATION(int ser_init, int ser_cond, int ser_step,
232  int *par_init, int *par_cond, int *par_step,
233  _XMP_template_t *template, int template_index);
234 extern void _XMP_sched_loop_template_BLOCK(int ser_init, int ser_cond, int ser_step,
235  int *par_init, int *par_cond, int *par_step,
236  _XMP_template_t *template, int template_index);
237 extern void _XMP_sched_loop_template_CYCLIC(int ser_init, int ser_cond, int ser_step,
238  int *par_init, int *par_cond, int *par_step,
239  _XMP_template_t *template, int template_index);
240 extern void _XMP_sched_loop_template_BLOCK_CYCLIC(int ser_init, int ser_cond, int ser_step,
241  int *par_init, int *par_cond, int *par_step,
242  _XMP_template_t *template, int template_index);
243 extern void _XMP_sched_loop_template_GBLOCK(int ser_init, int ser_cond, int ser_step,
244  int *par_init, int *par_cond, int *par_step,
245  _XMP_template_t *template, int template_index);
246 
247 // xmp_nodes.c
249 extern _XMP_nodes_t *_XMP_init_nodes_struct_GLOBAL(int dim, int *dim_size, int is_static);
250 extern _XMP_nodes_t *_XMP_init_nodes_struct_EXEC(int dim, int *dim_size, int is_static);
251 extern _XMP_nodes_t *_XMP_init_nodes_struct_NODES_NUMBER(int dim, int ref_lower, int ref_upper, int ref_stride,
252  int *dim_size, int is_static);
254  int *shrink, int *ref_lower, int *ref_upper, int *ref_stride,
255  int *dim_size, int is_static);
256 extern void _XMP_finalize_nodes(_XMP_nodes_t *nodes);
257 extern _XMP_nodes_t *_XMP_create_nodes_by_comm(int is_member, _XMP_comm_t *comm);
258 extern void _XMP_calc_rank_array(_XMP_nodes_t *n, int *rank_array, int linear_rank);
259 extern int _XMP_calc_linear_rank(_XMP_nodes_t *n, int *rank_array);
260 extern int _XMP_calc_linear_rank_on_target_nodes(_XMP_nodes_t *n, int *rank_array, _XMP_nodes_t *target_nodes);
261 extern _Bool _XMP_calc_coord_on_target_nodes2(_XMP_nodes_t *n, int *ncoord,
262  _XMP_nodes_t *target_n, int *target_ncoord);
263 extern _Bool _XMP_calc_coord_on_target_nodes(_XMP_nodes_t *n, int *ncoord,
264  _XMP_nodes_t *target_n, int *target_ncoord);
265 extern _XMP_nodes_ref_t *_XMP_init_nodes_ref(_XMP_nodes_t *n, int *rank_array);
266 extern void _XMP_finalize_nodes_ref(_XMP_nodes_ref_t *nodes_ref);
267 extern _XMP_nodes_ref_t *_XMP_create_nodes_ref_for_target_nodes(_XMP_nodes_t *n, int *rank_array, _XMP_nodes_t *target_nodes);
268 extern void _XMP_translate_nodes_rank_array_to_ranks(_XMP_nodes_t *nodes, int *ranks, int *rank_array, int shrink_nodes_size);
269 extern int _XMP_get_next_rank(_XMP_nodes_t *nodes, int *rank_array);
270 extern int _XMP_calc_nodes_index_from_inherit_nodes_index(_XMP_nodes_t *nodes, int inherit_nodes_index);
271 
272 // xmp_nodes_stack.c
273 extern void _XMP_push_nodes(_XMP_nodes_t *nodes);
274 extern void _XMP_pop_nodes(void);
275 extern void _XMP_pop_n_free_nodes(void);
278 extern int _XMP_get_execution_nodes_rank(void);
279 extern void _XMP_push_comm(_XMP_comm_t *comm);
280 extern void _XMP_finalize_comm(_XMP_comm_t *comm);
281 
282 /* xmpf_pack_vector.c */
283 void _XMP_pack_vector(char * restrict dst, char * restrict src,
284  int count, int blocklength, long stride);
285 void _XMP_pack_vector2(char * restrict dst, char * restrict src,
286  int count, int blocklength,
287  int nnodes, int type_size, int src_block_dim);
288 void _XMP_unpack_vector(char * restrict dst, char * restrict src,
289  int count, int blocklength, long stride);
290 void _XMPF_unpack_transpose_vector(char * restrict dst, char * restrict src,
291  int dst_stride, int src_stride,
292  int type_size, int dst_block_dim);
293 void _XMP_check_reflect_type(void);
294 
295 // xmp_reduce.c
296 extern void _XMP_reduce_NODES_ENTIRE(_XMP_nodes_t *nodes, void *addr, int count, int datatype, int op);
298  void *addr, int count, int datatype, int op,
299  int num_locs, void **loc_vars, int *loc_types);
300 extern void _XMP_reduce_CLAUSE(void *data_addr, int count, int datatype, int op);
301 extern void xmp_reduce_initialize();
302 
303 // xmp_reflect.c
304 extern void _XMP_set_reflect__(_XMP_array_t *a, int dim, int lwidth, int uwidth,
305  int is_periodic);
306 extern void _XMP_reflect__(_XMP_array_t *a);
307 extern void _XMP_wait_async__(int async_id);
308 extern void _XMP_reflect_async__(_XMP_array_t *a, int async_id);
309 
310 // xmp_reduce_shadow.c
311 extern void _XMP_reduce_shadow_wait(_XMP_array_t *a);
312 extern void _XMP_reduce_shadow_sum(_XMP_array_t *a);
313 
314 // xmp_runtime.c
315 extern void _XMP_init(int argc, char** argv, MPI_Comm comm);
316 extern void _XMP_finalize(bool isFinalize);
317 extern size_t _XMP_get_datatype_size(int datatype);
318 
319 // xmp_section_desc.c
320 extern void print_rsd(_XMP_rsd_t *rsd);
321 extern void print_bsd(_XMP_bsd_t *bsd);
322 extern void print_csd(_XMP_csd_t *csd);
323 extern void print_comm_set(_XMP_comm_set_t *comm_set0);
324 extern _XMP_rsd_t *intersection_rsds(_XMP_rsd_t *_rsd1, _XMP_rsd_t *_rsd2);
325 extern _XMP_csd_t *intersection_csds(_XMP_csd_t *csd1, _XMP_csd_t *csd2);
326 extern _XMP_csd_t *alloc_csd(int n);
327 extern void free_csd(_XMP_csd_t *csd);
328 extern _XMP_csd_t *copy_csd(_XMP_csd_t *csd);
329 extern int get_csd_size(_XMP_csd_t *csd);
330 extern void free_comm_set(_XMP_comm_set_t *comm_set);
331 extern _XMP_csd_t *rsd2csd(_XMP_rsd_t *rsd);
332 extern _XMP_csd_t *bsd2csd(_XMP_bsd_t *bsd);
334 extern void reduce_csd(_XMP_csd_t *csd[_XMP_N_MAX_DIM], int ndims);
335 
336 // xmp_shadow.c
337 extern void _XMP_create_shadow_comm(_XMP_array_t *array, int array_index);
338 extern void _XMP_reflect_shadow_FULL(void *array_addr, _XMP_array_t *array_desc, int array_index);
340 extern void _XMP_finalize_reflect_sched(_XMP_reflect_sched_t *sched, _Bool free_buf);
341 extern void _XMP_init_shadow(_XMP_array_t *array, ...);
342 
343 // xmp_sort.c
344 extern void _XMP_sort(_XMP_array_t *a_desc, _XMP_array_t *b_desc, int is_up);
345 
346 // xmp_template.c
347 extern int xmpc_ltog(int local_idx, _XMP_template_t *template, int template_index, int offset);
348 extern _XMP_template_t *_XMP_create_template_desc(int dim, _Bool is_fixed);
349 extern int _XMP_check_template_ref_inclusion(int ref_lower, int ref_upper, int ref_stride,
350  _XMP_template_t *t, int index);
351 extern void _XMP_init_template_FIXED(_XMP_template_t **template, int dim, ...);
352 extern _XMP_nodes_t *_XMP_create_nodes_by_template_ref(_XMP_template_t *ref_template, int *shrink,
353  long long *ref_lower, long long *ref_upper, long long *ref_stride);
354 
356 extern void _XMP_init_template_chunk(_XMP_template_t *template, _XMP_nodes_t *nodes);
357 extern void _XMP_finalize_template(_XMP_template_t *template);
358 extern int _XMP_calc_template_owner_SCALAR(_XMP_template_t *ref_template, int dim_index, long long ref_index);
359 extern int _XMP_calc_template_par_triplet(_XMP_template_t *template, int template_index, int nodes_rank,
360  int *template_lower, int *template_upper, int *template_stride);
361 
362 void _XMP_dist_template_DUPLICATION(_XMP_template_t *template, int template_index);
363 void _XMP_dist_template_BLOCK(_XMP_template_t *template, int template_index, int nodes_index);
364 void _XMP_dist_template_CYCLIC(_XMP_template_t *template, int template_index, int nodes_index) ;
365 void _XMP_dist_template_BLOCK_CYCLIC(_XMP_template_t *template, int template_index, int nodes_index, unsigned long long width);
366 void _XMP_dist_template_GBLOCK(_XMP_template_t *template, int template_index, int nodes_index,
367  int *mapping_array, int *temp0);
368 
369 // xmp_util.c
370 extern unsigned long long _XMP_get_on_ref_id(void);
371 extern void *_XMP_alloc(size_t size);
372 extern void _XMP_free(void *p);
373 extern void _XMP_fatal(char *msg);
374 extern void _XMP_fatal_nomsg();
375 extern void _XMP_unexpected_error(void);
376 extern void _XMP_warning(char *msg);
377 
378 // xmp_world.c
379 extern int _XMP_world_size;
380 extern int _XMP_world_rank;
381 extern void *_XMP_world_nodes;
382 
383 extern void _XMP_init_world(int *argc, char ***argv);
384 extern void _XMP_finalize_world(bool);
385 extern int _XMP_split_world_by_color(int color);
386 
387 
388 // xmp_async.c
389 extern _Bool xmp_is_async();
390 
391 #ifdef _XMP_XACC
392 extern void _XMP_reflect_gpu(void *dev_addr, _XMP_array_t *a);
393 extern void _XMP_reflect_do_gpu(_XMP_array_t *array_desc);
394 extern void _XMP_reflect_init_gpu(void *acc_addr, _XMP_array_t *array_desc);
395 extern int _XMP_get_owner_pos(_XMP_array_t *a, int dim, int index);
396 extern void _XMP_reduce_gpu_NODES_ENTIRE(_XMP_nodes_t *nodes, void *addr, int count, int datatype, int op);
397 extern void _XMP_reduce_gpu_CLAUSE(void *data_addr, int count, int datatype, int op);
398 extern void _XMP_set_reflect_gpu(_XMP_array_t *a, int dim, int lwidth, int uwidth, int is_periodic);
399 extern void _XMP_reflect_acc__(void *acc_addr, _XMP_array_t *array_desc);
400 extern void _XMP_set_reflect_acc__(_XMP_array_t *a, int dim, int lwidth, int uwidth, int is_periodic);
403 extern void _XMP_finalize_reflect_sched_acc(_XMP_reflect_sched_t *reflect, _Bool free_buf);
404 extern void _XMP_finalize_reflect_sched_gpu(_XMP_reflect_sched_t *reflect, _Bool free_buf);
405 #endif
406 
407 // ----- libxmp_threads ----------------------------------------------
408 // xmp_threads_runtime.c
409 extern void _XMP_threads_init(void);
410 extern void _XMP_threads_finalize(void);
411 
412 #ifdef __cplusplus
413 }
414 #endif
415 
416 // ----- for coarray & post/wait -------------------
417 #if defined(_XMP_GASNET) || defined(_XMP_FJRDMA) || defined(_XMP_TCA) || defined(_XMP_MPI3_ONESIDED) || defined(_XMP_UTOFU)
418 #define _XMP_DEFAULT_ONESIDED_HEAP_SIZE "27M"
419 #define _XMP_DEFAULT_ONESIDED_STRIDE_SIZE "5M"
420 /* Momo:
421  Each process allocates 32MByte (27M+5M), and the test program uses up to 16 process
422  on a single node. Therefore the node needs 512MByte (32M*16) for coarray operation.
423 */
424 
425 #define _XMP_COARRAY_QUEUE_INITIAL_SIZE 32
426 #define _XMP_COARRAY_QUEUE_INCREMENT_RAITO (1.5)
427 #define _XMP_GASNET_COARRAY_SHIFT_QUEUE_INITIAL_SIZE _XMP_COARRAY_QUEUE_INITIAL_SIZE
428 #define _XMP_GASNET_COARRAY_SHIFT_QUEUE_INCREMENT_RAITO _XMP_COARRAY_QUEUE_INCREMENT_RAITO
430 #define _XMP_POSTREQ_TABLE_INITIAL_SIZE 32
431 #define _XMP_POSTREQ_TABLE_INCREMENT_RATIO (1.5)
432 extern void _XMP_check_less_than_SIZE_MAX(const long s);
433 extern size_t _XMP_get_offset(const _XMP_array_section_t *, const int);
434 extern void _XMP_coarray_set_info(_XMP_coarray_t* c);
435 extern void _XMP_post_wait_initialize();
436 #define _XMP_PACK 0
437 #define _XMP_UNPACK 1
438 #define _XMP_SCALAR_MCOPY 2
439 extern void _XMP_stride_memcpy_1dim(char *, const char *, const _XMP_array_section_t *, size_t, const int);
440 extern void _XMP_stride_memcpy_2dim(char *, const char *, const _XMP_array_section_t *, size_t, const int);
441 extern void _XMP_stride_memcpy_3dim(char *, const char *, const _XMP_array_section_t *, size_t, const int);
442 extern void _XMP_stride_memcpy_4dim(char *, const char *, const _XMP_array_section_t *, size_t, const int);
443 extern void _XMP_stride_memcpy_5dim(char *, const char *, const _XMP_array_section_t *, size_t, const int);
444 extern void _XMP_stride_memcpy_6dim(char *, const char *, const _XMP_array_section_t *, size_t, const int);
445 extern void _XMP_stride_memcpy_7dim(char *, const char *, const _XMP_array_section_t *, size_t, const int);
446 
447 extern void _XMP_set_coarray_addresses_with_chunk(uint64_t *, const uint64_t, const _XMP_array_section_t *, const int, const size_t, const size_t);
448 extern void _XMP_set_coarray_addresses(const uint64_t, const _XMP_array_section_t *, const int, const size_t, uint64_t *);
449 extern int _is_all_element(const _XMP_array_section_t *, int);
450 extern int _check_round(const _XMP_array_section_t *, const int);
451 extern int _is_constant_stride_1dim();
458 extern int _is_the_same_shape_except_for_start(const _XMP_array_section_t *, const _XMP_array_section_t *, const int, const int);
459 extern int _XMP_is_the_same_constant_stride(const _XMP_array_section_t *, const _XMP_array_section_t *, const int, const int);
460 // extern size_t _XMP_calc_stride(const _XMP_array_section_t *, const int, const size_t);
461 extern long _XMP_calc_stride(const _XMP_array_section_t *, const int, const size_t);
462 
463 extern _Bool _XMP_check_overlapping(const char *dst_start, const char *dst_end, const char *src_start, const char *src_end);
464 extern void _XMP_local_contiguous_copy(char *, const char *, const size_t, const size_t, const size_t);
465 extern size_t _XMP_calc_max_copy_chunk(const int, const int, const _XMP_array_section_t *, const _XMP_array_section_t *);
466 #endif
467 
468 #ifdef _XMP_GASNET
469 #include <gasnet.h>
470 #define _XMP_GASNET_STRIDE_INIT_SIZE 32
471 #define _XMP_GASNET_STRIDE_INCREMENT_RATIO (1.5)
472 #define _XMP_GASNET_ALIGNMENT 8
473 
474 #define _XMP_GASNET_ATOMIC_INIT_SIZE 32
475 #define _XMP_GASNET_ATOMIC_INCREMENT_RATIO (1.5)
477 #define GASNET_BARRIER() do { \
478  gasnet_barrier_notify(0,GASNET_BARRIERFLAG_ANONYMOUS); \
479  gasnet_barrier_wait(0,GASNET_BARRIERFLAG_ANONYMOUS); \
480  } while (0)
481 
482 
483 extern void _XMP_gasnet_coarray_malloc(_XMP_coarray_t *, void **, const size_t);
484 extern void _XMP_gasnet_initialize(const size_t, const size_t);
486 extern void _XMP_gasnet_finalize();
487 extern void _XMP_gasnet_put(const int, const int, const int, const int, const int, const _XMP_array_section_t*,
488  const _XMP_array_section_t*, const _XMP_coarray_t*, const void*, const size_t, const size_t);
489 extern void _XMP_gasnet_get(const int, const int, const int, const int, const int, const _XMP_array_section_t*,
490  const _XMP_array_section_t*, const _XMP_coarray_t*, const void*, const size_t, const size_t);
491 extern void _XMP_gasnet_sync_all();
492 extern void _XMP_gasnet_sync_memory();
494 extern void _XMP_gasnet_sync_images(const int, int*, int*);
496 extern void _xmp_gasnet_post(const int, const int);
497 extern void _xmp_gasnet_wait_noargs();
498 extern void _xmp_gasnet_wait_node(const int);
499 extern void _xmp_gasnet_wait(const int, const int);
501 extern void _XMP_gasnet_contiguous_put(const int, _XMP_coarray_t*, void*,
502  const size_t, const size_t, const size_t, const size_t);
503 extern void _XMP_gasnet_contiguous_get(const int, _XMP_coarray_t*, void*,
504  const size_t, const size_t, const size_t, const size_t);
505 extern void _xmp_gasnet_post_sync_images(const int, const int*);
506 extern void _xmp_gasnet_wait_sync_images(const int, const int*);
507 extern void _xmp_gasnet_add_notify(gasnet_token_t t, const int);
508 extern void _xmp_gasnet_notiy_reply(gasnet_token_t t);
509 extern void _XMP_gasnet_atomic_define(int, _XMP_coarray_t*, size_t, int, _XMP_coarray_t*, size_t, size_t);
510 extern void _XMP_gasnet_atomic_ref(int, _XMP_coarray_t*, size_t, int*, size_t);
511 extern void XMP_gasnet_atomic_sync_memory();
512 #endif
513 
514 #ifdef _XMP_FJRDMA
515 #define _XMP_COARRAY_FLAG_NIC (FJMPI_RDMA_LOCAL_NIC0 | FJMPI_RDMA_REMOTE_NIC1)
516 #define _XMP_COARRAY_SEND_NIC FJMPI_RDMA_LOCAL_NIC0
517 
518 #define _XMP_SYNC_IMAGES_FLAG_NIC (FJMPI_RDMA_LOCAL_NIC0 | FJMPI_RDMA_REMOTE_NIC1 | FJMPI_RDMA_REMOTE_NOTICE)
519 #define _XMP_SYNC_IMAGES_SEND_NIC FJMPI_RDMA_LOCAL_NIC0
520 #define _XMP_SYNC_IMAGES_RECV_NIC FJMPI_RDMA_LOCAL_NIC1
521 #define _XMP_POSTREQ_NIC_FLAG (FJMPI_RDMA_LOCAL_NIC2 | FJMPI_RDMA_REMOTE_NIC3 | FJMPI_RDMA_REMOTE_NOTICE)
522 #define _XMP_POSTREQ_SEND_NIC FJMPI_RDMA_LOCAL_NIC2
523 #define _XMP_POSTREQ_RECV_NIC FJMPI_RDMA_LOCAL_NIC3
524 #define _XMP_TEMP_MEMID 0
525 #define _XMP_POSTREQ_ID 1
526 #define _XMP_SYNC_IMAGES_ID 2
527 #define _XMP_FJRDMA_START_MEMID 3
528 #define _XMP_INIT_RDMA_INTERVAL 8192
529 #define _XMP_ONESIDED_MAX_PROCS 82944
530 #define _XMP_FJRDMA_TAG 0
531 #define _XMP_SYNC_IMAGES_TAG 1
532 
533 #include <mpi-ext.h>
534 extern void _XMP_fjrdma_initialize();
535 extern void _XMP_fjrdma_finalize();
536 extern void _XMP_fjrdma_sync_memory();
537 extern void _XMP_fjrdma_sync_all();
538 extern void _XMP_fjrdma_sync_images(const int, int*, int*);
540 extern void _XMP_fjrdma_coarray_malloc(_XMP_coarray_t *, void **, const unsigned long);
541 extern void _XMP_fjrdma_regmem(_XMP_coarray_t *, void *, const unsigned long);
542 extern void _XMP_fjrdma_put(const int, const int, const int, const int, const int, const _XMP_array_section_t *,
543  const _XMP_array_section_t *, const _XMP_coarray_t *, const _XMP_coarray_t *, void *,
544  const size_t, const size_t);
545 extern void _XMP_fjrdma_get(const int, const int, const int, const int, const int, const _XMP_array_section_t *,
546  const _XMP_array_section_t *, const _XMP_coarray_t *, const _XMP_coarray_t *, void *,
547  const size_t, const size_t);
548 extern void _XMP_fjrdma_contiguous_put(const int, const uint64_t, const uint64_t, const _XMP_coarray_t *,
549  const _XMP_coarray_t *, const size_t, const size_t, const size_t);
550 extern void _XMP_fjrdma_contiguous_get(const int, const _XMP_coarray_t *, const _XMP_coarray_t *,
551  const uint64_t, const uint64_t, const size_t, const size_t, const size_t);
553 extern void _xmp_fjrdma_post(const int, const int);
554 extern void _xmp_fjrdma_wait_noargs();
555 extern void _xmp_fjrdma_wait_node(const int);
556 extern void _xmp_fjrdma_wait(const int, const int);
558 extern void _XMP_fjrdma_scalar_contiguous_mput(const int, const uint64_t, const uint64_t, const _XMP_coarray_t*,
559  const _XMP_coarray_t*, const size_t);
560 extern void _XMP_add_num_of_puts();
561 extern void _XMP_add_num_of_gets();
562 extern void _XMP_fjrdma_sync_memory_put();
563 extern void _XMP_fjrdma_sync_memory_get();
564 extern void _XMP_fjrdma_atomic_define(int, _XMP_coarray_t*, size_t, int, _XMP_coarray_t*, size_t, size_t);
565 extern void _XMP_fjrdma_atomic_ref(int, _XMP_coarray_t*, size_t, int*, _XMP_coarray_t*, size_t, size_t);
566 #endif
567 
568 #ifdef _XMP_UTOFU
569 #include <utofu.h>
570 
571 #ifndef _XMP_UTOFU_EXTERN_
572 #define _XMP_UTOFU_EXTERN_ extern
573 #endif
574 _XMP_UTOFU_EXTERN_ utofu_tni_id_t _xmp_utofu_tni_id;
575 _XMP_UTOFU_EXTERN_ struct utofu_onesided_caps *_xmp_utofu_onesided_caps;
576 _XMP_UTOFU_EXTERN_ utofu_vcq_hdl_t _xmp_utofu_vcq_hdl;
577 _XMP_UTOFU_EXTERN_ utofu_vcq_id_t *_xmp_utofu_vcq_ids;
578 _XMP_UTOFU_EXTERN_ utofu_vcq_id_t *_xmp_utofu_vcq_ids_org;
579 _XMP_UTOFU_EXTERN_ int _xmp_utofu_num_of_puts;
580 _XMP_UTOFU_EXTERN_ int _xmp_utofu_num_of_gets;
581 _XMP_UTOFU_EXTERN_ size_t _xmp_utofu_edata_flag_sync_images;
582 _XMP_UTOFU_EXTERN_ size_t _xmp_utofu_edata_flag_armw_puts;
583 _XMP_UTOFU_EXTERN_ size_t _xmp_utofu_edata_flag_armw_gets;
584 #undef _XMP_UTOFU_EXTERN_
585 
586 #define _XMP_UTOFU_COARRAY_PUT_POST_FLAGS (UTOFU_ONESIDED_FLAG_TCQ_NOTICE | UTOFU_ONESIDED_FLAG_LOCAL_MRQ_NOTICE | UTOFU_ONESIDED_FLAG_STRONG_ORDER)
587 #define _XMP_UTOFU_COARRAY_GET_POST_FLAGS (UTOFU_ONESIDED_FLAG_TCQ_NOTICE | UTOFU_ONESIDED_FLAG_LOCAL_MRQ_NOTICE | UTOFU_ONESIDED_FLAG_STRONG_ORDER)
588 
589 extern void _XMP_utofu_initialize();
590 extern void _XMP_utofu_finalize();
591 
592 extern void _XMP_utofu_error_check(int);
593 extern uint64_t _XMP_utofu_check_mrq_notice(struct utofu_mrq_notice *);
594 extern void _XMP_utofu_coarray_malloc(_XMP_coarray_t *, void **, const size_t);
595 extern void _XMP_utofu_regmem(_XMP_coarray_t *, void *, const size_t);
597 extern void _XMP_utofu_coarray_lastly_deallocate();
598 extern void _XMP_utofu_contiguous_put(const int, const uint64_t, const uint64_t, const _XMP_coarray_t *,
599  const _XMP_coarray_t *, const size_t, const size_t, const size_t);
600 extern void _XMP_utofu_put(const int, const int, const int,
601  const int, const int, const _XMP_array_section_t *,
602  const _XMP_array_section_t *, const _XMP_coarray_t *,
603  const _XMP_coarray_t *, void *, const size_t, const size_t);
604 extern void _XMP_utofu_contiguous_get(const int, const _XMP_coarray_t *, const _XMP_coarray_t *,
605  const uint64_t, const uint64_t, const size_t, const size_t, const size_t);
606 extern void _XMP_utofu_get(const int, const int, const int,
607  const int, const int, const _XMP_array_section_t *,
608  const _XMP_array_section_t *, const _XMP_coarray_t *,
609  const _XMP_coarray_t *, void *, const size_t, const size_t);
610 extern void _XMP_utofu_sync_all(void);
611 extern void _XMP_utofu_sync_memory(void);
612 extern void _XMP_utofu_sync_images(const int, int*, int*);
613 extern void _XMP_utofu_build_sync_images_table(void);
614 
615 extern void _XMP_utofu_atomic_define(int, _XMP_coarray_t *, size_t, int, size_t);
616 extern void _XMP_utofu_atomic_ref(int, _XMP_coarray_t *, size_t, int *, size_t);
617 
618 extern void _xmp_utofu_post_wait_initialize();
619 extern void _xmp_utofu_add_postreq(const utofu_vcq_id_t, const int);
620 extern void _xmp_utofu_post(const int, const int);
621 extern void _xmp_utofu_wait_noargs();
622 extern void _xmp_utofu_wait(const int, const int);
623 extern void _xmp_utofu_wait_node(const int);
624 #endif
625 
626 #ifdef _XMP_TCA
627 void _XMP_tca_malloc(_XMP_coarray_t *coarray_desc, void **addr, const size_t coarray_size);
628 void _XMP_tca_contiguous_put(const int target_rank, const size_t dst_offset, const size_t src_offset,
629  const _XMP_coarray_t *dst_desc, const _XMP_coarray_t *src_desc,
630  const size_t dst_elmts, const size_t src_elmts, const size_t elmt_size);
631 void _XMP_tca_sync_memory();
632 void _XMP_tca_comm_send(const int rank, const int tag, const int data);
633 void _XMP_tca_comm_recv(const int rank, int *tag, int *data);
634 #define _XMP_TCA_POSTREQ_TAG (10000)
635 //xmp_post_wait_tca.c
637 void _xmp_tca_postreq(const int node, const int tag);
638 void _xmp_tca_post(const int node, const int tag);
639 void _xmp_tca_wait(const int node, const int tag);
640 void _xmp_tca_wait_node(const int node);
641 void _xmp_tca_wait_noargs();
642 //xmp_onesided_tca.c
643 void _XMP_tca_initialize();
644 void _XMP_tca_finalize();
645 void _XMP_tca_lock();
646 void _XMP_tca_unlock();
647 //xmp_tca_runtime.c
648 void _XMP_init_tca();
649 void _XMP_alloc_tca(_XMP_array_t *adesc);
650 //xmp_reflect_tca.c
651 void _XMP_reflect_init_tca(void *acc_addr, _XMP_array_t *adesc);
652 void _XMP_reflect_do_tca(_XMP_array_t *adesc);
653 //xmp_reflect_hybrid.c
654 void _XMP_reflect_init_hybrid(void *acc_addr, _XMP_array_t *adesc);
656 //xmp_reduce_tca.c
657 void _XMP_reduce_tca_NODES_ENTIRE(_XMP_nodes_t *nodes, void *dev_addr, int count, int datatype, int op);
658 //xmp_reduce_hybrid.c
659 void _XMP_reduce_hybrid_NODES_ENTIRE(_XMP_nodes_t *nodes, void *dev_addr, int count, int datatype, int op);
660 #endif
661 
662 #ifdef _XMP_MPI3_ONESIDED
663 #define _XMP_MPI_ONESIDED_COARRAY_SHIFT_QUEUE_INITIAL_SIZE _XMP_COARRAY_QUEUE_INITIAL_SIZE
664 #define _XMP_MPI_ONESIDED_COARRAY_SHIFT_QUEUE_INCREMENT_RAITO _XMP_COARRAY_QUEUE_INCREMENT_RAITO
665 #define _XMP_MPI_ALIGNMENT 64
666 #define _XMP_MPI_POSTREQ_TAG 500
667 extern size_t _xmp_mpi_onesided_heap_size;
668 extern char *_xmp_mpi_onesided_buf;
669 extern MPI_Win _xmp_mpi_onesided_win;
670 extern MPI_Win _xmp_mpi_distarray_win;
671 //#ifdef _XMP_XACC
672 extern char *_xmp_mpi_onesided_buf_acc;
673 extern MPI_Win _xmp_mpi_onesided_win_acc;
674 extern MPI_Win _xmp_mpi_distarray_win_acc;
675 //#endif
676 void _XMP_mpi_onesided_initialize(const size_t heap_size);
678 void _XMP_mpi_onesided_create_win(MPI_Win *win, void *addr, size_t size, MPI_Comm comm);
679 void _XMP_mpi_onesided_alloc_win(MPI_Win *win, void **addr, size_t size, MPI_Comm comm, bool is_acc);
680 void _XMP_mpi_onesided_destroy_win(MPI_Win *win);
681 void _XMP_mpi_onesided_dealloc_win(MPI_Win *win, void **addr, bool is_acc);
682 void _XMP_mpi_build_shift_queue(bool);
685 void _XMP_mpi_coarray_malloc(_XMP_coarray_t *coarray_desc, void **addr, const size_t coarray_size, bool is_acc);
686 void _XMP_mpi_coarray_regmem(_XMP_coarray_t *coarray_desc, void *real_addr, const size_t coarray_size, bool is_acc);
687 void _XMP_mpi_coarray_deregmem(_XMP_coarray_t *coarray_desc);
688 void _XMP_mpi_coarray_attach(_XMP_coarray_t *coarray_desc, void *addr, const size_t coarray_size, const bool is_acc);
689 void _XMP_mpi_coarray_detach(_XMP_coarray_t *coarray_desc, const bool is_acc);
690 void _XMP_mpi_contiguous_put(const int target_rank, const _XMP_coarray_t *dst_desc, const _XMP_coarray_t *src_desc,
691  const size_t dst_offset, const size_t src_offset,
692  const size_t dst_elmts, const size_t src_elmts, const size_t elmt_size, const bool is_dst_on_acc, const bool is_src_on_acc);
693 void _XMP_mpi_contiguous_get(const int target_rank, const _XMP_coarray_t *dst_desc, const _XMP_coarray_t *src_desc,
694  const size_t dst_offset, const size_t src_offset,
695  const size_t dst_elmts, const size_t src_elmts, const size_t elmt_size, const bool is_dst_on_acc, const bool is_src_on_acc);
696 void _XMP_mpi_put(const int dst_contiguous, const int src_contiguous, const int target_rank,
697  const int dst_dims, const int src_dims, const _XMP_array_section_t *dst_info,
698  const _XMP_array_section_t *src_info, const _XMP_coarray_t *dst_desc,
699  const void *src, const int dst_elmts, const int src_elmts,
700  const int is_dst_on_acc);
701 void _XMP_mpi_get(const int src_contiguous, const int dst_contiguous, const int target_rank,
702  const int src_dims, const int dst_dims, const _XMP_array_section_t *src_info,
703  const _XMP_array_section_t *dst_info, const _XMP_coarray_t *src_desc,
704  void *dst, const int src_elmts, const int dst_elmts,
705  const int is_src_on_acc);
706 
707 void _XMP_mpi_sync_memory();
708 void _XMP_mpi_sync_all();
710 void _xmp_mpi_post(const int node, int tag);
711 void _xmp_mpi_wait(const int node, const int tag);
712 void _xmp_mpi_wait_node(const int node);
713 void _xmp_mpi_wait_noargs();
714 void _XMP_mpi_sync_images(const int num, const int *image_set, int *status);
715 void _XMP_sync_images_EXEC(int* status);
716 void _XMP_sync_images_COMM(MPI_Comm *comm, int* status);
718 
719 MPI_Win _XMP_mpi_coarray_get_window(const _XMP_coarray_t *desc, bool is_acc);
720 char *_XMP_mpi_coarray_get_remote_addr(const _XMP_coarray_t *desc, const int target_rank, const bool is_acc);
721 char *_XMP_mpi_coarray_get_local_addr(const _XMP_coarray_t *desc, const bool is_acc);
722 void _XMP_mpi_atomic_define(int, _XMP_coarray_t*, size_t, int, size_t);
723 void _XMP_mpi_atomic_ref(int, _XMP_coarray_t*, size_t, int*, size_t);
724 #endif
725 
726 #ifdef _XMP_TIMING
727 extern double t0, t1;
728 #define _XMP_TSTART(t0) ((t0) = MPI_Wtime())
729 #define _XMP_TEND(t, t0) ((t) = (t) + MPI_Wtime() - (t0))
730 #define _XMP_TEND2(t, tt, t0) { double _XMP_TMP = MPI_Wtime(); \
731  (t) = (t) + _XMP_TMP - (t0); \
732  (tt) = (tt) + _XMP_TMP - (t0); }
733 
734 struct _XMPTIMING
735 { double t_mem, t_copy, t_comm, t_sched, t_wait, t_misc,
736  tdim[_XMP_N_MAX_DIM],
737  tdim_mem[_XMP_N_MAX_DIM],
738  tdim_copy[_XMP_N_MAX_DIM],
739  tdim_comm[_XMP_N_MAX_DIM],
740  tdim_sched[_XMP_N_MAX_DIM],
741  tdim_wait[_XMP_N_MAX_DIM],
742  tdim_misc[_XMP_N_MAX_DIM];
743 } xmptiming_;
744 
745 #else
746 
747 #define _XMP_TSTART(t0)
748 #define _XMP_TEND(t, t0)
749 #define _XMP_TEND2(t, tt, t0)
750 
751 #endif
752 
753 #ifdef _XMP_TCA
754 #define TCA_CHECK(tca_call) do { \
755  tcaresult result = tca_call; \
756  if (result != TCA_SUCCESS) { \
757  fprintf(stderr, "TCA error in file '%s' in line %i : %s.\n", \
758  __FILE__, __LINE__, tcaGetErrorString(result)); \
759  exit(EXIT_FAILURE); \
760  } \
761  } while (0)
762 #endif
763 
764 #if /*defined(_XMP_XACC) && */defined(DEBUG)
765 #define XACC_DEBUG2(fmt, ...) fprintf(stderr, "XACC debug (%s:%d),rank=%d: "fmt"\n%s", __FILE__, __LINE__, _XMP_world_rank, __VA_ARGS__)
766 #define XACC_DEBUG(...) XACC_DEBUG2(__VA_ARGS__, "")
767 #else
768 #define XACC_DEBUG(...) do{}while(0)
769 #endif
770 
771 #ifdef _XMP_GASNET
772 #include "xmp_lock.h"
773 #define _XMP_LOCK_CHUNK 8 // for lock
774 
775 typedef enum {
776  _XMP_LOCKSTATE_WAITING = 300, /* waiting for a reply */
777  _XMP_LOCKSTATE_GRANTED, /* lock attempt granted */
778  _XMP_LOCKSTATE_FAILED, /* lock attempt failed */
779  _XMP_LOCKSTATE_HANDOFF, /* unlock op complete--handoff in progress */
780  _XMP_LOCKSTATE_DONE /* unlock op complete */
781 } xmp_gasnet_lock_state_t;
782 
783 extern void _xmp_gasnet_lock(_XMP_coarray_t*, const unsigned int, const unsigned int);
784 extern void _xmp_gasnet_unlock(_XMP_coarray_t*, const unsigned int, const unsigned int);
785 extern void _xmp_gasnet_do_lock(int, xmp_gasnet_lock_t*, int*);
786 extern void _xmp_gasnet_lock_initialize(xmp_gasnet_lock_t*, const unsigned int);
787 extern void _xmp_gasnet_do_unlock(int, xmp_gasnet_lock_t*, int*, int*);
788 extern void _xmp_gasnet_do_lockhandoff(int);
789 extern void _xmp_gasnet_unpack(gasnet_token_t, const char*, const size_t,
790  const int, const int, const int, const int, const int);
791 extern void _xmp_gasnet_unpack_using_buf(gasnet_token_t, const int, const int, const int, const int, const int);
792 extern void _xmp_gasnet_unpack_reply(gasnet_token_t, const int);
793 extern void _xmp_gasnet_pack(gasnet_token_t, const char*, const size_t,
794  const int, const int, const int, const size_t, const int, const int);
795 extern void _xmp_gasnet_unpack_get_reply(gasnet_token_t, char *, size_t, const int, const int);
796 extern void _xmp_gasnet_atomic_define_do(gasnet_token_t, const char*, const size_t, gasnet_handlerarg_t, gasnet_handlerarg_t, gasnet_handlerarg_t);
797 extern void _xmp_gasnet_atomic_define_reply_do(gasnet_token_t, gasnet_handlerarg_t);
798 extern void _xmp_gasnet_atomic_ref_do(gasnet_token_t, const size_t, gasnet_handlerarg_t, gasnet_handlerarg_t,
799  gasnet_handlerarg_t, gasnet_handlerarg_t, gasnet_handlerarg_t);
800 extern void _xmp_gasnet_atomic_ref_reply_do(gasnet_token_t, int *, size_t, gasnet_handlerarg_t,
801  gasnet_handlerarg_t, gasnet_handlerarg_t);
802 
803 /* Every handler function needs a uniqe number between 200-255.
804  * The Active Message library reserves ID's 1-199 for itself: client libs must
805  * use IDs between 200-255.
806  */
807 #define _XMP_GASNET_LOCK_REQUEST 200
808 #define _XMP_GASNET_SETLOCKSTATE 201
809 #define _XMP_GASNET_UNLOCK_REQUEST 202
810 #define _XMP_GASNET_LOCKHANDOFF 203
811 #define _XMP_GASNET_POSTREQ 204
812 #define _XMP_GASNET_UNPACK 205
813 #define _XMP_GASNET_UNPACK_USING_BUF 206
814 #define _XMP_GASNET_UNPACK_REPLY 207
815 #define _XMP_GASNET_PACK 208
816 #define _XMP_GASNET_UNPACK_GET_REPLY 209
817 #define _XMP_GASNET_PACK_USING_BUF 210
818 #define _XMP_GASNET_UNPACK_GET_REPLY_USING_BUF 211
819 #define _XMP_GASNET_PACK_GET_HANDLER 212
820 #define _XMP_GASNET_UNPACK_GET_REPLY_NONC 213
821 #define _XMP_GASNET_ADD_NOTIFY 214
822 #define _XMP_GASNET_ATOMIC_DEFINE_DO 215
823 #define _XMP_GASNET_ATOMIC_DEFINE_REPLY_DO 216
824 #define _XMP_GASNET_ATOMIC_REF_DO 217
825 #define _XMP_GASNET_ATOMIC_REF_REPLY_DO 218
826 
827 extern void _xmp_gasnet_lock_request(gasnet_token_t, int, uint32_t, uint32_t);
828 extern void _xmp_gasnet_setlockstate(gasnet_token_t, int);
829 extern void _xmp_gasnet_do_setlockstate(int);
830 extern void _xmp_gasnet_unlock_request(gasnet_token_t, int, uint32_t, uint32_t);
831 extern void _xmp_gasnet_lockhandoff(gasnet_token_t, int);
832 extern void _xmp_gasnet_postreq(gasnet_token_t, const int, const int);
833 extern void _xmp_gasnet_pack_using_buf(gasnet_token_t, const char*, const size_t,
834  const int, const int, const int, const int);
835 extern void _xmp_gasnet_unpack_get_reply_using_buf(gasnet_token_t);
836 extern void _xmp_gasnet_pack_get(gasnet_token_t, const char*, const size_t, const int,
837  const int, const int, const int, const size_t, const int, const int);
838 extern void _xmp_gasnet_unpack_get_reply_nonc(gasnet_token_t, char *, size_t, const int, const int, const int);
839 
840 /* Macros for splitting and reassembling 64-bit quantities */
841 #define HIWORD(arg) ((uint32_t) (((uint64_t)(arg)) >> 32))
842 #if PLATFORM_COMPILER_CRAY || PLATFORM_COMPILER_INTEL
843 /* workaround irritating warning #69: Integer conversion resulted in truncation.
844  which happens whenever Cray C or Intel C sees address-of passed to SEND_PTR
845 */
846 #define LOWORD(arg) ((uint32_t) (((uint64_t)(arg)) & 0xFFFFFFFF))
847 #else
848 #define LOWORD(arg) ((uint32_t) ((uint64_t)(arg)))
849 #endif
850 #define UPCRI_MAKEWORD(hi,lo) ( (((uint64_t)(hi)) << 32) \
851  | (((uint64_t)(lo)) & 0xffffffff) )
852 
853 /* These macros are referred from upcr.h of Berkeley UPC */
854 /*
855  * Network polling
856  * ===============
857  *
858  * The upcr_poll() function explicitly causes the runtime to attempt to make
859  * progress on any network requests that may be pending. While many other
860  * runtime functions implicitly do this as well (i.e. most of those which call
861  * the network layer) this function may be useful in cases where a large amount
862  * of time has elapsed since the last runtime call (e.g. if a great deal of
863  * application-level calculation is taking place). This function may also be
864  * indirectly when a upc_fence is used.
865  *
866  * upcr_poll() also provides a null strict reference, corresponding to upc_fence in the
867  * UPC memory model.
868  * DOB: we should really rename upcr_poll to upcr_fence, but this would break
869  * compatibility between old runtimes and new translators, so until the next
870  * major runtime interface upgrade, (b)upc_poll expands to upcr_poll_nofence,
871  * which polls without the overhead of strict memory fences.
872  */
873 
874 /* Bug 2996 - upcr_poll_nofence should also yield in polite mode to get
875  * resonable performance from a spin-loop constructed according to our
876  * recommendations.
877  * The bug was first seen w/ smp-conduit, but when using a network we
878  * cannot claim to know if gasnet_AMPoll() is going to yield or not.
879  * With an RMDA-capable transport one actually could expect that it
880  * would NOT.
881  */
882 #define upcr_poll_nofence() do { \
883  gasnet_AMPoll(); \
884  } while (0)
885 #if GASNET_CONDUIT_SMP && !UPCRI_UPC_PTHREADS && !GASNET_PSHM
886 /* in the special case of exactly one UPC thread, nothing is required for
887  * correctness of fence (poll is likely a no-op as well, included solely
888  * for tracing purposes)
889  */
890 #define upcr_poll() upcr_poll_nofence()
891 #else
892 /* in all other cases, a fence needs to act as a null strict reference,
893  * which means we need an architectural membar & optimization barrier to
894  * ensure that surrounding relaxed shared and local operations are not
895  * reordered in any way across this point (which could be visible if other
896  * CPU's or an RDMA enabled NIC are modifying memory via strict operations).
897  * We need both an WMB and RMB within the fence, but it doesn't actually matter
898  * whether they come before or after the optional poll (which is added as
899  * a performance optimization, to help ensure progress in spin-loops using fence).
900  * We combine them in a call to gasnett_local_mb(), which on some architectures
901  * can be slightly more efficient than WMB and RMB called in sequence.
902  */
903 #define upcr_poll() do { \
904  gasnett_local_mb(); \
905  upcr_poll_nofence(); \
906  } while (0)
907 #endif
908 
909 #endif // _XMP_GASNET
910 
911 #endif // _XMP_INTERNAL
_XMP_utofu_sync_all
void _XMP_utofu_sync_all(void)
Definition: xmp_coarray_utofu.c:975
_XMP_gasnet_sync_memory
void _XMP_gasnet_sync_memory()
Execute sync_memory.
Definition: xmp_coarray_gasnet.c:830
_XMPC_running
int _XMPC_running
Definition: xmp_runtime.c:15
_XMP_calc_template_par_triplet
int _XMP_calc_template_par_triplet(_XMP_template_t *template, int template_index, int nodes_rank, int *template_lower, int *template_upper, int *template_stride)
Definition: xmp_template.c:667
_XMP_mpi_onesided_destroy_win
void _XMP_mpi_onesided_destroy_win(MPI_Win *win)
Definition: xmp_onesided_mpi.c:124
_is_constant_stride_4dim
int _is_constant_stride_4dim(const _XMP_array_section_t *array_info)
Definition: xmp_coarray_utils.c:1444
_XMP_get_owner_pos
int _XMP_get_owner_pos(_XMP_array_t *a, int dim, int index)
Definition: xmp_reflect.c:1688
_XMP_utofu_coarray_malloc
void _XMP_utofu_coarray_malloc(_XMP_coarray_t *coarray_desc, void **addr, const size_t coarray_size)
Definition: xmp_coarray_utofu.c:232
_XMP_gasnet_atomic_ref
void _XMP_gasnet_atomic_ref(int target_rank, _XMP_coarray_t *dst_desc, size_t dst_offset, int *value, size_t elmt_size)
Definition: xmp_intrinsic_gasnet.c:95
_xmp_mpi_onesided_win
MPI_Win _xmp_mpi_onesided_win
Definition: xmp_onesided_mpi.c:12
_xmp_gasnet_postreq
void _xmp_gasnet_postreq(gasnet_token_t token, const int node, const int tag)
Definition: xmp_post_wait_gasnet.c:57
_XMP_coarray_detach
void _XMP_coarray_detach(void **)
_XMP_tca_lock
void _XMP_tca_lock()
Definition: xmp_onesided_tca.c:415
_XMP_fjrdma_sync_all
void _XMP_fjrdma_sync_all()
Execute sync_all.
Definition: xmp_coarray_fjrdma.c:1350
_XMP_fatal_nomsg
void _XMP_fatal_nomsg()
Definition: xmp_util.c:48
xmp_data_struct.h
_XMP_utofu_contiguous_put
void _XMP_utofu_contiguous_put(const int target_rank, const uint64_t dst_offset, const uint64_t src_offset, const _XMP_coarray_t *dst_desc, const _XMP_coarray_t *src_desc, const size_t dst_elmts, const size_t src_elmts, const size_t elmt_size)
Definition: xmp_coarray_utofu.c:444
xmpf_matmul
void xmpf_matmul(void *x_p, void *a_p, void *b_p)
Definition: xmp_intrinsic.c:3911
_XMP_unexpected_error
void _XMP_unexpected_error(void)
Definition: xmp_util.c:53
_XMP_create_temporary_nodes
_XMP_nodes_t * _XMP_create_temporary_nodes(_XMP_nodes_t *n)
Definition: xmp_nodes.c:257
_XMP_coarray_rdma_do2
void _XMP_coarray_rdma_do2(const int rdma_code, void *remote_coarray, void *local_array, void *local_coarray, const long coarray_elmts[], const long coarray_distance[])
Definition: xmp_coarray.c:1278
_XMP_mpi_atomic_ref
void _XMP_mpi_atomic_ref(int target_rank, _XMP_coarray_t *c, size_t offset, int *value, size_t elmt_size)
Definition: xmp_intrinsic_mpi.c:21
_XMP_G2L
void _XMP_G2L(long long int global_idx, int *local_idx, _XMP_template_t *template, int template_index)
Definition: xmp_index.c:44
_xmp_fjrdma_wait_noargs
void _xmp_fjrdma_wait_noargs()
Wait operation without node-ref and tag.
Definition: xmp_post_wait_fjrdma.c:175
_xmp_utofu_post
void _xmp_utofu_post(const int node_num, const int tag)
Definition: xmp_post_wait_utofu.c:54
_XMP_calc_stride
long _XMP_calc_stride(const _XMP_array_section_t *array_info, const int dims, const size_t chunk_size)
Definition: xmp_coarray_utils.c:1664
_xmp_utofu_wait_node
void _xmp_utofu_wait_node(const int node_num)
Definition: xmp_post_wait_utofu.c:162
_XMP_utofu_finalize
void _XMP_utofu_finalize(void)
Definition: xmp_onesided_utofu.c:79
_xmp_fjrdma_post_wait_initialize
void _xmp_fjrdma_post_wait_initialize()
Initialize environment for post/wait directives.
Definition: xmp_post_wait_fjrdma.c:32
_XMP_finalize
void _XMP_finalize(bool isFinalize)
Definition: xmp_runtime.c:73
_XMP_init_tca
void _XMP_init_tca(void)
Definition: xmp_tca_runtime.c:4
_XMP_sched_loop_template_GBLOCK
void _XMP_sched_loop_template_GBLOCK(int ser_init, int ser_cond, int ser_step, int *par_init, int *par_cond, int *par_step, _XMP_template_t *template, int template_index)
Definition: xmp_loop.c:379
_XMP_coarray_rdma_coarray_set_n
void _XMP_coarray_rdma_coarray_set_n(const int n, const long start[], const long length[], const long stride[])
Set transfer n-dim coarray information.
Definition: xmp_coarray.c:637
_XMP_L2G
void _XMP_L2G(int local_idx, long long int *global_idx, _XMP_template_t *template, int template_index)
Definition: xmp_index.c:4
_XMP_set_reflect__
void _XMP_set_reflect__(_XMP_array_t *a, int dim, int lwidth, int uwidth, int is_periodic)
Definition: xmp_reflect.c:62
_xmp_gasnet_lock_request
void _xmp_gasnet_lock_request(gasnet_token_t token, int node, uint32_t addr_hi, uint32_t addr_lo)
Definition: xmp_lock_unlock_gasnet.c:133
XMP_gasnet_atomic_sync_memory
void XMP_gasnet_atomic_sync_memory()
Definition: xmp_intrinsic_gasnet.c:25
_XMP_utofu_sync_memory
void _XMP_utofu_sync_memory(void)
Definition: xmp_coarray_utofu.c:960
_XMP_alloc_tca
void _XMP_alloc_tca(_XMP_array_t *adesc)
Definition: xmp_tca_runtime.c:11
_XMP_create_nodes_by_template_ref
_XMP_nodes_t * _XMP_create_nodes_by_template_ref(_XMP_template_t *ref_template, int *shrink, long long *ref_lower, long long *ref_upper, long long *ref_stride)
Definition: xmp_template.c:459
_XMP_fjrdma_sync_memory
void _XMP_fjrdma_sync_memory()
Execute sync_memory.
Definition: xmp_coarray_fjrdma.c:1338
_XMP_alloc_array
void _XMP_alloc_array(void **array_addr, _XMP_array_t *array_desc, int is_coarray,...)
Definition: xmp_align.c:626
_xmp_gasnet_do_unlock
void _xmp_gasnet_do_unlock(int target_rank, xmp_gasnet_lock_t *lock, int *replystate, int *replyarg)
Definition: xmp_lock_unlock_gasnet.c:79
_XMP_reduce_hybrid_NODES_ENTIRE
void _XMP_reduce_hybrid_NODES_ENTIRE(_XMP_nodes_t *nodes, void *addr, int count, int datatype, int op)
Definition: xmp_reduce_hybrid.c:437
_xmp_mpi_onesided_win_acc
MPI_Win _xmp_mpi_onesided_win_acc
Definition: xmp_onesided_mpi.c:17
_XMP_finalize_world
void _XMP_finalize_world(bool)
Definition: xmp_world.c:29
free_comm_set
void free_comm_set(_XMP_comm_set_t *comm_set)
Definition: xmp_section_desc.c:202
_xmp_gasnet_unpack
void _xmp_gasnet_unpack(gasnet_token_t t, const char *src_addr, const size_t nbytes, const int addr_hi, const int addr_lo, const int dst_dims, const int ith, const int flag)
Unpack received data.
Definition: xmp_coarray_gasnet.c:934
xmp_is_async
_Bool xmp_is_async()
Definition: xmp_async.c:20
_xmp_mpi_distarray_win_acc
MPI_Win _xmp_mpi_distarray_win_acc
Definition: xmp_onesided_mpi.c:18
_XMP_reflect_init_hybrid
void _XMP_reflect_init_hybrid(void *acc_addr, _XMP_array_t *adesc)
Definition: xmp_reflect_hybrid.c:403
_xmp_gasnet_do_lockhandoff
void _xmp_gasnet_do_lockhandoff(int handoffarg)
Definition: xmp_lock_unlock_gasnet.c:176
_XMP_gasnet_atomic_define
void _XMP_gasnet_atomic_define(int target_rank, _XMP_coarray_t *dst_desc, size_t dst_offset, int value, _XMP_coarray_t *src_desc, size_t src_offset, size_t elmt_size)
Definition: xmp_intrinsic_gasnet.c:57
_XMP_reduce_NODES_ENTIRE
void _XMP_reduce_NODES_ENTIRE(_XMP_nodes_t *nodes, void *addr, int count, int datatype, int op)
Definition: xmp_reduce.c:217
_XMP_coarray_get
void _XMP_coarray_get(void *, void *, void *)
Definition: xmp_coarray.c:1223
_xmp_gasnet_lock
void _xmp_gasnet_lock(_XMP_coarray_t *c, const unsigned int offset, const unsigned int target_rank)
Definition: xmp_lock_unlock_gasnet.c:58
xmpf_unpack
void xmpf_unpack(void *a_p, void *v_p, void *m_p)
Definition: xmp_intrinsic.c:6307
_XMP_set_reflect_gpu
void _XMP_set_reflect_gpu(_XMP_array_t *a, int dim, int lwidth, int uwidth, int is_periodic)
Definition: xmp_reflect_gpu.c:52
_XMP_align_array_BLOCK
void _XMP_align_array_BLOCK(_XMP_array_t *array, int array_index, int template_index, long long align_subscript, int *temp0)
Definition: xmp_align.c:323
_xmp_utofu_wait
void _xmp_utofu_wait(const int node_num, const int tag)
Definition: xmp_post_wait_utofu.c:142
_XMP_reflect_async__
void _XMP_reflect_async__(_XMP_array_t *a, int async_id)
Definition: xmp_reflect.c:942
_XMP_gtol_array_ref_triplet
void _XMP_gtol_array_ref_triplet(_XMP_array_t *array, int dim_index, int *lower, int *upper, int *stride)
Definition: xmp_gmove.c:114
_is_constant_stride_6dim
int _is_constant_stride_6dim(const _XMP_array_section_t *array_info)
Definition: xmp_coarray_utils.c:1506
print_rsd
void print_rsd(_XMP_rsd_t *rsd)
Definition: xmp_section_desc.c:6
_XMP_sched_loop_template_DUPLICATION
void _XMP_sched_loop_template_DUPLICATION(int ser_init, int ser_cond, int ser_step, int *par_init, int *par_cond, int *par_step, _XMP_template_t *template, int template_index)
Definition: xmp_loop.c:163
xmpf_unpack_mask
void xmpf_unpack_mask(void *a_p, void *v_p, void *m_p)
Definition: xmp_intrinsic.c:6315
_XMP_dist_template_GBLOCK
void _XMP_dist_template_GBLOCK(_XMP_template_t *template, int template_index, int nodes_index, int *mapping_array, int *temp0)
Definition: xmp_template.c:406
_XMP_gmove_garray_larray
void _XMP_gmove_garray_larray(_XMP_gmv_desc_t *gmv_desc_leftp, _XMP_gmv_desc_t *gmv_desc_rightp, int mode)
Definition: xmp_gmove.c:4851
_XMP_mpi_coarray_deallocate
void _XMP_mpi_coarray_deallocate(_XMP_coarray_t *, bool is_acc)
Definition: xmp_coarray_mpi.c:222
xmpf_transpose
void xmpf_transpose(void *dst_p, void *src_p, int opt)
Definition: xmp_intrinsic.c:1465
_xmp_tca_postreq
void _xmp_tca_postreq(const int node, const int tag)
Definition: xmp_post_wait_tca.c:145
_XMP_tca_malloc
void _XMP_tca_malloc(_XMP_coarray_t *coarray_desc, void **addr, const size_t coarray_size)
Definition: xmp_coarray_tca.c:107
_XMP_coarray_rdma_image_set_n
void _XMP_coarray_rdma_image_set_n(const int ndims, const int n[])
Set n-dim image information.
Definition: xmp_coarray.c:1036
_XMP_gasnet_coarray_malloc
void _XMP_gasnet_coarray_malloc(_XMP_coarray_t *coarray_desc, void **addr, const size_t coarray_size)
Definition: xmp_coarray_gasnet.c:794
_xmp_mpi_wait_noargs
void _xmp_mpi_wait_noargs()
Wait operation without node-ref and tag.
Definition: xmp_post_wait_mpi.c:126
_XMP_mpi_coarray_deregmem
void _XMP_mpi_coarray_deregmem(_XMP_coarray_t *c)
Definition: xmp_coarray_mpi.c:1193
_xmp_gasnet_unlock
void _xmp_gasnet_unlock(_XMP_coarray_t *c, const unsigned int offset, const unsigned int target_rank)
Definition: xmp_lock_unlock_gasnet.c:98
_XMP_reflect_do_tca
void _XMP_reflect_do_tca(_XMP_array_t *adesc)
Definition: xmp_reflect_tca.c:579
_xmp_mpi_onesided_buf_acc
char * _xmp_mpi_onesided_buf_acc
Definition: xmp_onesided_mpi.c:16
_XMP_free
void _XMP_free(void *p)
Definition: xmp_util.c:37
_XMP_calc_nodes_index_from_inherit_nodes_index
int _XMP_calc_nodes_index_from_inherit_nodes_index(_XMP_nodes_t *nodes, int inherit_nodes_index)
Definition: xmp_nodes.c:1309
_XMP_reflect_shadow_FULL
void _XMP_reflect_shadow_FULL(void *array_addr, _XMP_array_t *array_desc, int array_index)
Definition: xmp_shadow.c:726
_xmp_unpack_array
void(* _xmp_unpack_array)(void *dst, void *buffer, int array_type, size_t array_type_size, int array_dim, int *l, int *u, int *s, unsigned long long *d)
Definition: xmp_runtime.c:22
_XMP_coarray_malloc_image_info_n
void _XMP_coarray_malloc_image_info_n(const int *i, const int ndims)
Definition: xmp_coarray.c:275
csd2comm_set
_XMP_comm_set_t * csd2comm_set(_XMP_csd_t *csd)
Definition: xmp_section_desc.c:244
_XMP_finalize_reflect_sched_acc
void _XMP_finalize_reflect_sched_acc(_XMP_reflect_sched_t *sched, _Bool free_buf)
Definition: xmp_reflect_acc.c:83
_XMP_fjrdma_sync_memory_put
void _XMP_fjrdma_sync_memory_put()
End these variables are temporral.
Definition: xmp_coarray_fjrdma.c:1277
_XMP_fjrdma_get
void _XMP_fjrdma_get(const int src_contiguous, const int dst_contiguous, const int target_rank, const int src_dims, const int dst_dims, const _XMP_array_section_t *src_info, const _XMP_array_section_t *dst_info, const _XMP_coarray_t *src_desc, const _XMP_coarray_t *dst_desc, void *dst, const size_t src_elmts, const size_t dst_elmts)
Definition: xmp_coarray_fjrdma.c:2114
rsd2csd
_XMP_csd_t * rsd2csd(_XMP_rsd_t *rsd)
Definition: xmp_section_desc.c:213
_XMP_calc_linear_rank
int _XMP_calc_linear_rank(_XMP_nodes_t *n, int *rank_array)
Definition: xmp_nodes.c:1035
_xmp_gasnet_atomic_define_reply_do
void _xmp_gasnet_atomic_define_reply_do(gasnet_token_t token, gasnet_handlerarg_t local_atomic_operations)
Definition: xmp_intrinsic_gasnet.c:52
_XMP_init_template_chunk
void _XMP_init_template_chunk(_XMP_template_t *template, _XMP_nodes_t *nodes)
Definition: xmp_template.c:305
_XMP_calc_coord_on_target_nodes
_Bool _XMP_calc_coord_on_target_nodes(_XMP_nodes_t *n, int *ncoord, _XMP_nodes_t *target_n, int *target_ncoord)
Definition: xmp_nodes.c:1150
xmpf_pack_mask
void xmpf_pack_mask(void *v_p, void *a_p, void *m_p)
Definition: xmp_intrinsic.c:6015
_xmp_fjrdma_wait
void _xmp_fjrdma_wait(const int node, const int tag)
Wait operation with node-ref and tag.
Definition: xmp_post_wait_fjrdma.c:137
_XMP_translate_nodes_rank_array_to_ranks
void _XMP_translate_nodes_rank_array_to_ranks(_XMP_nodes_t *nodes, int *ranks, int *rank_array, int shrink_nodes_size)
Definition: xmp_nodes.c:1270
_XMP_gasnet_finalize
void _XMP_gasnet_finalize()
Finalize GASNet job.
Definition: xmp_onesided_gasnet.c:77
copy_csd
_XMP_csd_t * copy_csd(_XMP_csd_t *csd)
Definition: xmp_section_desc.c:182
_XMP_finalize_template
void _XMP_finalize_template(_XMP_template_t *template)
Definition: xmp_template.c:313
_XMP_bcast_NODES_ENTIRE_NODES
void _XMP_bcast_NODES_ENTIRE_NODES(_XMP_nodes_t *bcast_nodes, void *addr, int count, size_t datatype_size, _XMP_nodes_t *from_nodes,...)
Definition: xmp_bcast.c:59
_XMP_align_array_DUPLICATION
void _XMP_align_array_DUPLICATION(_XMP_array_t *array, int array_index, int template_index, long long align_subscript)
Definition: xmp_align.c:282
_XMP_world_size
int _XMP_world_size
Definition: xmp_world.c:8
reduce_csd
void reduce_csd(_XMP_csd_t *csd[_XMP_N_MAX_DIM], int ndims)
Definition: xmp_section_desc.c:285
_XMP_gmv_desc_type
Definition: xmp_data_struct.h:386
_XMP_mpi_coarray_lastly_deallocate
void _XMP_mpi_coarray_lastly_deallocate(bool is_acc)
Deallocate memory region when calling _XMP_coarray_lastly_deallocate()
Definition: xmp_coarray_mpi.c:216
_xmp_tca_wait
void _xmp_tca_wait(const int node, const int tag)
Wait operation with node-ref and tag.
Definition: xmp_post_wait_tca.c:237
_XMP_calc_global_index_HOMECOPY
int _XMP_calc_global_index_HOMECOPY(_XMP_array_t *dst_array, int dst_dim_index, int *dst_l, int *dst_u, int *dst_s, int *src_l, int *src_u, int *src_s)
Definition: xmp_gmove.c:404
_XMP_utofu_put
void _XMP_utofu_put(const int dst_contiguous, const int src_contiguous, const int target_rank, const int dst_dims, const int src_dims, const _XMP_array_section_t *dst_info, const _XMP_array_section_t *src_info, const _XMP_coarray_t *dst_desc, const _XMP_coarray_t *src_desc, void *src, const size_t dst_elmts, const size_t src_elmts)
Definition: xmp_coarray_utofu.c:625
_XMP_init_template_FIXED
void _XMP_init_template_FIXED(_XMP_template_t **template, int dim,...)
Definition: xmp_template.c:265
_XMP_fatal
void _XMP_fatal(char *msg)
Definition: xmp_util.c:42
_XMP_mpi_destroy_shift_queue
void _XMP_mpi_destroy_shift_queue(bool is_acc)
Destroy shift queue.
Definition: xmp_coarray_mpi.c:166
_XMP_utofu_initialize
void _XMP_utofu_initialize(void)
Definition: xmp_onesided_utofu.c:5
_XMP_mpi_onesided_create_win
void _XMP_mpi_onesided_create_win(MPI_Win *win, void *addr, size_t size, MPI_Comm comm)
Definition: xmp_onesided_mpi.c:89
_XMP_world_nodes
void * _XMP_world_nodes
Definition: xmp_world.c:10
_xmp_gasnet_atomic_ref_do
void _xmp_gasnet_atomic_ref_do(gasnet_token_t token, const size_t elmt_size, gasnet_handlerarg_t src_addr_hi, gasnet_handlerarg_t src_addr_lo, gasnet_handlerarg_t dst_addr_hi, gasnet_handlerarg_t dst_addr_lo, gasnet_handlerarg_t local_atomic_operations)
Definition: xmp_intrinsic_gasnet.c:75
_XMP_init_array_desc_NOT_ALIGNED
void _XMP_init_array_desc_NOT_ALIGNED(_XMP_array_t **adesc, _XMP_template_t *template, int ndims, int type, size_t type_size, unsigned long long *dim_acc, void *ap)
Definition: xmp_align.c:113
_XMP_reflect_gpu
void _XMP_reflect_gpu(void *dev_addr, _XMP_array_t *a)
Definition: xmp_reflect_gpu.c:61
_XMP_stride_memcpy_2dim
void _XMP_stride_memcpy_2dim(char *buf1, const char *buf2, const _XMP_array_section_t *array_info, size_t element_size, const int flag)
Definition: xmp_coarray_utils.c:191
_XMP_dist_template_CYCLIC
void _XMP_dist_template_CYCLIC(_XMP_template_t *template, int template_index, int nodes_index)
Definition: xmp_template.c:394
_XMP_mpi_put
void _XMP_mpi_put(const int dst_contiguous, const int src_contiguous, const int org_target_rank, const int dst_dims, const int src_dims, const _XMP_array_section_t *dst_info, const _XMP_array_section_t *src_info, const _XMP_coarray_t *dst_desc, const void *src, const int dst_elmts, const int src_elmts, const int is_dst_on_acc)
Definition: xmp_coarray_mpi.c:424
print_comm_set
void print_comm_set(_XMP_comm_set_t *comm_set0)
Definition: xmp_section_desc.c:62
_XMP_align_array_BLOCK_CYCLIC
void _XMP_align_array_BLOCK_CYCLIC(_XMP_array_t *array, int array_index, int template_index, long long align_subscript, int *temp0)
Definition: xmp_align.c:443
_xmp_gasnet_unpack_get_reply_nonc
void _xmp_gasnet_unpack_get_reply_nonc(gasnet_token_t t, char *archive, size_t transfer_size, const int dst_addr_hi, const int dst_addr_lo, const int dst_dims)
Definition: xmp_coarray_gasnet.c:1243
_XMP_tca_unlock
void _XMP_tca_unlock()
Definition: xmp_onesided_tca.c:423
_XMP_init_nodes_struct_NODES_NUMBER
_XMP_nodes_t * _XMP_init_nodes_struct_NODES_NUMBER(int dim, int ref_lower, int ref_upper, int ref_stride, int *dim_size, int is_static)
Definition: xmp_nodes.c:418
_XMP_mpi_sync_memory
void _XMP_mpi_sync_memory()
Execute sync_memory.
Definition: xmp_coarray_mpi.c:542
_xmp_mpi_post
void _xmp_mpi_post(const int node, int tag)
Post operation.
Definition: xmp_post_wait_mpi.c:113
print_bsd
void print_bsd(_XMP_bsd_t *bsd)
Definition: xmp_section_desc.c:22
_XMP_coarray_list_head
_XMP_coarray_list_t * _XMP_coarray_list_head
_XMP_reflect_sched_type
Definition: xmp_data_struct.h:119
_XMP_mpi_contiguous_put
void _XMP_mpi_contiguous_put(const int org_target_rank, const _XMP_coarray_t *dst_desc, const _XMP_coarray_t *src_desc, const size_t dst_offset, const size_t src_offset, const size_t dst_elmts, const size_t src_elmts, const size_t elmt_size, const bool is_dst_on_acc, const bool is_src_on_acc)
Definition: xmp_coarray_mpi.c:327
_XMP_coarray_attach
void _XMP_coarray_attach(void **, void *, const size_t)
_xmp_gasnet_unpack_using_buf
void _xmp_gasnet_unpack_using_buf(gasnet_token_t t, const int addr_hi, const int addr_lo, const int dst_dims, const int ith, const int flag)
Unpack received data which is stored in buffer.
Definition: xmp_coarray_gasnet.c:919
_XMP_gasnet_build_sync_images_table
void _XMP_gasnet_build_sync_images_table()
Build table and Initialize for sync images.
Definition: xmp_coarray_gasnet.c:1600
_XMP_sched_loop_template_width_N
int _XMP_sched_loop_template_width_N(int ser_init, int ser_cond, int ser_step, int *par_init, int *par_cond, int *par_step, int template_lower, int template_upper, int template_stride, int width, int template_ser_lower, int template_ser_upper)
Definition: xmp_loop.c:116
_XMP_init_reflect_sched_acc
void _XMP_init_reflect_sched_acc(_XMP_reflect_sched_t *sched)
Definition: xmp_reflect_acc.c:74
_XMP_init_nodes_struct_NODES_NAMED
_XMP_nodes_t * _XMP_init_nodes_struct_NODES_NAMED(int dim, _XMP_nodes_t *ref_nodes, int *shrink, int *ref_lower, int *ref_upper, int *ref_stride, int *dim_size, int is_static)
Definition: xmp_nodes.c:498
_XMP_utofu_deallocate
void _XMP_utofu_deallocate(_XMP_coarray_t *coarray_desc)
Definition: xmp_coarray_utofu.c:285
_XMP_align_array_CYCLIC
void _XMP_align_array_CYCLIC(_XMP_array_t *array, int array_index, int template_index, long long align_subscript, int *temp0)
Definition: xmp_align.c:388
_xmp_gasnet_wait
void _xmp_gasnet_wait(const int node, const int tag)
Wait operation with node-ref and tag.
Definition: xmp_post_wait_gasnet.c:146
_XMP_dist_template_BLOCK_CYCLIC
void _XMP_dist_template_BLOCK_CYCLIC(_XMP_template_t *template, int template_index, int nodes_index, unsigned long long width)
Definition: xmp_template.c:399
_XMP_reflect_init_tca
void _XMP_reflect_init_tca(void *acc_addr, _XMP_array_t *adesc)
Definition: xmp_reflect_tca.c:369
_XMP_get_datatype_size
size_t _XMP_get_datatype_size(int datatype)
Definition: xmp_runtime.c:103
_XMP_check_template_ref_inclusion
int _XMP_check_template_ref_inclusion(int ref_lower, int ref_upper, int ref_stride, _XMP_template_t *t, int index)
Definition: xmp_template.c:243
_xmp_mpi_wait_node
void _xmp_mpi_wait_node(const int node)
Wait operation with node-ref.
Definition: xmp_post_wait_mpi.c:142
_XMP_initialize_async_comm_tab
void _XMP_initialize_async_comm_tab()
Definition: xmp_async.c:50
intersection_csds
_XMP_csd_t * intersection_csds(_XMP_csd_t *csd1, _XMP_csd_t *csd2)
Definition: xmp_section_desc.c:116
_XMP_reduce_gpu_NODES_ENTIRE
void _XMP_reduce_gpu_NODES_ENTIRE(_XMP_nodes_t *nodes, void *addr, int count, int datatype, int op)
Definition: xmp_reduce_gpu.c:112
_XMP_mpi_coarray_get_remote_addr
char * _XMP_mpi_coarray_get_remote_addr(const _XMP_coarray_t *desc, const int target_rank, const bool is_acc)
Definition: xmp_coarray_mpi.c:140
_XMP_push_comm
void _XMP_push_comm(_XMP_comm_t *comm)
Definition: xmp_nodes_stack.c:56
_XMP_calc_linear_rank_on_target_nodes
int _XMP_calc_linear_rank_on_target_nodes(_XMP_nodes_t *n, int *rank_array, _XMP_nodes_t *target_nodes)
Definition: xmp_nodes.c:1049
_XMP_dist_template_BLOCK
void _XMP_dist_template_BLOCK(_XMP_template_t *template, int template_index, int nodes_index)
Definition: xmp_template.c:347
_XMP_calc_coord_on_target_nodes2
_Bool _XMP_calc_coord_on_target_nodes2(_XMP_nodes_t *n, int *ncoord, _XMP_nodes_t *target_n, int *target_ncoord)
Definition: xmp_nodes.c:1090
_xmp_gasnet_unpack_reply
void _xmp_gasnet_unpack_reply(gasnet_token_t t, const int ith)
Registor finish information of unpack operation.
Definition: xmp_coarray_gasnet.c:895
_XMP_mpi_coarray_get_local_addr
char * _XMP_mpi_coarray_get_local_addr(const _XMP_coarray_t *desc, const bool is_acc)
Definition: xmp_coarray_mpi.c:145
_XMP_fjrdma_sync_memory_get
void _XMP_fjrdma_sync_memory_get()
Execute sync_memory for get operation.
Definition: xmp_coarray_fjrdma.c:1308
_XMP_threads_finalize
void _XMP_threads_finalize(void)
Definition: xmp_threads_runtime.c:7
_XMP_calc_gmove_array_owner_linear_rank_SCALAR
int _XMP_calc_gmove_array_owner_linear_rank_SCALAR(_XMP_array_t *array, int *ref_index)
Definition: xmp_gmove.c:216
_XMP_add_num_of_gets
void _XMP_add_num_of_gets()
Add 1 to _num_of_gets.
Definition: xmp_coarray_fjrdma.c:1328
_XMP_gmove_bcast_ARRAY
unsigned long long _XMP_gmove_bcast_ARRAY(void *dst_addr, int dst_dim, int *dst_l, int *dst_u, int *dst_s, unsigned long long *dst_d, void *src_addr, int src_dim, int *src_l, int *src_u, int *src_s, unsigned long long *src_d, int type, size_t type_size, int root_rank)
Definition: xmp_gmove.c:273
_XMP_calc_copy_chunk
size_t _XMP_calc_copy_chunk(const int, const _XMP_array_section_t *)
Definition: xmp_coarray_local.c:22
_XMP_stride_memcpy_7dim
void _XMP_stride_memcpy_7dim(char *buf1, const char *buf2, const _XMP_array_section_t *array_info, size_t element_size, const int flag)
Definition: xmp_coarray_utils.c:706
_XMP_gasnet_contiguous_put
void _XMP_gasnet_contiguous_put()
_XMP_mpi_coarray_detach
void _XMP_mpi_coarray_detach(_XMP_coarray_t *coarray_desc, const bool is_acc)
Definition: xmp_coarray_mpi.c:910
_XMP_unpack_vector
void _XMP_unpack_vector(char *restrict dst, char *restrict src, int count, int blocklength, long stride)
Definition: xmp_pack_vector.c:42
_XMP_init
void _XMP_init(int argc, char **argv, MPI_Comm comm)
Definition: xmp_runtime.c:30
_is_the_same_shape_except_for_start
int _is_the_same_shape_except_for_start(const _XMP_array_section_t *array1_info, const _XMP_array_section_t *array2_info, const int array1_dims, const int array2_dims)
Definition: xmp_coarray_utils.c:1600
_XMP_gmove_garray_garray
void _XMP_gmove_garray_garray(_XMP_gmv_desc_t *gmv_desc_leftp, _XMP_gmv_desc_t *gmv_desc_rightp, int mode)
Definition: xmp_gmove.c:4769
intersection_rsds
_XMP_rsd_t * intersection_rsds(_XMP_rsd_t *_rsd1, _XMP_rsd_t *_rsd2)
Definition: xmp_section_desc.c:82
_XMP_world_rank
int _XMP_world_rank
Definition: xmp_world.c:9
_XMP_gasnet_coarray_lastly_deallocate
void _XMP_gasnet_coarray_lastly_deallocate()
Deallocate memory region when calling _XMP_coarray_lastly_deallocate()
Definition: xmp_coarray_gasnet.c:784
_XMPF_reduce_FLMM_NODES_ENTIRE
void _XMPF_reduce_FLMM_NODES_ENTIRE(_XMP_nodes_t *nodes, void *addr, int count, int datatype, int op, int num_locs, void **loc_vars, int *loc_types)
Definition: xmp_reduce.c:296
_XMP_finalize_reflect_sched_gpu
void _XMP_finalize_reflect_sched_gpu(_XMP_reflect_sched_t *sched, _Bool free_buf)
Definition: xmp_reflect_gpu.c:824
_XMP_nodes_dealloc_after_wait_async
void _XMP_nodes_dealloc_after_wait_async(_XMP_nodes_t *n)
Definition: xmp_async.c:272
_XMP_mpi_coarray_get_window
MPI_Win _XMP_mpi_coarray_get_window(const _XMP_coarray_t *desc, bool is_acc)
Definition: xmp_coarray_mpi.c:111
_XMP_tca_contiguous_put
void _XMP_tca_contiguous_put(const int target_rank, const size_t dst_offset, const size_t src_offset, const _XMP_coarray_t *dst_desc, const _XMP_coarray_t *src_desc, const size_t dst_elmts, const size_t src_elmts, const size_t elmt_size)
Definition: xmp_coarray_tca.c:142
_XMP_mpi_coarray_malloc
void _XMP_mpi_coarray_malloc(_XMP_coarray_t *coarray_desc, void **addr, const size_t coarray_size, bool is_acc)
Definition: xmp_coarray_mpi.c:237
_XMP_post_wait_initialize
void _XMP_post_wait_initialize()
Definition: xmp_post_wait.c:8
_XMP_finalize_reflect_sched
void _XMP_finalize_reflect_sched(_XMP_reflect_sched_t *sched, _Bool free_buf)
Definition: xmp_shadow.c:236
_XMP_pack_vector2
void _XMP_pack_vector2(char *restrict dst, char *restrict src, int count, int blocklength, int nnodes, int type_size, int src_block_dim)
Definition: xmp_pack_vector.c:26
_XMP_get_execution_nodes
_XMP_nodes_t * _XMP_get_execution_nodes(void)
Definition: xmp_nodes_stack.c:46
_XMP_mpi_sync_all
void _XMP_mpi_sync_all()
Execute sync_all.
Definition: xmp_coarray_mpi.c:603
_XMP_utofu_error_check
void _XMP_utofu_error_check(int utofu_ret)
Definition: xmp_coarray_utofu.c:6
_XMP_coarray_list_t
struct _XMP_coarray_list_type _XMP_coarray_list_t
_XMP_init_array_comm2
void _XMP_init_array_comm2(_XMP_array_t *array, int args[])
Definition: xmp_align.c:882
_XMPF_unpack_transpose_vector
void _XMPF_unpack_transpose_vector(char *restrict dst, char *restrict src, int dst_stride, int src_stride, int type_size, int dst_block_dim)
Definition: xmp_pack_vector.c:59
_XMP_finalize_array_desc
void _XMP_finalize_array_desc(_XMP_array_t *array)
Definition: xmp_align.c:189
bsd2csd
_XMP_csd_t * bsd2csd(_XMP_bsd_t *bsd)
Definition: xmp_section_desc.c:224
_XMP_sync_images_EXEC
void _XMP_sync_images_EXEC(int *status)
Definition: xmp_coarray_mpi.c:1099
_XMP_stride_memcpy_6dim
void _XMP_stride_memcpy_6dim(char *buf1, const char *buf2, const _XMP_array_section_t *array_info, size_t element_size, const int flag)
Definition: xmp_coarray_utils.c:570
_XMP_coarray_get_list
_XMP_coarray_t ** _XMP_coarray_get_list(int *num)
Definition: xmp_coarray.c:1774
_XMP_calc_array_dim_elmts
void _XMP_calc_array_dim_elmts(_XMP_array_t *array, int array_index)
Definition: xmp_align.c:17
xmpc_ltog
int xmpc_ltog(int local_idx, _XMP_template_t *template, int template_index, int offset)
Definition: xmp_template.c:755
_XMP_set_reflect_acc__
void _XMP_set_reflect_acc__(void *a, int dim, int lwidth, int uwidth, int is_periodic)
_XMP_warning
void _XMP_warning(char *msg)
Definition: xmp_util.c:58
_XMP_UTOFU_EXTERN_
#define _XMP_UTOFU_EXTERN_
Definition: xmp_onesided_utofu.c:2
_XMP_utofu_contiguous_get
void _XMP_utofu_contiguous_get(const int target_rank, const _XMP_coarray_t *dst_desc, const _XMP_coarray_t *src_desc, const uint64_t dst_offset, const uint64_t src_offset, const size_t dst_elmts, const size_t src_elmts, const size_t elmt_size)
Definition: xmp_coarray_utofu.c:729
print_csd
void print_csd(_XMP_csd_t *csd)
Definition: xmp_section_desc.c:32
_XMP_check_overlapping
_Bool _XMP_check_overlapping(const char *dst_start, const char *dst_end, const char *src_start, const char *src_end)
Definition: xmp_coarray_utils.c:63
xmpf_pack
void xmpf_pack(void *v_p, void *a_p, void *m_p)
Definition: xmp_intrinsic.c:6007
_XMP_template_type
Definition: xmp_data_struct.h:98
_XMP_get_current_async
_XMP_async_comm_t * _XMP_get_current_async()
Definition: xmp_async.c:205
_XMP_mpi_build_shift_queue
void _XMP_mpi_build_shift_queue(bool is_acc)
Set initial value to the shift queue.
Definition: xmp_coarray_mpi.c:153
_XMP_check_gmove_array_ref_inclusion_SCALAR
int _XMP_check_gmove_array_ref_inclusion_SCALAR(_XMP_array_t *array, int array_index, int ref_index)
Definition: xmp_gmove.c:309
_xmp_gasnet_lock_initialize
void _xmp_gasnet_lock_initialize(xmp_gasnet_lock_t *lock, const unsigned int number_of_elements)
Definition: xmp_lock_unlock_gasnet.c:9
_XMP_local_get
void _XMP_local_get(void *, const _XMP_coarray_t *, const int, const int, const int, const int, const _XMP_array_section_t *, const _XMP_array_section_t *, const size_t, const size_t)
Definition: xmp_coarray_local.c:597
_XMP_stride_memcpy_3dim
void _XMP_stride_memcpy_3dim(char *buf1, const char *buf2, const _XMP_array_section_t *array_info, size_t element_size, const int flag)
Definition: xmp_coarray_utils.c:260
_XMP_set_coarray_addresses
void _XMP_set_coarray_addresses(const uint64_t addr, const _XMP_array_section_t *array, const int dims, const size_t elmts, uint64_t *addrs)
Definition: xmp_coarray_utils.c:1245
_XMP_nodes_ref_type
Definition: xmp_data_struct.h:63
_xmp_gasnet_wait_node
void _xmp_gasnet_wait_node(const int node)
Wait operation with node-ref.
Definition: xmp_post_wait_gasnet.c:134
_XMP_get_dim_of_allelmts
int _XMP_get_dim_of_allelmts(const int, const _XMP_array_section_t *)
Definition: xmp_coarray_utils.c:120
_XMP_reflect_do_hybrid
void _XMP_reflect_do_hybrid(_XMP_array_t *adesc)
Definition: xmp_reflect_hybrid.c:654
_XMP_fjrdma_build_sync_images_table
void _XMP_fjrdma_build_sync_images_table()
Build table and Initialize for sync images.
Definition: xmp_coarray_fjrdma.c:2148
_XMP_gasnet_sync_all
void _XMP_gasnet_sync_all()
Execute sync_all.
Definition: xmp_coarray_gasnet.c:846
_xmp_mpi_onesided_buf
char * _xmp_mpi_onesided_buf
Definition: xmp_onesided_mpi.c:11
_xmp_gasnet_unpack_get_reply
void _xmp_gasnet_unpack_get_reply(gasnet_token_t t, char *archive, size_t transfer_size, const int dst_addr_hi, const int dst_addr_lo)
Definition: xmp_coarray_gasnet.c:1266
_XMP_tca_initialize
void _XMP_tca_initialize()
Initialize TCA.
Definition: xmp_onesided_tca.c:22
_XMP_coarray_list_type::coarray
_XMP_coarray_t * coarray
Definition: xmp_internal.h:133
_XMP_tca_sync_memory
void _XMP_tca_sync_memory()
Execute sync_memory.
Definition: xmp_coarray_tca.c:177
_XMP_create_nodes_ref_for_target_nodes
_XMP_nodes_ref_t * _XMP_create_nodes_ref_for_target_nodes(_XMP_nodes_t *n, int *rank_array, _XMP_nodes_t *target_nodes)
Definition: xmp_nodes.c:1234
_XMP_stride_memcpy_4dim
void _XMP_stride_memcpy_4dim(char *buf1, const char *buf2, const _XMP_array_section_t *array_info, size_t element_size, const int flag)
Definition: xmp_coarray_utils.c:346
_XMP_pack_vector
void _XMP_pack_vector(char *restrict dst, char *restrict src, int count, int blocklength, long stride)
Definition: xmp_pack_vector.c:9
_XMP_wait_async__
void _XMP_wait_async__(int async_id)
Definition: xmp_async.c:87
_XMP_comm_t
#define _XMP_comm_t
Definition: xmp_data_struct.h:17
_XMP_mpi_get
void _XMP_mpi_get(const int src_contiguous, const int dst_contiguous, const int org_target_rank, const int src_dims, const int dst_dims, const _XMP_array_section_t *src_info, const _XMP_array_section_t *dst_info, const _XMP_coarray_t *src_desc, void *dst, const int src_elmts, const int dst_elmts, const int is_src_on_acc)
Definition: xmp_coarray_mpi.c:483
_XMP_init_shadow
void _XMP_init_shadow(_XMP_array_t *array,...)
Definition: xmp_shadow.c:261
_XMP_stride_memcpy_5dim
void _XMP_stride_memcpy_5dim(char *buf1, const char *buf2, const _XMP_array_section_t *array_info, size_t element_size, const int flag)
Definition: xmp_coarray_utils.c:449
_XMP_fjrdma_contiguous_put
void _XMP_fjrdma_contiguous_put(const int target_rank, const uint64_t dst_offset, const uint64_t src_offset, const _XMP_coarray_t *dst_desc, const _XMP_coarray_t *src_desc, const size_t dst_elmts, const size_t src_elmts, const size_t elmt_size)
Definition: xmp_coarray_fjrdma.c:1616
_XMP_threads_init
void _XMP_threads_init(void)
Definition: xmp_threads_runtime.c:3
_XMP_gasnet_sync_images
void _XMP_gasnet_sync_images(const int num, int image_set[num], int *status)
Execute sync images.
Definition: xmp_coarray_gasnet.c:1677
_XMP_pop_nodes
void _XMP_pop_nodes(void)
Definition: xmp_nodes_stack.c:23
_is_constant_stride_2dim
int _is_constant_stride_2dim(const _XMP_array_section_t *array_info)
Definition: xmp_coarray_utils.c:1405
_XMP_init_reflect_sched_gpu
void _XMP_init_reflect_sched_gpu(_XMP_reflect_sched_t *sched)
Definition: xmp_reflect_gpu.c:801
_xmp_fjrdma_wait_node
void _xmp_fjrdma_wait_node(const int node)
Wait operation with only node-ref.
Definition: xmp_post_wait_fjrdma.c:157
_XMP_gasnet_intrinsic_initialize
void _XMP_gasnet_intrinsic_initialize()
Definition: xmp_intrinsic_gasnet.c:33
_XMP_push_nodes
void _XMP_push_nodes(_XMP_nodes_t *nodes)
Definition: xmp_nodes_stack.c:15
_XMP_reflect_do_gpu
void _XMP_reflect_do_gpu(_XMP_array_t *array_desc)
Definition: xmp_reflect_gpu.c:120
_xmp_gasnet_pack
void _xmp_gasnet_pack(gasnet_token_t t, const char *array_info, const size_t am_request_size, const int src_addr_hi, const int src_addr_lo, const int src_dims, const size_t tansfer_size, const int dst_addr_hi, const int dst_addr_lo)
Definition: xmp_coarray_gasnet.c:1190
_XMP_reflect__
void _XMP_reflect__(_XMP_array_t *a)
Definition: xmp_reflect.c:119
_XMP_mpi_onesided_dealloc_win
void _XMP_mpi_onesided_dealloc_win(MPI_Win *win, void **addr, bool is_acc)
Definition: xmp_onesided_mpi.c:129
_xmp_utofu_add_postreq
void _xmp_utofu_add_postreq(const utofu_vcq_id_t vcqid, const int tag)
Definition: xmp_post_wait_utofu.c:34
_xmp_mpi_post_wait_initialize
void _xmp_mpi_post_wait_initialize()
Initialize environment for post/wait directives.
Definition: xmp_post_wait_mpi.c:24
_XMP_tca_finalize
void _XMP_tca_finalize()
Finalize TCA.
Definition: xmp_onesided_tca.c:45
free_csd
void free_csd(_XMP_csd_t *csd)
Definition: xmp_section_desc.c:173
_XMP_build_coarray_queue
void _XMP_build_coarray_queue()
Build queue for coarray.
Definition: xmp_coarray.c:1574
_XMP_add_num_of_puts
void _XMP_add_num_of_puts()
Add 1 to _num_of_puts.
Definition: xmp_coarray_fjrdma.c:1318
_XMP_calc_template_size
void _XMP_calc_template_size(_XMP_template_t *t)
Definition: xmp_template.c:30
_XMP_array_type
Definition: xmp_data_struct.h:266
_XMP_create_shadow_comm
void _XMP_create_shadow_comm(_XMP_array_t *array, int array_index)
Definition: xmp_shadow.c:16
_xmp_utofu_wait_noargs
void _xmp_utofu_wait_noargs(void)
Definition: xmp_post_wait_utofu.c:89
_xmp_gasnet_lockhandoff
void _xmp_gasnet_lockhandoff(gasnet_token_t token, int handoffarg)
Definition: xmp_lock_unlock_gasnet.c:171
_XMP_sched_loop_template_width_1
int _XMP_sched_loop_template_width_1(int ser_init, int ser_cond, int ser_step, int *par_init, int *par_cond, int *par_step, int template_lower, int template_upper, int template_stride)
Definition: xmp_loop.c:53
_XMP_reduce_CLAUSE
void _XMP_reduce_CLAUSE(void *data_addr, int count, int datatype, int op)
Definition: xmp_reduce.c:351
_XMP_alloc_array2
void _XMP_alloc_array2(void **array_addr, _XMP_array_t *array_desc, int is_coarray, unsigned long long *acc[])
Definition: xmp_align.c:690
_XMP_init_reflect_sched
void _XMP_init_reflect_sched(_XMP_reflect_sched_t *sched)
Definition: xmp_shadow.c:218
_XMP_async_comm
Definition: xmp_data_struct.h:458
_xmp_gasnet_do_lock
void _xmp_gasnet_do_lock(int target_rank, xmp_gasnet_lock_t *lock, int *replystate)
Definition: xmp_lock_unlock_gasnet.c:22
_xmp_gasnet_wait_noargs
void _xmp_gasnet_wait_noargs()
Wait operation without node-ref and tag.
Definition: xmp_post_wait_gasnet.c:123
_XMP_init_nodes_struct_EXEC
_XMP_nodes_t * _XMP_init_nodes_struct_EXEC(int dim, int *dim_size, int is_static)
Definition: xmp_nodes.c:392
xmp_lock
Definition: xmp_lock.h:3
_XMP_fjrdma_regmem
void _XMP_fjrdma_regmem(_XMP_coarray_t *coarray_desc, void *addr, const size_t coarray_size)
Definition: xmp_coarray_fjrdma.c:1567
_XMP_init_nodes_ref
_XMP_nodes_ref_t * _XMP_init_nodes_ref(_XMP_nodes_t *n, int *rank_array)
Definition: xmp_nodes.c:1207
_XMPC_pack_array
void _XMPC_pack_array(void *buffer, void *src, int array_type, size_t array_type_size, int array_dim, int *l, int *u, int *s, unsigned long long *d)
Definition: xmp_array_section.c:1350
_XMP_alloc
void * _XMP_alloc(size_t size)
Definition: xmp_util.c:21
_XMP_coarray_rdma_array_set_1
void _XMP_coarray_rdma_array_set_1(const long, const long, const long, const long, const size_t)
Set transfer 1-dim array information.
Definition: xmp_coarray.c:655
_xmp_mpi_onesided_heap_size
size_t _xmp_mpi_onesided_heap_size
Definition: xmp_onesided_mpi.c:10
_XMP_init_nodes_struct_GLOBAL
_XMP_nodes_t * _XMP_init_nodes_struct_GLOBAL(int dim, int *dim_size, int is_static)
Definition: xmp_nodes.c:344
_XMP_get_execution_nodes_rank
int _XMP_get_execution_nodes_rank(void)
Definition: xmp_nodes_stack.c:51
_XMP_get_offset
size_t _XMP_get_offset(const _XMP_array_section_t *array_info, const int dims)
Definition: xmp_coarray_utils.c:22
xmpc_end_async
void xmpc_end_async(int)
Definition: xmp_async.c:327
_XMP_mpi_coarray_regmem
void _XMP_mpi_coarray_regmem(_XMP_coarray_t *coarray_desc, void *real_addr, const size_t coarray_size, bool is_acc)
Definition: xmp_coarray_mpi.c:1157
_XMP_initialize_onesided_functions
void _XMP_initialize_onesided_functions()
Definition: xmp_onesided.c:71
xmp_coarray
Definition: xmp_data_struct.h:328
get_csd_size
int get_csd_size(_XMP_csd_t *csd)
Definition: xmp_section_desc.c:193
_XMP_gmove_bcast_SCALAR
void _XMP_gmove_bcast_SCALAR(void *dst_addr, void *src_addr, size_t type_size, int root_rank)
_XMP_create_template_desc
_XMP_template_t * _XMP_create_template_desc(int dim, _Bool is_fixed)
Definition: xmp_template.c:10
xmp_reduce_initialize
void xmp_reduce_initialize()
Definition: xmp_reduce.c:553
_XMP_mpi_onesided_initialize
void _XMP_mpi_onesided_initialize(const size_t heap_size)
Definition: xmp_onesided_mpi.c:25
_XMP_sched_loop_template_CYCLIC
void _XMP_sched_loop_template_CYCLIC(int ser_init, int ser_cond, int ser_step, int *par_init, int *par_cond, int *par_step, _XMP_template_t *template, int template_index)
Definition: xmp_loop.c:294
_XMP_fjrdma_initialize
void _XMP_fjrdma_initialize(int argc, char **argv)
Initialize FUJITSU RDMA for the K computer and FX10.
Definition: xmp_onesided_fjrdma.c:7
_XMP_build_sync_images_table
void _XMP_build_sync_images_table()
Build table for sync images.
Definition: xmp_coarray.c:1558
_XMP_fjrdma_atomic_ref
void _XMP_fjrdma_atomic_ref(int target_rank, _XMP_coarray_t *dst_desc, size_t dst_offset, int *value, _XMP_coarray_t *src_desc, size_t src_offset, size_t elmt_size)
Definition: xmp_intrinsic_fjrdma.c:26
_xmp_tca_wait_noargs
void _xmp_tca_wait_noargs()
Wait operation without node-ref and tag.
Definition: xmp_post_wait_tca.c:168
_XMP_mpi_sync_images
void _XMP_mpi_sync_images(const int num, const int *image_set, int *status)
Execute sync images.
Definition: xmp_coarray_mpi.c:1080
_xmp_gasnet_do_setlockstate
void _xmp_gasnet_do_setlockstate(int state)
Definition: xmp_lock_unlock_gasnet.c:150
_XMP_mpi_onesided_finalize
void _XMP_mpi_onesided_finalize()
Definition: xmp_onesided_mpi.c:64
_xmp_fjrdma_post
void _xmp_fjrdma_post(const int node, const int tag)
Post operation.
Definition: xmp_post_wait_fjrdma.c:79
_XMP_mpi_coarray_attach
void _XMP_mpi_coarray_attach(_XMP_coarray_t *coarray_desc, void *addr, const size_t coarray_size, const bool is_acc)
Definition: xmp_coarray_mpi.c:864
_XMP_mpi_contiguous_get
void _XMP_mpi_contiguous_get(const int org_target_rank, const _XMP_coarray_t *dst_desc, const _XMP_coarray_t *src_desc, const size_t dst_offset, const size_t src_offset, const size_t dst_elmts, const size_t src_elmts, const size_t elmt_size, const bool is_dst_on_acc, const bool is_src_on_acc)
Definition: xmp_coarray_mpi.c:377
_XMP_calc_max_copy_chunk
size_t _XMP_calc_max_copy_chunk(const int dst_dims, const int src_dims, const _XMP_array_section_t *dst_info, const _XMP_array_section_t *src_info)
Definition: xmp_coarray_utils.c:43
_XMP_finalize_nodes_ref
void _XMP_finalize_nodes_ref(_XMP_nodes_ref_t *nodes_ref)
Definition: xmp_nodes.c:1228
_XMP_coarray_set_info
void _XMP_coarray_set_info(_XMP_coarray_t *c)
Definition: xmp_coarray.c:297
_xmp_tca_post_wait_initialize
void _xmp_tca_post_wait_initialize()
Initialize environment for post/wait directives.
Definition: xmp_post_wait_tca.c:30
_xmp_gasnet_pack_using_buf
void _xmp_gasnet_pack_using_buf(gasnet_token_t t, const char *array_info, const size_t am_request_size, const int src_addr_hi, const int src_addr_lo, const int src_dims, const int target_rank)
Definition: xmp_coarray_gasnet.c:1292
_xmp_gasnet_atomic_define_do
void _xmp_gasnet_atomic_define_do(gasnet_token_t token, const char *src_addr, const size_t elmt_size, gasnet_handlerarg_t addr_hi, gasnet_handlerarg_t addr_lo, gasnet_handlerarg_t local_atomic_operations)
Definition: xmp_intrinsic_gasnet.c:39
_xmp_mpi_distarray_win
MPI_Win _xmp_mpi_distarray_win
Definition: xmp_onesided_mpi.c:13
_XMP_utofu_atomic_define
void _XMP_utofu_atomic_define(int target_rank, _XMP_coarray_t *dst_desc, size_t dst_offset, int value, size_t elmt_size)
Definition: xmp_intrinsic_utofu.c:32
_xmp_gasnet_unlock_request
void _xmp_gasnet_unlock_request(gasnet_token_t token, int node, uint32_t addr_hi, uint32_t addr_lo)
Definition: xmp_lock_unlock_gasnet.c:156
_xmp_pack_array
void(* _xmp_pack_array)(void *buffer, void *src, int array_type, size_t array_type_size, int array_dim, int *l, int *u, int *s, unsigned long long *d)
Definition: xmp_runtime.c:20
_XMP_reduce_shadow_wait
void _XMP_reduce_shadow_wait(_XMP_array_t *a)
Definition: xmp_reduce_shadow.c:127
_XMP_reduce_gpu_CLAUSE
void _XMP_reduce_gpu_CLAUSE(void *data_addr, int count, int datatype, int op)
Definition: xmp_reduce_gpu.c:144
_is_constant_stride_5dim
int _is_constant_stride_5dim(const _XMP_array_section_t *array_info)
Definition: xmp_coarray_utils.c:1473
_XMP_gasnet_put
void _XMP_gasnet_put(const int dst_contiguous, const int src_contiguous, const int target_rank, const int dst_dims, const int src_dims, const _XMP_array_section_t *dst_info, const _XMP_array_section_t *src_info, const _XMP_coarray_t *dst_desc, const void *src, const size_t dst_elmts, const size_t src_elmts)
Definition: xmp_coarray_gasnet.c:1095
_XMP_fjrdma_coarray_lastly_deallocate
void _XMP_fjrdma_coarray_lastly_deallocate()
Deallocate memory region when calling _XMP_coarray_lastly_deallocate()
Definition: xmp_coarray_fjrdma.c:1593
_XMP_utofu_get
void _XMP_utofu_get(const int src_contiguous, const int dst_contiguous, const int target_rank, const int src_dims, const int dst_dims, const _XMP_array_section_t *src_info, const _XMP_array_section_t *dst_info, const _XMP_coarray_t *src_desc, const _XMP_coarray_t *dst_desc, void *dst, const size_t src_elmts, const size_t dst_elmts)
Definition: xmp_coarray_utofu.c:929
_XMP_tca_comm_send
void _XMP_tca_comm_send(const int rank, const int tag, const int data)
Definition: xmp_onesided_tca.c:246
_XMP_sync_images_COMM
void _XMP_sync_images_COMM(MPI_Comm *comm, int *status)
Definition: xmp_coarray_mpi.c:1105
_XMP_gtol_calc_offset
unsigned long long _XMP_gtol_calc_offset(_XMP_array_t *a, int g_idx[])
Definition: xmp_gmove.c:2991
_xmp_gasnet_post_wait_initialize
void _xmp_gasnet_post_wait_initialize()
Initialize environment for post/wait directives.
Definition: xmp_post_wait_gasnet.c:26
_XMP_coarray_lastly_deallocate
void _XMP_coarray_lastly_deallocate()
Deallocate memory space and an object of the last coarray.
Definition: xmp_coarray.c:1643
_XMP_init_array_comm
void _XMP_init_array_comm(_XMP_array_t *array,...)
Definition: xmp_align.c:834
_XMP_align_array_NOT_ALIGNED
void _XMP_align_array_NOT_ALIGNED(_XMP_array_t *array, int array_index)
Definition: xmp_align.c:253
_xmp_utofu_post_wait_initialize
void _xmp_utofu_post_wait_initialize(void)
Definition: xmp_post_wait_utofu.c:22
_XMP_create_nodes_by_comm
_XMP_nodes_t * _XMP_create_nodes_by_comm(int is_member, _XMP_comm_t *comm)
Definition: xmp_nodes.c:1007
_is_constant_stride_3dim
int _is_constant_stride_3dim(const _XMP_array_section_t *array_info)
Definition: xmp_coarray_utils.c:1422
_XMP_reflect_init_gpu
void _XMP_reflect_init_gpu(void *acc_addr, _XMP_array_t *array_desc)
Definition: xmp_reflect_gpu.c:67
_XMP_sort
void _XMP_sort(_XMP_array_t *a_desc, _XMP_array_t *b_desc, int is_up)
Definition: xmp_sort.c:92
_XMP_utofu_build_sync_images_table
void _XMP_utofu_build_sync_images_table(void)
Definition: xmp_coarray_utofu.c:983
_XMP_gasnet_contiguous_get
void _XMP_gasnet_contiguous_get()
_xmp_tca_post
void _xmp_tca_post(const int node, const int tag)
Post operation.
Definition: xmp_post_wait_tca.c:156
_XMP_reduce_shadow_sum
void _XMP_reduce_shadow_sum(_XMP_array_t *a)
Definition: xmp_reduce_shadow.c:153
_XMP_barrier_EXEC
void _XMP_barrier_EXEC(void)
Definition: xmp_barrier.c:16
_XMP_dist_template_DUPLICATION
void _XMP_dist_template_DUPLICATION(_XMP_template_t *template, int template_index)
Definition: xmp_template.c:327
_XMP_coarray_list_type
Definition: xmp_internal.h:132
_XMP_fjrdma_contiguous_get
void _XMP_fjrdma_contiguous_get(const int target_rank, const _XMP_coarray_t *dst_desc, const _XMP_coarray_t *src_desc, const uint64_t dst_offset, const uint64_t src_offset, const size_t dst_elmts, const size_t src_elmts, const size_t elmt_size)
Definition: xmp_coarray_fjrdma.c:1911
_XMP_check_reflect_type
void _XMP_check_reflect_type(void)
Definition: xmp_pack_vector.c:300
_XMP_finalize_onesided_functions
void _XMP_finalize_onesided_functions()
Definition: xmp_onesided.c:142
_XMP_calc_rank_array
void _XMP_calc_rank_array(_XMP_nodes_t *n, int *rank_array, int linear_rank)
Definition: xmp_nodes.c:1026
_XMP_finalize_nodes
void _XMP_finalize_nodes(_XMP_nodes_t *nodes)
Definition: xmp_nodes.c:816
_xmp_gasnet_unpack_get_reply_using_buf
void _xmp_gasnet_unpack_get_reply_using_buf(gasnet_token_t t)
Set done flag for get operation.
Definition: xmp_coarray_gasnet.c:1276
_XMP_bsd_type
Definition: xmp_data_struct.h:419
_XMP_calc_global_index_BCAST
int _XMP_calc_global_index_BCAST(int dst_dim, int *dst_l, int *dst_u, int *dst_s, _XMP_array_t *src_array, int *src_array_nodes_ref, int *src_l, int *src_u, int *src_s)
Definition: xmp_gmove.c:419
_XMP_fjrdma_put
void _XMP_fjrdma_put(const int dst_contiguous, const int src_contiguous, const int target_rank, const int dst_dims, const int src_dims, const _XMP_array_section_t *dst_info, const _XMP_array_section_t *src_info, const _XMP_coarray_t *dst_desc, const _XMP_coarray_t *src_desc, void *src, const size_t dst_elmts, const size_t src_elmts)
Definition: xmp_coarray_fjrdma.c:1866
_XMP_gmove_localcopy_ARRAY
void _XMP_gmove_localcopy_ARRAY(int type, int type_size, void *dst_addr, int dst_dim, int *dst_l, int *dst_u, int *dst_s, unsigned long long *dst_d, void *src_addr, int src_dim, int *src_l, int *src_u, int *src_s, unsigned long long *src_d)
Definition: xmp_gmove.c:322
_XMP_csd_type
Definition: xmp_data_struct.h:430
_is_all_element
int _is_all_element(const _XMP_array_section_t *array_info, int dim)
Definition: xmp_coarray_utils.c:1369
_XMP_split_world_by_color
int _XMP_split_world_by_color(int color)
Definition: xmp_world.c:42
_XMP_gmove_garray_scalar
void _XMP_gmove_garray_scalar(_XMP_gmv_desc_t *gmv_desc_leftp, void *scalar, int mode)
Definition: xmp_gmove.c:4732
_XMP_gasnet_initialize
void _XMP_gasnet_initialize(const size_t xmp_gasnet_heap_size, const size_t xmp_gasnet_stride_size)
Initialize GASNet job.
Definition: xmp_onesided_gasnet.c:32
_XMP_pop_n_free_nodes
void _XMP_pop_n_free_nodes(void)
Definition: xmp_nodes_stack.c:30
_XMP_rsd_type
Definition: xmp_data_struct.h:409
_is_constant_stride_1dim
int _is_constant_stride_1dim()
If 1dim array has a constant stride, return TRUE (Always TRUE)
Definition: xmp_coarray_utils.c:1395
_XMP_array_section
Definition: xmp_data_struct.h:375
_XMP_stride_memcpy_1dim
void _XMP_stride_memcpy_1dim(char *buf1, const char *buf2, const _XMP_array_section_t *array_info, size_t element_size, const int flag)
Definition: xmp_coarray_utils.c:142
_XMP_fjrdma_coarray_malloc
void _XMP_fjrdma_coarray_malloc(_XMP_coarray_t *coarray_desc, void **addr, const size_t coarray_size)
Definition: xmp_coarray_fjrdma.c:1553
_XMP_reduce_tca_NODES_ENTIRE
void _XMP_reduce_tca_NODES_ENTIRE(_XMP_nodes_t *nodes, void *addr, int count, int datatype, int op)
Definition: xmp_reduce_tca.c:417
_XMP_dealloc_array
void _XMP_dealloc_array(_XMP_array_t *array_desc)
Definition: xmp_align.c:780
_XMP_init_array_desc
void _XMP_init_array_desc(_XMP_array_t **array, _XMP_template_t *template, int dim, int type, size_t type_size,...)
Definition: xmp_align.c:34
_XMP_gmove_array_array_common
void _XMP_gmove_array_array_common(_XMP_gmv_desc_t *gmv_desc_leftp, _XMP_gmv_desc_t *gmv_desc_rightp, int *dst_l, int *dst_u, int *dst_s, unsigned long long *dst_d, int *src_l, int *src_u, int *src_s, unsigned long long *src_d, int mode)
Definition: xmp_gmove.c:2036
_XMP_nodes_type
Definition: xmp_data_struct.h:40
_XMP_reflect_acc__
void _XMP_reflect_acc__(void *acc_addr, void *array_desc)
_XMP_local_put
void _XMP_local_put(_XMP_coarray_t *, const void *, const int, const int, const int, const int, const _XMP_array_section_t *, const _XMP_array_section_t *, const size_t, const size_t)
Definition: xmp_coarray_local.c:563
_XMP_init_array_nodes
void _XMP_init_array_nodes(_XMP_array_t *array)
Definition: xmp_align.c:927
_XMP_barrier_NODES_ENTIRE
void _XMP_barrier_NODES_ENTIRE(_XMP_nodes_t *nodes)
Definition: xmp_barrier.c:8
_xmp_mpi_wait
void _xmp_mpi_wait(const int node, const int tag)
Wait operation with node-ref and tag.
Definition: xmp_post_wait_mpi.c:165
_XMP_coarray_list_tail
_XMP_coarray_list_t * _XMP_coarray_list_tail
_xmp_gasnet_atomic_ref_reply_do
void _xmp_gasnet_atomic_ref_reply_do(gasnet_token_t token, int *dst_addr, size_t elmt_size, gasnet_handlerarg_t src_addr_hi, gasnet_handlerarg_t src_addr_lo, gasnet_handlerarg_t local_atomic_operations)
Definition: xmp_intrinsic_gasnet.c:85
_XMP_get_on_ref_id
unsigned long long _XMP_get_on_ref_id(void)
Definition: xmp_util.c:13
_XMP_gmove_scalar_garray
void _XMP_gmove_scalar_garray(void *scalar, _XMP_gmv_desc_t *gmv_desc_rightp, int mode)
Definition: xmp_gmove.c:4704
_XMP_normalize_array_section
void _XMP_normalize_array_section(_XMP_gmv_desc_t *gmv_desc, int idim, int *lower, int *upper, int *stride)
Definition: xmp_array_section.c:899
_XMP_set_coarray_addresses_with_chunk
void _XMP_set_coarray_addresses_with_chunk(uint64_t *addrs, const uint64_t base_addr, const _XMP_array_section_t *array_info, const int dims, const size_t chunk_size, const size_t copy_elmts)
Definition: xmp_coarray_utils.c:860
_XMP_N_MAX_DIM
#define _XMP_N_MAX_DIM
Definition: xmp_constant.h:6
_XMP_fjrdma_atomic_define
void _XMP_fjrdma_atomic_define(int target_rank, _XMP_coarray_t *dst_desc, size_t dst_offset, int value, _XMP_coarray_t *src_desc, size_t src_offset, size_t elmt_size)
Definition: xmp_intrinsic_fjrdma.c:3
_XMP_coarray_rdma_array_set_n
void _XMP_coarray_rdma_array_set_n(const int n, const long start[], const long length[], const long stride[], const long elmts[], const long distance[])
Set transfer n-dim array information.
Definition: xmp_coarray.c:921
_XMP_calc_template_owner_SCALAR
int _XMP_calc_template_owner_SCALAR(_XMP_template_t *ref_template, int dim_index, long long ref_index)
Definition: xmp_template.c:632
_XMP_gmove_inout_scalar
void _XMP_gmove_inout_scalar(void *scalar, _XMP_gmv_desc_t *gmv_desc, int rdma_type)
_XMP_mpi_atomic_define
void _XMP_mpi_atomic_define(int target_rank, _XMP_coarray_t *c, size_t offset, int value, size_t elmt_size)
Definition: xmp_intrinsic_mpi.c:3
_xmp_tca_wait_node
void _xmp_tca_wait_node(const int node)
Wait operation with node-ref.
Definition: xmp_post_wait_tca.c:200
_XMP_mpi_onesided_alloc_win
void _XMP_mpi_onesided_alloc_win(MPI_Win *win, void **addr, size_t size, MPI_Comm comm, bool is_acc)
Definition: xmp_onesided_mpi.c:99
_XMP_utofu_sync_images
void _XMP_utofu_sync_images(const int num, int *image_set, int *status)
Definition: xmp_coarray_utofu.c:1065
_XMP_utofu_check_mrq_notice
uint64_t _XMP_utofu_check_mrq_notice(struct utofu_mrq_notice *notice)
Definition: xmp_coarray_utofu.c:201
_XMP_coarray_malloc_info_n
void _XMP_coarray_malloc_info_n(const long *n, const int ndims, const size_t elmt_size)
Set n-dim coarray information.
Definition: xmp_coarray.c:140
_XMP_init_world
void _XMP_init_world(int *argc, char ***argv)
Definition: xmp_world.c:12
_XMPF_running
int _XMPF_running
Definition: xmp_runtime.c:16
_XMP_bcast_NODES_ENTIRE_OMITTED
void _XMP_bcast_NODES_ENTIRE_OMITTED(_XMP_nodes_t *bcast_nodes, void *addr, int count, size_t datatype_size)
Definition: xmp_bcast.c:12
_XMP_coarray_put
void _XMP_coarray_put(void *, void *, void *)
Definition: xmp_coarray.c:1160
_XMP_fjrdma_sync_images
void _XMP_fjrdma_sync_images(const int num, int *image_set, int *status)
Execute sync images.
Definition: xmp_coarray_fjrdma.c:2251
_xmp_gasnet_pack_get
void _xmp_gasnet_pack_get(gasnet_token_t t, const char *array_info, const size_t am_request_size, const int src_addr_hi, const int src_addr_lo, const int src_dims, const int dst_dims, const size_t tansfer_size, const int dst_addr_hi, const int dst_addr_lo)
Definition: xmp_coarray_gasnet.c:1216
_xmp_gasnet_add_notify
void _xmp_gasnet_add_notify(gasnet_token_t token, const int rank)
Definition: xmp_coarray_gasnet.c:1616
_check_round
int _check_round(const _XMP_array_section_t *array, const int dim)
Definition: xmp_coarray_utils.c:1387
_XMP_gasnet_get
void _XMP_gasnet_get(const int src_contiguous, const int dst_contiguous, const int target_rank, const int src_dims, const int dst_dims, const _XMP_array_section_t *src_info, const _XMP_array_section_t *dst_info, const _XMP_coarray_t *src_desc, const void *dst, const size_t src_elmts, const size_t dst_elmts)
Definition: xmp_coarray_gasnet.c:1430
_XMP_gmove_larray_garray
void _XMP_gmove_larray_garray(_XMP_gmv_desc_t *gmv_desc_leftp, _XMP_gmv_desc_t *gmv_desc_rightp, int mode)
Definition: xmp_gmove.c:5003
_XMP_sched_loop_template_BLOCK_CYCLIC
void _XMP_sched_loop_template_BLOCK_CYCLIC(int ser_init, int ser_cond, int ser_step, int *par_init, int *par_cond, int *par_step, _XMP_template_t *template, int template_index)
Definition: xmp_loop.c:335
alloc_csd
_XMP_csd_t * alloc_csd(int n)
Definition: xmp_section_desc.c:164
_XMP_sched_loop_template_BLOCK
void _XMP_sched_loop_template_BLOCK(int ser_init, int ser_cond, int ser_step, int *par_init, int *par_cond, int *par_step, _XMP_template_t *template, int template_index)
Definition: xmp_loop.c:196
_XMP_coarray_list_type::next
struct _XMP_coarray_list_type * next
Definition: xmp_internal.h:134
_xmp_gasnet_post
void _xmp_gasnet_post(const int node, const int tag)
Post operation.
Definition: xmp_post_wait_gasnet.c:68
_XMP_bcast_NODES_ENTIRE_NODES_V
void _XMP_bcast_NODES_ENTIRE_NODES_V(_XMP_nodes_t *bcast_nodes, void *addr, int count, size_t datatype_size, _XMP_nodes_t *from_nodes, va_list args)
Definition: xmp_bcast.c:69
_xmp_gasnet_setlockstate
void _xmp_gasnet_setlockstate(gasnet_token_t token, int state)
Definition: xmp_lock_unlock_gasnet.c:145
_XMP_pop_n_free_nodes_wo_finalize_comm
void _XMP_pop_n_free_nodes_wo_finalize_comm(void)
Definition: xmp_nodes_stack.c:38
xmpf_pack_nomask
void xmpf_pack_nomask(void *v_p, void *a_p)
Definition: xmp_intrinsic.c:6023
_XMP_finalize_comm
void _XMP_finalize_comm(_XMP_comm_t *comm)
Definition: xmp_nodes_stack.c:61
_XMP_utofu_regmem
void _XMP_utofu_regmem(_XMP_coarray_t *coarray_desc, void *addr, const size_t coarray_size)
Definition: xmp_coarray_utofu.c:238
_XMP_comm_set_type
Definition: xmp_data_struct.h:439
_XMP_local_contiguous_copy
void _XMP_local_contiguous_copy(char *dst, const char *src, const size_t dst_elmts, const size_t src_elmts, const size_t elmt_size)
Definition: xmp_coarray_utils.c:79
xmp_lock.h
_XMP_tca_comm_recv
void _XMP_tca_comm_recv(const int rank, int *tag, int *data)
Definition: xmp_onesided_tca.c:339
_XMP_is_the_same_constant_stride
int _XMP_is_the_same_constant_stride(const _XMP_array_section_t *array1_info, const _XMP_array_section_t *array2_info, const int array1_dims, const int array2_dims)
Definition: xmp_coarray_utils.c:1627
_XMP_mpi_build_sync_images_table
void _XMP_mpi_build_sync_images_table()
Build table and Initialize for sync images.
Definition: xmp_coarray_mpi.c:951
_XMP_utofu_atomic_ref
void _XMP_utofu_atomic_ref(int target_rank, _XMP_coarray_t *dst_desc, size_t dst_offset, int *value, size_t elmt_size)
Definition: xmp_intrinsic_utofu.c:59
_XMP_align_array_GBLOCK
void _XMP_align_array_GBLOCK(_XMP_array_t *array, int array_index, int template_index, long long align_subscript, int *temp0)
Definition: xmp_align.c:555
_XMPC_unpack_array
void _XMPC_unpack_array(void *dst, void *buffer, int array_type, size_t array_type_size, int array_dim, int *l, int *u, int *s, unsigned long long *d)
Definition: xmp_array_section.c:1368
_is_constant_stride_7dim
int _is_constant_stride_7dim(const _XMP_array_section_t *array_info)
Definition: xmp_coarray_utils.c:1549
xmpf_unpack_nomask
void xmpf_unpack_nomask(void *a_p, void *v_p)
Definition: xmp_intrinsic.c:6323
xmp_get_ruuning
int xmp_get_ruuning()
Definition: xmp_runtime.c:25
_XMP_get_next_rank
int _XMP_get_next_rank(_XMP_nodes_t *nodes, int *rank_array)
Definition: xmp_nodes.c:1291
_XMP_fjrdma_finalize
void _XMP_fjrdma_finalize()
Finalize FUJITSU RDMA for the K computer and FX10.
Definition: xmp_onesided_fjrdma.c:16