libxmp/libxmpf in Omni Compiler  1.3.4
xmp_data_struct.h
Go to the documentation of this file.
1 #ifndef _XMP_DATA_STRUCT
2 #define _XMP_DATA_STRUCT
3 #include <mpi.h>
4 #include <stdint.h>
5 #include <stdbool.h>
6 #include "xmp_constant.h"
7 #if defined(OMNI_TARGET_CPU_KCOMPUTER) && defined(K_RDMA_REFLECT)
8 #include <mpi-ext.h>
9 #endif
10 #if defined(_XMP_XACC)
11 #include "xacc_internal.h"
12 #endif
13 #if defined(_XMP_UTOFU)
14 #include <utofu.h>
15 #endif
16 
17 #define _XMP_comm_t void
18 
19 // nodes descriptor
21  int shrink;
22  // enable when shrink is false
23  int lower;
24  int upper;
25  int stride;
26  // ---------------------------
27 
28  int size;
30 
31 typedef struct _XMP_nodes_info_type {
32  int size;
33 
34  // enable when is_member is true
35  int rank;
36  // -----------------------------
39 
40 typedef struct _XMP_nodes_type {
41 
42  int desc_kind;
43 
44  unsigned long long on_ref_id;
45 
46  int is_member;
47  int dim;
48  int comm_size;
49  int attr;
50 
51  // enable when is_member is true
52  int comm_rank;
54  _XMP_comm_t *subcomm; // enable when attr is _XMP_ENTIRE_NODES
55  int use_subcomm; // enable when attr is _XMP_ENTIRE_NODES
56 
58  // enable when inherit_nodes is not NULL
61 } _XMP_nodes_t;
62 
63 typedef struct _XMP_nodes_ref_type {
65  int *ref;
68 
69 // template desciptor
70 typedef struct _XMP_template_info_type {
71  // enable when is_fixed is true
72  long long ser_lower;
73  long long ser_upper;
74  unsigned long long ser_size;
75  // ----------------------------
77 
78 typedef struct _XMP_template_chunk_type {
79  // enable when is_owner is true
80  long long par_lower;
81  long long par_upper;
82  unsigned long long par_width;
83  // ----------------------------
84 
86  unsigned long long par_chunk_width;
88  long long *mapping_array;
90 
91  // enable when dist_manner is not _XMP_N_DIST_DUPLICATION
93  // enable when onto_nodes_index is not _XMP_N_NO_ONTO_NODES
95  // --------------------------------------------------------
97 
98 typedef struct _XMP_template_type {
99 
101 
102  unsigned long long on_ref_id;
103 
104  _Bool is_fixed;
106  _Bool is_owner;
107 
108  int dim;
109 
110  // enable when is_distributed is true
113  // ----------------------------------
114 
117 
118 // schedule of shadow comm.
119 typedef struct _XMP_reflect_sched_type {
120 
124 
127 
128  MPI_Datatype datatype_lo;
129  MPI_Datatype datatype_hi;
130 
131  MPI_Request req[4];
132  MPI_Request req_reduce[4];
133 
136 
139 
141  long long stride;
142 
144 
145 #if defined(_XMP_XACC)
146 #if defined(_XMP_TCA)
147  void *dev_addr;
148  void *lo_send_host_buf, *lo_recv_host_buf;
149  void *hi_send_host_buf, *hi_recv_host_buf;
150  void *lo_async_id;
151  void *hi_async_id;
152  off_t lo_src_offset, lo_dst_offset;
153  off_t hi_src_offset, hi_dst_offset;
154  void *lo_send_handle, *lo_recv_handle;
155  void *hi_send_handle, *hi_recv_handle;
156 #else
157  void *lo_send_host_buf, *lo_recv_host_buf;
158  void *hi_send_host_buf, *hi_recv_host_buf;
159  _XACC_queue_t lo_async_id;
160  _XACC_queue_t hi_async_id;
161  _XACC_memory_t dev_mem;
162 
163  //offset of array_dev_mem
164  size_t lo_send_offset;
165  size_t lo_recv_offset;
166  size_t hi_send_offset;
167  size_t hi_recv_offset;
168  _XACC_memory_t lo_send_buf_mem;
169  _XACC_memory_t lo_recv_buf_mem;
170  _XACC_memory_t hi_send_buf_mem;
171  _XACC_memory_t hi_recv_buf_mem;
172  size_t lo_send_buf_offset;
173  size_t lo_recv_buf_offset;
174  size_t hi_send_buf_offset;
175  size_t hi_recv_buf_offset;
176 #endif
177 #endif
179 
180 // schedule of asynchronous reflect
181 typedef struct _XMP_async_reflect_type {
182 
185 
186  MPI_Datatype *datatype;
187  MPI_Request *reqs;
188  MPI_Request *reqs_reduce;
189  int nreqs;
190 
192 
193 // aligned array descriptor
194 typedef struct _XMP_array_info_type {
198 
199  int ser_lower; // Lower bound of a global array, and output value of xmp_array_lbound().
200  int ser_upper; // Upper bound of a global array, and output value of xmp_array_lbound().
201  int ser_size; // Size of a global array.
202 
203  // enable when is_allocated is true
204  int par_lower; // Lower bound of a global array on a node.
205  int par_upper; // Upper bound of a global array on a node.
206  int par_stride; // Stride of a global array on a node.
207  int par_size; // Size of a global array on a node.
208 
209  int local_lower; // Lower bound of a local array
210  int local_upper; // Upper bound of a local array
211  int local_stride; // Stride of a local array
212  int alloc_size; // Number of elements of a local array
213 
214  // ex1)
215  // #pragma xmp template t(0:19)
216  // #pragma xmp nodes p(4)
217  // #pragma xmp distribute t(block) onto p
218  // int a[20];
219  // #pragma xmp align a[i] with t(i)
220  //
221  // ser_lower -> 0, ser_upper -> 19, ser_size -> 20
222  // par_lower -> 5*(xmp_node_num()-1),
223  // par_upper -> 5*xmp_node_num()-1, par_size -> 5
224  // local_lower -> 0, local_upper -> 4, alloc_size -> 5
225 
226  // ex2)
227  // #pragma xmp template t(0:19)
228  // #pragma xmp nodes p(4)
229  // #pragma xmp distribute t(block) onto p
230  // int a[20];
231  // #pragma xmp align a[i] with t(i)
232  // #pragma xmp shadow a[1]
233  //
234  // Values of ser_lower, ser_upper, ser_size, par_lower, par_upper, par_size are
235  // the same of ex1).
236  //
237  // local_lower -> 1, local_upper -> 5, alloc_size -> 7
238 
239  int *temp0;
240  int temp0_v;
241 
242  unsigned long long dim_acc;
243  unsigned long long dim_elmts;
244  // --------------------------------
245 
246  long long align_subscript;
247 
251 
254  // enable when is_shadow_comm_member is true
258  // -----------------------------------------
259 
261 
262  unsigned long long *acc;
263 
265 
266 typedef struct _XMP_array_type {
267 
269 
272  int dim;
273  int type;
274  size_t type_size;
275  MPI_Datatype mpi_type;
276  int order;
277 
278  // enable when is_allocated is true
280 #if defined(OMNI_TARGET_CPU_KCOMPUTER) && defined(K_RDMA_REFLECT)
281  uint64_t rdma_addr;
282  int rdma_memid;
283 #endif
284 #if defined(_XMP_TCA)
285  void* tca_handle;
286  void* tca_reflect_desc;
287  _Bool set_handle; // If tca_handle has been set, set_handle = true
288  _Bool set_tca_desc;
289  int dma_slot;
290  int wait_slot;
291  int wait_tag;
292 #endif
293  unsigned long long total_elmts;
294  // --------------------------------
295 
297 
298  // FIXME do not use these members
299  // enable when is_align_comm_member is true
303  // ----------------------------------------
304 
307 
308 #ifdef _XMP_MPI3_ONESIDED
309  struct xmp_coarray *coarray;
310 #endif
311 
314 } _XMP_array_t;
315 
316 typedef struct _XMP_task_desc_type {
318  int execute;
319 
320  unsigned long long on_ref_id;
321 
326 
327 // Note: When member is changed, _XMP_coarray_deallocate() may be changed.
328 typedef struct xmp_coarray{
329  char **addr; // Pointer to each node.
330  // e.g.) xmp_coarray.addr[2] is a pointer of an object on node 2.
331 
332 #ifdef _XMP_FJRDMA
333  uint64_t laddr; // On the FJRDMA machines, xmp_coarray.addr[_XMP_world_rank] is not local address of a coarray,
334  // Thus, "laddr" is defined the local address.
335 #endif
336  char *real_addr; // Pointer to local node.
337  // Note that xmp_coarray.addr[my_rank] may not be a pointer of an object.
338 
339  size_t elmt_size; // Element size of a coarray. A unit of it is Byte.
340  // e.g.) "int a[10]:[*]" is 4.
341 
342  int coarray_dims; // Number of dimensions of coarray.
343  // e.g.) "int a[10][20]:[4][2][*]" is 2.
344 
345  long *coarray_elmts; // Number of elements of each dimension of a coarray.
346  // e.g.) When "int a[10][20]:[*]", coarray_elmts[0] is 10, coarray_elmts[1] is 20.
347  // If a coarray is scalar, coarray_elmts[0] is 1.
348 
349  long *distance_of_coarray_elmts; // Distance between each dimension of coarray. A unit of the distance is Byte.
350  // e.g.) When "int a[10][20][30]:[*]", distance_of_coarray_elmts[0] is 2400 (20*30*sizeof(int)),
351  // distance_of_coarray_elmts[1] is 120 (30*sizeof(int)),
352  // distance_of_coarray_elmts[0] is 4 (sizeof(int)).
353 
354  int image_dims; // Number of dimensions of image set.
355  // e.g.) When "int a[10][20]:[4][2][*]" is 3.
356 
357  int *distance_of_image_elmts; // Distance between each dimension of image set.
358  // e.g.) When "int a[10][20]:[4][2][*]", distance_of_image_elmts[0] is 1,
359  // distance_of_image_elmts[1] is 4, distance_of_image_elmts[2] is 8.
360 #ifdef _XMP_MPI3_ONESIDED
361  MPI_Win win;
362  //#ifdef _XMP_XACC
363  char **addr_dev;
364  char *real_addr_dev;
365  MPI_Win win_acc;
366  _XMP_nodes_t *nodes; //nodes associated with window. it is not the same as _coarrayInfo_t.nodes in xmpf_coarray_alloc.c
367  //#endif
368 #endif
369 
370 #ifdef _XMP_UTOFU
371  utofu_stadd_t *stadds;
372 #endif
374 
375 typedef struct _XMP_array_section{
376  long start;
377  long length;
378  long stride;
379  long elmts; // Number of elements in each dimension
380  long distance; // Distance between each dimension of an array.
381  // e.g.) When "int a[10][20][30]", _XMP_array_section_t[0].distance is 20*30*sizeof(int),
382  // _XMP_array_section_t[1].distance is 30*sizeof(int),
383  // _XMP_array_section_t[0].distance is sizeof(int),
385 
386 typedef struct _XMP_gmv_desc_type
387 {
388  _Bool is_global;
389  int ndims;
390 
392 
393  void *local_data;
394  int *a_lb;
395  int *a_ub;
396 
397  int *kind;
398  int *lb;
399  int *ub;
400  int *st;
401 
402 #if defined(_XMP_XACC)
403  void *a_dev;
404 #endif
406 
407 // Regular Section Descriptor (RSD)
408 // (l:u:s)
409 typedef struct _XMP_rsd_type {
410  int l;
411  int u;
412  int s;
413 } _XMP_rsd_t;
414 
415 // Basic Section Descriptor (BSD)
416 // (l:u:b:c)
417 // b = block width
418 // c = cyclic length
419 typedef struct _XMP_bsd_type {
420  int l;
421  int u;
422  int b;
423  int c;
424 } _XMP_bsd_t;
425 
426 // Common Section Descriptor (CSD)
427 // ((l_1,...,l_n):(u_1,...,u_n):s)
428 // proposed in Gwan-Hwan Hwang , Jenq Kuen Lee, Communication set generations with CSD calculus and
429 // expression-rewriting framework, Parallel Computing, v.25 n.9, p.1105-1130, Sept. 1999
430 typedef struct _XMP_csd_type {
431  int *l;
432  int *u;
433  int n;
434  int s;
435 } _XMP_csd_t;
436 
437 // Communication Set
438 // ((l_1:u_1),(l_2:u_2),...)
439 typedef struct _XMP_comm_set_type {
440  int l;
441  int u;
444 
445 //
446 // for asynchronous comms.
447 //
448 
449 typedef struct _XMP_async_gmove {
450  int mode;
451  void *sendbuf;
452  void *recvbuf;
457 
458 typedef struct _XMP_async_comm {
459  int async_id;
460  int nreqs;
461  int nnodes;
462  _Bool is_used;
463  int type;
464  MPI_Request *reqs;
470 
471 #define _XMP_ASYNC_COMM_SIZE 511
472 #define _XMP_MAX_ASYNC_REQS (4 * _XMP_N_MAX_DIM * 10)
473 #define _XMP_MAX_ASYNC_NODES (20)
474 
475 typedef struct _XMP_gpu_array_type {
476  int gtol;
477  unsigned long long acc;
479 
480 typedef struct _XMP_gpu_data_type {
482  void *host_addr;
483  void *device_addr;
486  size_t size;
488 
489 #endif // _XMP_DATA_STRUCT
_XMP_reflect_sched_t
struct _XMP_reflect_sched_type _XMP_reflect_sched_t
_XMP_array_info_type::align_subscript
long long align_subscript
Definition: xmp_data_struct.h:246
_XMP_nodes_t
struct _XMP_nodes_type _XMP_nodes_t
_XMP_gpu_data_type::host_array_desc
_XMP_array_t * host_array_desc
Definition: xmp_data_struct.h:484
_XMP_reflect_sched_type::is_periodic
int is_periodic
Definition: xmp_data_struct.h:126
_XMP_async_reflect_type::uwidth
int uwidth[_XMP_N_MAX_DIM]
Definition: xmp_data_struct.h:183
_XMP_array_type::array_nodes
_XMP_nodes_t * array_nodes
Definition: xmp_data_struct.h:306
_XMP_template_chunk_type::par_upper
long long par_upper
Definition: xmp_data_struct.h:81
_XMP_comm_set_t
struct _XMP_comm_set_type _XMP_comm_set_t
_XMP_nodes_info_type::size
int size
Definition: xmp_data_struct.h:32
_XMP_nodes_type::info
_XMP_nodes_info_t info[1]
Definition: xmp_data_struct.h:60
_XMP_nodes_info_type
Definition: xmp_data_struct.h:31
_XMP_nodes_inherit_info_type::shrink
int shrink
Definition: xmp_data_struct.h:21
_XMP_template_chunk_t
struct _XMP_template_chunk_type _XMP_template_chunk_t
_XMP_nodes_type::comm_size
int comm_size
Definition: xmp_data_struct.h:48
_XMP_template_type::info
_XMP_template_info_t info[1]
Definition: xmp_data_struct.h:115
xmp_coarray::distance_of_coarray_elmts
long * distance_of_coarray_elmts
Definition: xmp_data_struct.h:349
_XMP_task_desc_type::on_ref_id
unsigned long long on_ref_id
Definition: xmp_data_struct.h:320
_XMP_template_info_type::ser_size
unsigned long long ser_size
Definition: xmp_data_struct.h:74
_XMP_nodes_type::use_subcomm
int use_subcomm
Definition: xmp_data_struct.h:55
_XMP_task_desc_type
Definition: xmp_data_struct.h:316
_XMP_array_info_type::align_template_index
int align_template_index
Definition: xmp_data_struct.h:260
_XMP_async_gmove::recvbuf
void * recvbuf
Definition: xmp_data_struct.h:452
_XMP_nodes_type::subcomm
_XMP_comm_t * subcomm
Definition: xmp_data_struct.h:54
_XMP_async_reflect_type::is_periodic
_Bool is_periodic[_XMP_N_MAX_DIM]
Definition: xmp_data_struct.h:184
_XMP_template_info_type::ser_lower
long long ser_lower
Definition: xmp_data_struct.h:72
_XMP_template_t
struct _XMP_template_type _XMP_template_t
_XMP_rsd_type::u
int u
Definition: xmp_data_struct.h:411
xmp_coarray::addr
char ** addr
Definition: xmp_data_struct.h:329
_XMP_array_info_type::shadow_comm_rank
int shadow_comm_rank
Definition: xmp_data_struct.h:257
_XMP_nodes_type::is_member
int is_member
Definition: xmp_data_struct.h:46
_XMP_gmv_desc_type::lb
int * lb
Definition: xmp_data_struct.h:398
_XMP_reflect_sched_type::datatype_hi
MPI_Datatype datatype_hi
Definition: xmp_data_struct.h:129
_XMP_async_comm::next
struct _XMP_async_comm * next
Definition: xmp_data_struct.h:468
_XMP_array_info_type
Definition: xmp_data_struct.h:194
_XMP_gpu_data_type::device_array_desc
_XMP_gpu_array_t * device_array_desc
Definition: xmp_data_struct.h:485
_XMP_nodes_type::inherit_nodes
struct _XMP_nodes_type * inherit_nodes
Definition: xmp_data_struct.h:57
_XMP_gmv_desc_type::st
int * st
Definition: xmp_data_struct.h:400
_XMP_array_info_type::reflect_acc_sched
_XMP_reflect_sched_t * reflect_acc_sched
Definition: xmp_data_struct.h:253
_XMP_array_section::length
long length
Definition: xmp_data_struct.h:377
_XMP_template_type::chunk
_XMP_template_chunk_t * chunk
Definition: xmp_data_struct.h:112
_XMP_csd_type::n
int n
Definition: xmp_data_struct.h:433
_XMP_gpu_data_type::host_addr
void * host_addr
Definition: xmp_data_struct.h:482
_XMP_array_type::align_comm_size
int align_comm_size
Definition: xmp_data_struct.h:301
_XMP_async_reflect_type::reqs
MPI_Request * reqs
Definition: xmp_data_struct.h:187
_XMP_csd_type::u
int * u
Definition: xmp_data_struct.h:432
_XMP_gpu_data_t
struct _XMP_gpu_data_type _XMP_gpu_data_t
_XMP_async_reflect_type::datatype
MPI_Datatype * datatype
Definition: xmp_data_struct.h:186
_XMP_array_info_type::ser_upper
int ser_upper
Definition: xmp_data_struct.h:200
_XMP_array_type::desc_kind
int desc_kind
Definition: xmp_data_struct.h:268
_XMP_bsd_t
struct _XMP_bsd_type _XMP_bsd_t
_XMP_nodes_ref_t
struct _XMP_nodes_ref_type _XMP_nodes_ref_t
_XMP_template_chunk_type::is_regular_chunk
_Bool is_regular_chunk
Definition: xmp_data_struct.h:89
_XMP_async_gmove::sendbuf
void * sendbuf
Definition: xmp_data_struct.h:451
_XMP_coarray_t
struct xmp_coarray _XMP_coarray_t
_XMP_gmv_desc_type::ub
int * ub
Definition: xmp_data_struct.h:399
_XMP_reflect_sched_type::lo_recv_array
void * lo_recv_array
Definition: xmp_data_struct.h:137
xmp_coarray::real_addr
char * real_addr
Definition: xmp_data_struct.h:336
_XMP_template_chunk_type::par_lower
long long par_lower
Definition: xmp_data_struct.h:80
_XMP_bsd_type::u
int u
Definition: xmp_data_struct.h:421
xacc_internal.h
_XMP_gmv_desc_type
Definition: xmp_data_struct.h:386
_XMP_array_info_type::shadow_comm_size
int shadow_comm_size
Definition: xmp_data_struct.h:256
_XMP_task_desc_t
struct _XMP_task_desc_type _XMP_task_desc_t
_XMP_gpu_data_type::is_aligned_array
_Bool is_aligned_array
Definition: xmp_data_struct.h:481
_XMP_bsd_type::b
int b
Definition: xmp_data_struct.h:422
_XMP_reflect_sched_type::lo_recv_buf
void * lo_recv_buf
Definition: xmp_data_struct.h:134
xmp_coarray::elmt_size
size_t elmt_size
Definition: xmp_data_struct.h:339
_XMP_async_gmove::a
_XMP_array_t * a
Definition: xmp_data_struct.h:454
xmp_coarray::distance_of_image_elmts
int * distance_of_image_elmts
Definition: xmp_data_struct.h:357
_XMP_array_info_t
struct _XMP_array_info_type _XMP_array_info_t
_XMP_array_info_type::shadow_type
int shadow_type
Definition: xmp_data_struct.h:248
_XMP_array_info_type::ser_size
int ser_size
Definition: xmp_data_struct.h:201
_XMP_async_comm::gmove
_XMP_async_gmove_t * gmove
Definition: xmp_data_struct.h:466
_XMP_array_section_t
struct _XMP_array_section _XMP_array_section_t
_XMP_gmv_desc_type::a_ub
int * a_ub
Definition: xmp_data_struct.h:395
_XMP_reflect_sched_type
Definition: xmp_data_struct.h:119
_XMP_nodes_info_t
struct _XMP_nodes_info_type _XMP_nodes_info_t
_XMP_async_comm::type
int type
Definition: xmp_data_struct.h:463
_XMP_template_chunk_type::onto_nodes_info
_XMP_nodes_info_t * onto_nodes_info
Definition: xmp_data_struct.h:94
_XMP_gpu_data_type::size
size_t size
Definition: xmp_data_struct.h:486
_XMP_reflect_sched_type::req
MPI_Request req[4]
Definition: xmp_data_struct.h:131
_XMP_nodes_ref_type::shrink_nodes_size
int shrink_nodes_size
Definition: xmp_data_struct.h:66
_XMP_template_type::is_fixed
_Bool is_fixed
Definition: xmp_data_struct.h:104
_XMP_rsd_type::l
int l
Definition: xmp_data_struct.h:410
_XMP_template_info_type
Definition: xmp_data_struct.h:70
_XMP_template_type::dim
int dim
Definition: xmp_data_struct.h:108
_XMP_reflect_sched_type::hi_rank
int hi_rank
Definition: xmp_data_struct.h:143
_XMP_array_info_type::is_regular_chunk
_Bool is_regular_chunk
Definition: xmp_data_struct.h:196
_XMP_gpu_array_type::acc
unsigned long long acc
Definition: xmp_data_struct.h:477
_XMP_nodes_type::comm_rank
int comm_rank
Definition: xmp_data_struct.h:52
_XMP_async_gmove_t
struct _XMP_async_gmove _XMP_async_gmove_t
_XMP_reflect_sched_type::reflect_is_initialized
int reflect_is_initialized
Definition: xmp_data_struct.h:121
_XMP_async_reflect_type::nreqs
int nreqs
Definition: xmp_data_struct.h:189
_XMP_array_info_type::dim_elmts
unsigned long long dim_elmts
Definition: xmp_data_struct.h:243
_XMP_template_chunk_type::par_chunk_width
unsigned long long par_chunk_width
Definition: xmp_data_struct.h:86
_XMP_async_comm::is_used
_Bool is_used
Definition: xmp_data_struct.h:462
_XMP_reflect_sched_type::hi_send_buf
void * hi_send_buf
Definition: xmp_data_struct.h:135
_XMP_reflect_sched_type::datatype_lo
MPI_Datatype datatype_lo
Definition: xmp_data_struct.h:128
_XMP_nodes_inherit_info_type
Definition: xmp_data_struct.h:20
_XMP_array_info_type::par_upper
int par_upper
Definition: xmp_data_struct.h:205
_XMP_array_type::is_shrunk_template
_Bool is_shrunk_template
Definition: xmp_data_struct.h:305
_XMP_gpu_array_t
struct _XMP_gpu_array_type _XMP_gpu_array_t
_XMP_array_info_type::local_stride
int local_stride
Definition: xmp_data_struct.h:211
_XMP_array_info_type::temp0_v
int temp0_v
Definition: xmp_data_struct.h:240
_XMP_array_type::mpi_type
MPI_Datatype mpi_type
Definition: xmp_data_struct.h:275
_XMP_template_type::onto_nodes
_XMP_nodes_t * onto_nodes
Definition: xmp_data_struct.h:111
_XMP_template_type::desc_kind
int desc_kind
Definition: xmp_data_struct.h:100
_XMP_array_type::align_comm
_XMP_comm_t * align_comm
Definition: xmp_data_struct.h:300
xmp_coarray::coarray_dims
int coarray_dims
Definition: xmp_data_struct.h:342
_XMP_array_info_type::shadow_size_lo
int shadow_size_lo
Definition: xmp_data_struct.h:249
_XMP_array_type::align_template
_XMP_template_t * align_template
Definition: xmp_data_struct.h:312
_XMP_csd_type::s
int s
Definition: xmp_data_struct.h:434
_XMP_nodes_ref_type::ref
int * ref
Definition: xmp_data_struct.h:65
_XMP_async_comm::nnodes
int nnodes
Definition: xmp_data_struct.h:461
_XMP_gmv_desc_type::kind
int * kind
Definition: xmp_data_struct.h:397
_XMP_array_info_type::align_manner
int align_manner
Definition: xmp_data_struct.h:197
_XMP_comm_set_type::u
int u
Definition: xmp_data_struct.h:441
_XMP_nodes_inherit_info_type::stride
int stride
Definition: xmp_data_struct.h:25
_XMP_template_type
Definition: xmp_data_struct.h:98
_XMP_nodes_ref_type
Definition: xmp_data_struct.h:63
_XMP_array_type::total_elmts
unsigned long long total_elmts
Definition: xmp_data_struct.h:293
_XMP_array_section::start
long start
Definition: xmp_data_struct.h:376
_XMP_reflect_sched_type::blocklength
int blocklength
Definition: xmp_data_struct.h:140
_XMP_array_type::align_comm_rank
int align_comm_rank
Definition: xmp_data_struct.h:302
_XMP_array_type::async_reflect
_XMP_async_reflect_t * async_reflect
Definition: xmp_data_struct.h:296
_XMP_array_info_type::ser_lower
int ser_lower
Definition: xmp_data_struct.h:199
_XMP_comm_set_type::next
struct _XMP_comm_set_type * next
Definition: xmp_data_struct.h:442
_XMP_nodes_type::inherit_info
_XMP_nodes_inherit_info_t * inherit_info
Definition: xmp_data_struct.h:59
_XMP_reflect_sched_type::stride
long long stride
Definition: xmp_data_struct.h:141
_XMP_nodes_type::desc_kind
int desc_kind
Definition: xmp_data_struct.h:42
_XMP_reflect_sched_type::hi_width
int hi_width
Definition: xmp_data_struct.h:125
_XMP_gpu_array_type
Definition: xmp_data_struct.h:475
_XMP_template_chunk_type
Definition: xmp_data_struct.h:78
_XMP_comm_t
#define _XMP_comm_t
Definition: xmp_data_struct.h:17
_XMP_task_desc_type::nodes
_XMP_nodes_t * nodes
Definition: xmp_data_struct.h:317
_XMP_async_comm::nreqs
int nreqs
Definition: xmp_data_struct.h:460
_XMP_template_info_type::ser_upper
long long ser_upper
Definition: xmp_data_struct.h:73
_XMP_array_type::order
int order
Definition: xmp_data_struct.h:276
_XMP_nodes_inherit_info_type::size
int size
Definition: xmp_data_struct.h:28
_XMP_template_chunk_type::onto_nodes_index
int onto_nodes_index
Definition: xmp_data_struct.h:92
_XMP_array_info_type::local_lower
int local_lower
Definition: xmp_data_struct.h:209
_XMP_async_reflect_type::reqs_reduce
MPI_Request * reqs_reduce
Definition: xmp_data_struct.h:188
_XMP_gmv_desc_type::local_data
void * local_data
Definition: xmp_data_struct.h:393
_XMP_array_info_type::shadow_size_hi
int shadow_size_hi
Definition: xmp_data_struct.h:250
_XMP_gpu_data_type::device_addr
void * device_addr
Definition: xmp_data_struct.h:483
_XMP_reflect_sched_type::lo_rank
int lo_rank
Definition: xmp_data_struct.h:143
_XMP_gpu_data_type
Definition: xmp_data_struct.h:480
_XMP_array_type
Definition: xmp_data_struct.h:266
_XMP_async_comm::reqs
MPI_Request * reqs
Definition: xmp_data_struct.h:464
_XMP_async_comm
Definition: xmp_data_struct.h:458
_XMP_template_chunk_type::par_stride
int par_stride
Definition: xmp_data_struct.h:85
_XMP_gmv_desc_type::ndims
int ndims
Definition: xmp_data_struct.h:389
_XMP_nodes_info_type::rank
int rank
Definition: xmp_data_struct.h:35
_XMP_template_chunk_type::dist_manner
int dist_manner
Definition: xmp_data_struct.h:87
_XMP_array_type::type_size
size_t type_size
Definition: xmp_data_struct.h:274
_XMP_array_info_type::alloc_size
int alloc_size
Definition: xmp_data_struct.h:212
xmp_coarray
Definition: xmp_data_struct.h:328
_XMP_array_type::info
_XMP_array_info_t info[1]
Definition: xmp_data_struct.h:313
_XMP_reflect_sched_type::hi_recv_array
void * hi_recv_array
Definition: xmp_data_struct.h:138
_XMP_reflect_sched_type::req_reduce
MPI_Request req_reduce[4]
Definition: xmp_data_struct.h:132
_XMP_gmv_desc_type::is_global
_Bool is_global
Definition: xmp_data_struct.h:388
_XMP_gpu_array_type::gtol
int gtol
Definition: xmp_data_struct.h:476
_XMP_reflect_sched_type::lo_send_array
void * lo_send_array
Definition: xmp_data_struct.h:137
_XMP_csd_type::l
int * l
Definition: xmp_data_struct.h:431
_XMP_nodes_inherit_info_type::lower
int lower
Definition: xmp_data_struct.h:23
_XMP_nodes_info_type::multiplier
int multiplier
Definition: xmp_data_struct.h:37
_XMP_nodes_inherit_info_t
struct _XMP_nodes_inherit_info_type _XMP_nodes_inherit_info_t
_XMP_bsd_type::c
int c
Definition: xmp_data_struct.h:423
_XMP_task_desc_type::ref_upper
int ref_upper[_XMP_N_MAX_DIM]
Definition: xmp_data_struct.h:323
_XMP_async_comm::a
_XMP_array_t * a
Definition: xmp_data_struct.h:467
_XMP_array_type::array_addr_p
void * array_addr_p
Definition: xmp_data_struct.h:279
_XMP_nodes_type::comm
_XMP_comm_t * comm
Definition: xmp_data_struct.h:53
_XMP_async_comm::node
_XMP_nodes_t ** node
Definition: xmp_data_struct.h:465
_XMP_array_info_type::par_stride
int par_stride
Definition: xmp_data_struct.h:206
_XMP_array_type::dim
int dim
Definition: xmp_data_struct.h:272
_XMP_array_t
struct _XMP_array_type _XMP_array_t
_XMP_reflect_sched_type::prev_pcopy_sched_type
int prev_pcopy_sched_type
Definition: xmp_data_struct.h:123
_XMP_array_section::stride
long stride
Definition: xmp_data_struct.h:378
_XMP_array_info_type::acc
unsigned long long * acc
Definition: xmp_data_struct.h:262
_XMP_async_reflect_t
struct _XMP_async_reflect_type _XMP_async_reflect_t
_XMP_async_comm_t
struct _XMP_async_comm _XMP_async_comm_t
_XMP_gmv_desc_t
struct _XMP_gmv_desc_type _XMP_gmv_desc_t
xmp_coarray::coarray_elmts
long * coarray_elmts
Definition: xmp_data_struct.h:345
_XMP_gmv_desc_type::a_desc
_XMP_array_t * a_desc
Definition: xmp_data_struct.h:391
_XMP_array_info_type::dim_acc
unsigned long long dim_acc
Definition: xmp_data_struct.h:242
_XMP_bsd_type
Definition: xmp_data_struct.h:419
_XMP_csd_type
Definition: xmp_data_struct.h:430
_XMP_array_info_type::par_size
int par_size
Definition: xmp_data_struct.h:207
_XMP_array_info_type::reflect_sched
_XMP_reflect_sched_t * reflect_sched
Definition: xmp_data_struct.h:252
_XMP_template_chunk_type::par_width
unsigned long long par_width
Definition: xmp_data_struct.h:82
_XMP_reflect_sched_type::reduce_is_initialized
int reduce_is_initialized
Definition: xmp_data_struct.h:122
_XMP_nodes_ref_type::nodes
_XMP_nodes_t * nodes
Definition: xmp_data_struct.h:64
_XMP_rsd_type
Definition: xmp_data_struct.h:409
_XMP_array_section::distance
long distance
Definition: xmp_data_struct.h:380
_XMP_array_section
Definition: xmp_data_struct.h:375
_XMP_template_info_t
struct _XMP_template_info_type _XMP_template_info_t
_XMP_template_type::is_distributed
_Bool is_distributed
Definition: xmp_data_struct.h:105
_XMP_nodes_type::dim
int dim
Definition: xmp_data_struct.h:47
_XMP_bsd_type::l
int l
Definition: xmp_data_struct.h:420
_XMP_nodes_type::attr
int attr
Definition: xmp_data_struct.h:49
_XMP_nodes_type
Definition: xmp_data_struct.h:40
_XMP_async_comm::async_id
int async_id
Definition: xmp_data_struct.h:459
_XMP_async_gmove::mode
int mode
Definition: xmp_data_struct.h:450
_XMP_array_info_type::temp0
int * temp0
Definition: xmp_data_struct.h:239
_XMP_reflect_sched_type::count
int count
Definition: xmp_data_struct.h:140
_XMP_nodes_type::on_ref_id
unsigned long long on_ref_id
Definition: xmp_data_struct.h:44
_XMP_array_type::is_align_comm_member
_Bool is_align_comm_member
Definition: xmp_data_struct.h:271
_XMP_async_gmove
Definition: xmp_data_struct.h:449
_XMP_async_reflect_type::lwidth
int lwidth[_XMP_N_MAX_DIM]
Definition: xmp_data_struct.h:183
_XMP_task_desc_type::ref_lower
int ref_lower[_XMP_N_MAX_DIM]
Definition: xmp_data_struct.h:322
_XMP_reflect_sched_type::lo_send_buf
void * lo_send_buf
Definition: xmp_data_struct.h:134
_XMP_N_MAX_DIM
#define _XMP_N_MAX_DIM
Definition: xmp_constant.h:6
_XMP_task_desc_type::ref_stride
int ref_stride[_XMP_N_MAX_DIM]
Definition: xmp_data_struct.h:324
_XMP_reflect_sched_type::hi_recv_buf
void * hi_recv_buf
Definition: xmp_data_struct.h:135
_XMP_csd_t
struct _XMP_csd_type _XMP_csd_t
_XMP_array_section::elmts
long elmts
Definition: xmp_data_struct.h:379
_XMP_reflect_sched_type::hi_send_array
void * hi_send_array
Definition: xmp_data_struct.h:138
_XMP_array_type::type
int type
Definition: xmp_data_struct.h:273
_XMP_rsd_type::s
int s
Definition: xmp_data_struct.h:412
_XMP_template_chunk_type::mapping_array
long long * mapping_array
Definition: xmp_data_struct.h:88
_XMP_task_desc_type::execute
int execute
Definition: xmp_data_struct.h:318
_XMP_array_type::is_allocated
_Bool is_allocated
Definition: xmp_data_struct.h:270
_XMP_reflect_sched_type::lo_width
int lo_width
Definition: xmp_data_struct.h:125
_XMP_array_info_type::shadow_comm
_XMP_comm_t * shadow_comm
Definition: xmp_data_struct.h:255
_XMP_comm_set_type
Definition: xmp_data_struct.h:439
_XMP_template_type::on_ref_id
unsigned long long on_ref_id
Definition: xmp_data_struct.h:102
_XMP_template_type::is_owner
_Bool is_owner
Definition: xmp_data_struct.h:106
xmp_constant.h
_XMP_async_gmove::recvbuf_size
int recvbuf_size
Definition: xmp_data_struct.h:453
_XMP_array_info_type::par_lower
int par_lower
Definition: xmp_data_struct.h:204
_XMP_comm_set_type::l
int l
Definition: xmp_data_struct.h:440
_XMP_async_reflect_type
Definition: xmp_data_struct.h:181
_XMP_rsd_t
struct _XMP_rsd_type _XMP_rsd_t
_XMP_nodes_inherit_info_type::upper
int upper
Definition: xmp_data_struct.h:24
_XMP_array_info_type::is_shadow_comm_member
_Bool is_shadow_comm_member
Definition: xmp_data_struct.h:195
xmp_coarray::image_dims
int image_dims
Definition: xmp_data_struct.h:354
_XMP_array_info_type::local_upper
int local_upper
Definition: xmp_data_struct.h:210
_XMP_gmv_desc_type::a_lb
int * a_lb
Definition: xmp_data_struct.h:394