libxmp/libxmpf in Omni Compiler  1.3.4
xmp_coarray_gasnet.c File Reference
#include "xmp_internal.h"
Include dependency graph for xmp_coarray_gasnet.c:

Data Structures

struct  _shift_queue_t
 

Macros

#define _XMP_STRIDE_REG   0
 Queue which saves shift information. More...
 
#define _XMP_STRIDE_DONE   1
 
#define _XMP_UNROLLING   (4)
 

Functions

void _XMP_gasnet_build_shift_queue ()
 Set initial value to the shift queue. More...
 
void _XMP_gasnet_coarray_lastly_deallocate ()
 Deallocate memory region when calling _XMP_coarray_lastly_deallocate() More...
 
void _XMP_gasnet_coarray_malloc (_XMP_coarray_t *coarray_desc, void **addr, const size_t coarray_size)
 
void _XMP_gasnet_sync_memory ()
 Execute sync_memory. More...
 
void _XMP_gasnet_sync_all ()
 Execute sync_all. More...
 
void _xmp_gasnet_unpack_reply (gasnet_token_t t, const int ith)
 Registor finish information of unpack operation. More...
 
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. More...
 
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. More...
 
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)
 
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)
 
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)
 
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)
 
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)
 
void _xmp_gasnet_unpack_get_reply_using_buf (gasnet_token_t t)
 Set done flag for get operation. More...
 
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)
 
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)
 
void _XMP_gasnet_contiguous_put (const int target_rank, _XMP_coarray_t *dst_desc, void *src, const size_t dst_offset, const size_t dst_elmts, const size_t src_elmts, const size_t elmt_size)
 
void _XMP_gasnet_contiguous_get (const int target_rank, _XMP_coarray_t *dst_desc, void *src, const size_t dst_offset, const size_t dst_elmts, const size_t src_elmts, const size_t elmt_size)
 
void _XMP_gasnet_build_sync_images_table ()
 Build table and Initialize for sync images. More...
 
void _xmp_gasnet_add_notify (gasnet_token_t token, const int rank)
 
void _XMP_gasnet_sync_images (const int num, int image_set[num], int *status)
 Execute sync images. More...
 

Variables

char ** _xmp_gasnet_buf
 
int * _xmp_gasnet_stride_queue
 
size_t _xmp_gasnet_coarray_shift
 
size_t _xmp_gasnet_stride_size
 
size_t _xmp_gasnet_heap_size
 
int _XMP_flag_put_nb
 These variables are temporral. More...
 

Macro Definition Documentation

◆ _XMP_STRIDE_DONE

#define _XMP_STRIDE_DONE   1

◆ _XMP_STRIDE_REG

#define _XMP_STRIDE_REG   0

Queue which saves shift information.

◆ _XMP_UNROLLING

#define _XMP_UNROLLING   (4)

Function Documentation

◆ _xmp_gasnet_add_notify()

void _xmp_gasnet_add_notify ( gasnet_token_t  token,
const int  rank 
)
1617 {
1618  _add_notify(rank);
1619 }

◆ _XMP_gasnet_build_shift_queue()

void _XMP_gasnet_build_shift_queue ( )

Set initial value to the shift queue.

739 {
740  _shift_queue.max_size = _XMP_GASNET_COARRAY_SHIFT_QUEUE_INITIAL_SIZE;
741  _shift_queue.num = 0;
742  _shift_queue.shifts = malloc(sizeof(size_t*) * _shift_queue.max_size);
743 }
Here is the caller graph for this function:

◆ _XMP_gasnet_build_sync_images_table()

void _XMP_gasnet_build_sync_images_table ( )

Build table and Initialize for sync images.

1601 {
1602  _sync_images_table = malloc(sizeof(unsigned int) * _XMP_world_size);
1603  for(int i=0;i<_XMP_world_size;i++)
1604  _sync_images_table[i] = 0;
1605 
1606  gasnet_hsl_init(&_hsl);
1607 }
Here is the caller graph for this function:

◆ _XMP_gasnet_coarray_lastly_deallocate()

void _XMP_gasnet_coarray_lastly_deallocate ( )

Deallocate memory region when calling _XMP_coarray_lastly_deallocate()

784  {
785  _xmp_gasnet_coarray_shift -= _pop_shift_queue();
786 }
Here is the caller graph for this function:

