libxmp/libxmpf in Omni Compiler  1.3.4
xmp_post_wait_gasnet.c File Reference

Post/wait functions using GASNet. More...

#include "xmp_internal.h"
Include dependency graph for xmp_post_wait_gasnet.c:

Data Structures

struct  _XMP_postreq_info
 
struct  _XMP_postreq
 

Typedefs

typedef struct _XMP_postreq_info _XMP_postreq_info_t
 
typedef struct _XMP_postreq _XMP_postreq_t
 

Functions

void _xmp_gasnet_post_wait_initialize ()
 Initialize environment for post/wait directives. More...
 
void _xmp_gasnet_postreq (gasnet_token_t token, const int node, const int tag)
 
void _xmp_gasnet_post (const int node, const int tag)
 Post operation. More...
 
void _xmp_gasnet_wait_noargs ()
 Wait operation without node-ref and tag. More...
 
void _xmp_gasnet_wait_node (const int node)
 Wait operation with node-ref. More...
 
void _xmp_gasnet_wait (const int node, const int tag)
 Wait operation with node-ref and tag. More...
 

Detailed Description

Post/wait functions using GASNet.

Typedef Documentation

◆ _XMP_postreq_info_t

◆ _XMP_postreq_t

typedef struct _XMP_postreq _XMP_postreq_t

Function Documentation

◆ _xmp_gasnet_post()

void _xmp_gasnet_post ( const int  node,
const int  tag 
)

Post operation.

Parameters
[in]nodenode number
[in]tagtag
69 {
71 
72  if(node == _XMP_world_rank){
73  do_post(_XMP_world_rank, tag);
74  } else{
75  gasnet_AMRequestShort2(node, _XMP_GASNET_POSTREQ, _XMP_world_rank, tag);
76  }
77 }
Here is the call graph for this function:
Here is the caller graph for this function:

◆ _xmp_gasnet_post_wait_initialize()

void _xmp_gasnet_post_wait_initialize ( )

Initialize environment for post/wait directives.

27 {
28  gasnet_hsl_init(&_postreq.hsl);
29  _postreq.num = 0;
30  _postreq.max_size = _XMP_POSTREQ_TABLE_INITIAL_SIZE;
31  _postreq.table = malloc(sizeof(_XMP_postreq_info_t) * _postreq.max_size);
32 }
Here is the caller graph for this function:

◆ _xmp_gasnet_postreq()

void _xmp_gasnet_postreq ( gasnet_token_t  token,
const int  node,
const int  tag 
)
58 {
59  do_post(node, tag);
60 }

◆ _xmp_gasnet_wait()

void _xmp_gasnet_wait ( const int  node,
const int  tag 
)

Wait operation with node-ref and tag.

Parameters
[in]nodenode number
[in]tagtag
147 {
149  GASNET_BLOCKUNTIL(remove_request(node, tag));
150 }
Here is the call graph for this function:
Here is the caller graph for this function:

◆ _xmp_gasnet_wait_noargs()

void _xmp_gasnet_wait_noargs ( )

Wait operation without node-ref and tag.

124 {
126  GASNET_BLOCKUNTIL(remove_request_noargs());
127 }
Here is the call graph for this function:
Here is the caller graph for this function:

◆ _xmp_gasnet_wait_node()

void _xmp_gasnet_wait_node ( const int  node)

Wait operation with node-ref.

Parameters
[in]nodenode number
135 {
137  GASNET_BLOCKUNTIL(remove_request_node(node));
138 }
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.
Definition: xmp_coarray_gasnet.c:830
_XMP_postreq::num
int num
How many post requests are in table.
Definition: xmp_post_wait_fjrdma.c:19
_XMP_postreq::max_size
int max_size
Max size of table.
Definition: xmp_post_wait_fjrdma.c:20
_XMP_postreq_info
Definition: xmp_post_wait_fjrdma.c:12
_XMP_world_rank
int _XMP_world_rank
Definition: xmp_world.c:9
_XMP_postreq::table
_XMP_postreq_info_t * table
Table for post requests.
Definition: xmp_post_wait_fjrdma.c:18
_XMP_postreq::hsl
gasnet_hsl_t hsl
Lock object for GASNet.
Definition: xmp_post_wait_gasnet.c:18