◆ _XMP_gasnet_coarray_malloc()

void _XMP_gasnet_coarray_malloc ( _XMP_coarray_t coarray_desc,
void **  addr,
const size_t  coarray_size 
)
795 {
796  char **each_addr; // head address of a local array on each node
797  size_t tmp_shift;
798 
799  each_addr = _XMP_alloc(sizeof(char *) * _XMP_world_size);
800 
801  for(int i=0;i<_XMP_world_size;i++)
802  each_addr[i] = (char *)_xmp_gasnet_buf[i] + _xmp_gasnet_coarray_shift;
803 
804  if(coarray_size % _XMP_GASNET_ALIGNMENT == 0)
805  tmp_shift = coarray_size;
806  else{
807  tmp_shift = ((coarray_size / _XMP_GASNET_ALIGNMENT) + 1) * _XMP_GASNET_ALIGNMENT;
808  }
809  _xmp_gasnet_coarray_shift += tmp_shift;
810  _push_shift_queue(tmp_shift);
811 
813  if(_XMP_world_rank == 0){
814  fprintf(stderr, "[ERROR] Cannot allocate coarray. Heap memory size of coarray is too small.\n");
815  fprintf(stderr, " Please set the environmental variable \"XMP_ONESIDED_HEAP_SIZE\".\n");
816  fprintf(stderr, " e.g.) export XMP_ONESIDED_HEAP_SIZE=%zuM (or more).\n",
817  (_xmp_gasnet_coarray_shift/1024/1024)+1);
818  }
820  }
821 
822  coarray_desc->addr = each_addr;
823  coarray_desc->real_addr = each_addr[_XMP_world_rank];
824  *addr = each_addr[_XMP_world_rank];
825 }
Here is the call graph for this function:

◆ _XMP_gasnet_contiguous_get()

void _XMP_gasnet_contiguous_get ( const int  target_rank,
_XMP_coarray_t dst_desc,
void *  src,
const size_t  dst_offset,
const size_t  dst_elmts,
const size_t  src_elmts,
const size_t  elmt_size 
)
1585 {
1586  if(dst_elmts == src_elmts){
1587  gasnet_get_bulk(dst_desc->addr[_XMP_world_rank]+dst_offset, target_rank, src, src_elmts*elmt_size);
1588  }
1589  else if(src_elmts == 1){
1590  _gasnet_scalar_contiguous_mget(target_rank, dst_desc, src, dst_offset, dst_elmts, elmt_size);
1591  }
1592  else{
1593  _XMP_fatal("Coarray Error ! transfer size is wrong.\n");
1594  }
1595 }

◆ _XMP_gasnet_contiguous_put()

void _XMP_gasnet_contiguous_put ( const int  target_rank,
_XMP_coarray_t dst_desc,
void *  src,
const size_t  dst_offset,
const size_t  dst_elmts,
const size_t  src_elmts,
const size_t  elmt_size 
)
1530 {
1531  if(dst_elmts == src_elmts){
1532  if(_XMP_flag_put_nb)
1533  gasnet_put_nbi_bulk(target_rank, dst_desc->addr[target_rank]+dst_offset, src, src_elmts*elmt_size);
1534  else
1535  gasnet_put_bulk(target_rank, dst_desc->addr[target_rank]+dst_offset, src, src_elmts*elmt_size);
1536  }
1537  else if(src_elmts == 1){
1538  _gasnet_scalar_contiguous_mput(target_rank, dst_desc, src, dst_offset, dst_elmts, elmt_size);
1539  }
1540  else{
1541  _XMP_fatal("Coarray Error ! transfer size is wrong.\n");
1542  }
1543 }

◆ _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 
)
1433 {
1434  if(src_elmts == dst_elmts){
1435  size_t transfer_size = src_desc->elmt_size*src_elmts;
1436  if(dst_contiguous == _XMP_N_INT_TRUE && src_contiguous == _XMP_N_INT_TRUE){
1437  size_t dst_offset = _XMP_get_offset(dst_info, dst_dims);
1438  size_t src_offset = _XMP_get_offset(src_info, src_dims);
1439  _gasnet_c_to_c_get(target_rank, dst_offset, src_offset, dst, src_desc, transfer_size);
1440  }
1441  else if(dst_contiguous == _XMP_N_INT_TRUE && src_contiguous == _XMP_N_INT_FALSE){
1442  size_t dst_offset = _XMP_get_offset(dst_info, dst_dims);
1443  _gasnet_nonc_to_c_get(target_rank, dst_offset, src_dims, src_info, dst, src_desc, transfer_size);
1444  }
1445  else if(dst_contiguous == _XMP_N_INT_FALSE && src_contiguous == _XMP_N_INT_TRUE){
1446  size_t src_offset = _XMP_get_offset(src_info, src_dims);
1447  _gasnet_c_to_nonc_get(target_rank, src_offset, dst_dims, dst_info, dst, src_desc, transfer_size);
1448  }
1449  else if(dst_contiguous == _XMP_N_INT_FALSE && src_contiguous == _XMP_N_INT_FALSE){
1450  _gasnet_nonc_to_nonc_get(target_rank, dst_dims, src_dims, dst_info, src_info, dst, src_desc, transfer_size);
1451  }
1452  }
1453  else{
1454  if(src_elmts == 1){
1455  size_t src_offset = _XMP_get_offset(src_info, src_dims);
1456  _gasnet_scalar_mget(target_rank, src_offset, dst_dims, dst_info, dst, src_desc, src_desc->elmt_size);
1457  }
1458  else{
1459  _XMP_fatal("Unkown shape of coarray");
1460  }
1461  }
1462 }
Here is the call graph for this function:

◆ _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 
)
1193 {
1194  _XMP_array_section_t *src_info = (_XMP_array_section_t *)array_info;
1195  char *archive = _xmp_gasnet_buf[_XMP_world_rank];
1196  _XMP_pack_coarray(archive, (char *)UPCRI_MAKEWORD(src_addr_hi,src_addr_lo), src_dims, src_info);
1197  gasnet_AMReplyMedium2(t, _XMP_GASNET_UNPACK_GET_REPLY, archive, tansfer_size,
1198  dst_addr_hi, dst_addr_lo);
1199 }

◆ _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 
)
1219 {
1220  size_t src_size = sizeof(_XMP_array_section_t) * src_dims;
1221  size_t dst_size = sizeof(_XMP_array_section_t) * dst_dims;
1222  _XMP_array_section_t *src_info = malloc(src_size);
1223  memcpy(src_info, array_info, src_size);
1224  char archive[tansfer_size + dst_size];
1225  memcpy(archive, array_info + src_size, dst_size);
1226  _XMP_pack_coarray(archive+dst_size, (char *)UPCRI_MAKEWORD(src_addr_hi,src_addr_lo), src_dims, src_info);
1227  free(src_info);
1228  gasnet_AMReplyMedium3(t, _XMP_GASNET_UNPACK_GET_REPLY_NONC, archive, tansfer_size + dst_size,
1229  dst_addr_hi, dst_addr_lo, dst_dims);
1230 }

◆ _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 
)
1295 {
1296  _XMP_array_section_t *src_info = (_XMP_array_section_t *)array_info;
1297  char *archive = _xmp_gasnet_buf[_XMP_world_rank];
1298  _XMP_pack_coarray(archive, (char *)UPCRI_MAKEWORD(src_addr_hi,src_addr_lo), src_dims, src_info);
1299  gasnet_AMReplyShort0(t, _XMP_GASNET_UNPACK_GET_REPLY_USING_BUF);
1300 }

◆ _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 
)
1099 {
1100  if(dst_elmts == src_elmts){
1101  size_t transfer_size = dst_desc->elmt_size*dst_elmts;
1102  if(dst_contiguous == _XMP_N_INT_TRUE && src_contiguous == _XMP_N_INT_TRUE){
1103  size_t dst_offset = _XMP_get_offset(dst_info, dst_dims);
1104  size_t src_offset = _XMP_get_offset(src_info, src_dims);
1105  _gasnet_c_to_c_put(target_rank, dst_offset, src_offset, dst_desc, src, transfer_size);
1106  }
1107  else if(dst_contiguous == _XMP_N_INT_TRUE && src_contiguous == _XMP_N_INT_FALSE){
1108  size_t dst_offset = _XMP_get_offset(dst_info, dst_dims);
1109  _gasnet_nonc_to_c_put(target_rank, dst_offset, src_dims, src_info, dst_desc, src, transfer_size);
1110  }
1111  else if(dst_contiguous == _XMP_N_INT_FALSE && src_contiguous == _XMP_N_INT_TRUE){
1112  size_t src_offset = _XMP_get_offset(src_info, src_dims);
1113  _gasnet_c_to_nonc_put(target_rank, src_offset, dst_dims, dst_info, dst_desc, src, transfer_size);
1114  }
1115  else if(dst_contiguous == _XMP_N_INT_FALSE && src_contiguous == _XMP_N_INT_FALSE){
1116  _gasnet_nonc_to_nonc_put(target_rank, dst_dims, src_dims, dst_info, src_info,
1117  dst_desc, src, transfer_size);
1118  }
1119  }
1120  else{
1121  if(src_elmts == 1){
1122  size_t src_offset = _XMP_get_offset(src_info, src_dims);
1123  _gasnet_scalar_mput(target_rank, dst_dims, dst_info, dst_desc, (char *)src+src_offset, dst_desc->elmt_size);
1124  }
1125  else{
1126  _XMP_fatal("Unkown shape of coarray");
1127  }
1128  }
1129 }
Here is the call graph for this function:

◆ _XMP_gasnet_sync_all()

void _XMP_gasnet_sync_all ( )

Execute sync_all.

847 {
849  GASNET_BARRIER();
850 }
Here is the call graph for this function:
Here is the caller graph for this function:

◆ _XMP_gasnet_sync_images()

void _XMP_gasnet_sync_images ( const int  num,
int  image_set[num],
int *  status 
)

Execute sync images.

Parameters
[in]numnumber of nodes
[in]*image_setimage set
[out]statusstatus
1678 {
1680 
1681  if(num == 0){
1682  return;
1683  }
1684  else if(num < 0){
1685  fprintf(stderr, "Invalid value is used in xmp_sync_memory. The first argument is %d\n", num);
1686  _XMP_fatal_nomsg();
1687  }
1688 
1689  _notify_sync_images(num, image_set);
1690  _wait_sync_images(num, image_set);
1691 
1692  // Update table for post-processing
1693  gasnet_hsl_lock(&_hsl);
1694  for(int i=0;i<num;i++)
1695  _sync_images_table[image_set[i]]--;
1696 
1697  gasnet_hsl_unlock(&_hsl);
1698 }
Here is the call graph for this function:
Here is the caller graph for this function:

◆ _XMP_gasnet_sync_memory()

void _XMP_gasnet_sync_memory ( )

Execute sync_memory.

831 {
833 
834  for(int i=0;i<_xmp_gasnet_stride_wait_size;i++)
835  GASNET_BLOCKUNTIL(_xmp_gasnet_stride_queue[i] == _XMP_STRIDE_DONE);
836 
837  _xmp_gasnet_stride_wait_size = 0;
838 
839  if( _XMP_flag_put_nb)
840  gasnet_wait_syncnbi_puts();
841 }
Here is the call graph for this function:
Here is the caller graph for this function:

◆ _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.

936 {
937  size_t dst_info_size = sizeof(_XMP_array_section_t) * dst_dims;
938  _XMP_array_section_t *dst = malloc(dst_info_size);
939  memcpy(dst, src_addr, dst_info_size);
940  _XMP_unpack_coarray((char *)UPCRI_MAKEWORD(addr_hi,addr_lo), dst_dims, src_addr+dst_info_size, dst, flag);
941  free(dst);
942  gasnet_AMReplyShort1(t, _XMP_GASNET_UNPACK_REPLY, ith);
943 }

◆ _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 
)
1268 {
1269  memcpy((char *)UPCRI_MAKEWORD(dst_addr_hi,dst_addr_lo), archive, transfer_size);
1270  done_get_flag = _XMP_N_INT_TRUE;
1271 }

◆ _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 
)
1246 {
1247  size_t dst_size = sizeof(_XMP_array_section_t) * dst_dims;
1248  _XMP_array_section_t *dst_info = malloc(dst_size);
1249  memcpy(dst_info, archive, dst_size);
1250 
1251  _XMP_unpack_coarray((char *)UPCRI_MAKEWORD(dst_addr_hi,dst_addr_lo), dst_dims, archive+dst_size, dst_info, _XMP_UNPACK);
1252  done_get_flag = _XMP_N_INT_TRUE;
1253 }

◆ _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.

1277 {
1278  done_get_flag = _XMP_N_INT_TRUE;
1279 }

◆ _xmp_gasnet_unpack_reply()

void _xmp_gasnet_unpack_reply ( gasnet_token_t  t,
const int  ith 
)

Registor finish information of unpack operation.

896 {
898 }

◆ _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.

921 {
922  size_t dst_info_size = sizeof(_XMP_array_section_t) * dst_dims;
923  _XMP_array_section_t *dst = malloc(dst_info_size);
924  char* src_addr = _xmp_gasnet_buf[_XMP_world_rank];
925  memcpy(dst, src_addr, dst_info_size);
926  _XMP_unpack_coarray((char *)UPCRI_MAKEWORD(addr_hi,addr_lo), dst_dims, src_addr+dst_info_size, dst, flag);
927  free(dst);
928  gasnet_AMReplyShort1(t, _XMP_GASNET_UNPACK_REPLY, ith);
929 }

Variable Documentation

◆ _XMP_flag_put_nb

int _XMP_flag_put_nb

These variables are temporral.

◆ _xmp_gasnet_buf

char** _xmp_gasnet_buf

◆ _xmp_gasnet_coarray_shift

size_t _xmp_gasnet_coarray_shift

◆ _xmp_gasnet_heap_size

size_t _xmp_gasnet_heap_size

◆ _xmp_gasnet_stride_queue

int* _xmp_gasnet_stride_queue

◆ _xmp_gasnet_stride_size

size_t _xmp_gasnet_stride_size
_XMP_gasnet_sync_memory
void _XMP_gasnet_sync_memory()
Execute sync_memory.
Definition: xmp_coarray_gasnet.c:830
_XMP_fatal_nomsg
void _XMP_fatal_nomsg()
Definition: xmp_util.c:48
XMP_gasnet_atomic_sync_memory
void XMP_gasnet_atomic_sync_memory()
Definition: xmp_intrinsic_gasnet.c:25
xmp_coarray::addr
char ** addr
Definition: xmp_data_struct.h:329
_XMP_alloc
void * _XMP_alloc(size_t size)
Definition: xmp_util.c:21
_XMP_flag_put_nb
int _XMP_flag_put_nb
These variables are temporral.
Definition: xmp_onesided.c:5
xmp_coarray::real_addr
char * real_addr
Definition: xmp_data_struct.h:336
_XMP_world_size
int _XMP_world_size
Definition: xmp_world.c:8
xmp_coarray::elmt_size
size_t elmt_size
Definition: xmp_data_struct.h:339
_shift_queue_t::shifts
size_t * shifts
shifts array
Definition: xmp_coarray_gasnet.c:11
_XMP_array_section_t
struct _XMP_array_section _XMP_array_section_t
_XMP_STRIDE_DONE
#define _XMP_STRIDE_DONE
Definition: xmp_coarray_gasnet.c:15
_xmp_gasnet_stride_queue
int * _xmp_gasnet_stride_queue
Definition: xmp_onesided_gasnet.c:5
_shift_queue_t::num
int num
How many shifts are in this queue.
Definition: xmp_coarray_gasnet.c:10
_XMP_world_rank
int _XMP_world_rank
Definition: xmp_world.c:9
_xmp_gasnet_coarray_shift
size_t _xmp_gasnet_coarray_shift
Definition: xmp_onesided_gasnet.c:3
_shift_queue_t::max_size
size_t max_size
Max size of queue.
Definition: xmp_coarray_gasnet.c:9
_xmp_gasnet_buf
char ** _xmp_gasnet_buf
Definition: xmp_onesided_gasnet.c:4
_XMP_N_INT_FALSE
#define _XMP_N_INT_FALSE
Definition: xmp_constant.h:5
_XMP_get_offset
size_t _XMP_get_offset(const _XMP_array_section_t *array_info, const int dims)
Definition: xmp_coarray_utils.c:22
_xmp_gasnet_heap_size
size_t _xmp_gasnet_heap_size
Definition: xmp_coarray_gasnet.c:4
_XMP_fatal
void _XMP_fatal(char *msg)
Definition: xmp_util.c:42
_hsl
gasnet_hsl_t _hsl
Definition: xmp_intrinsic_gasnet.c:2
_XMP_array_section
Definition: xmp_data_struct.h:375
_XMP_N_INT_TRUE
#define _XMP_N_INT_TRUE
Definition: xmp_constant.h:4