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

Functions

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)
 
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)
 

Function Documentation

◆ _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 
)
5 {
6  if(target_rank == _XMP_world_rank){
7  memcpy((char *)dst_desc->real_addr + elmt_size * dst_offset, &value, elmt_size);
8  return;
9  }
10 
11  uint64_t raddr = (uint64_t)dst_desc->addr[target_rank] + elmt_size * dst_offset;
12  uint64_t laddr;
13  if(src_desc == NULL)
14  laddr = FJMPI_Rdma_reg_mem(_XMP_TEMP_MEMID, &value, elmt_size);
15  else
16  laddr = src_desc->laddr + elmt_size * src_offset;
17 
18  FJMPI_Rdma_put(target_rank, _XMP_FJRDMA_TAG, raddr, laddr, elmt_size, _XMP_COARRAY_FLAG_NIC);
20  _XMP_fjrdma_sync_memory_put(); // ensure to complete the above put operation.
21 
22  if(src_desc == NULL)
23  FJMPI_Rdma_dereg_mem(_XMP_TEMP_MEMID);
24 }
Here is the call graph for this function:
Here is the caller graph for this function:

◆ _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 
)
28 {
29  if(target_rank == _XMP_world_rank){
30  memcpy(value, (char*)dst_desc->real_addr + elmt_size * dst_offset, elmt_size);
31  return;
32  }
33 
34  uint64_t raddr = (uint64_t)dst_desc->addr[target_rank] + elmt_size * dst_offset;
35  uint64_t laddr;
36  if(src_desc == NULL)
37  laddr = FJMPI_Rdma_reg_mem(_XMP_TEMP_MEMID, value, elmt_size);
38  else
39  laddr = src_desc->laddr + elmt_size * src_offset;
40 
41  FJMPI_Rdma_get(target_rank, _XMP_FJRDMA_TAG, raddr, laddr, elmt_size, _XMP_COARRAY_FLAG_NIC);
43  _XMP_fjrdma_sync_memory_get(); // ensure to complete the above get operation.
44 
45  if(src_desc == NULL)
46  FJMPI_Rdma_dereg_mem(_XMP_TEMP_MEMID);
47 }
Here is the call graph for this function:
Here is the caller graph for this function:
xmp_coarray::addr
char ** addr
Definition: xmp_data_struct.h:329
_XMP_fjrdma_sync_memory_put
void _XMP_fjrdma_sync_memory_put()
End these variables are temporral.
Definition: xmp_coarray_fjrdma.c:1277
xmp_coarray::real_addr
char * real_addr
Definition: xmp_data_struct.h:336
_XMP_fjrdma_sync_memory_get
void _XMP_fjrdma_sync_memory_get()
Execute sync_memory for get operation.
Definition: xmp_coarray_fjrdma.c:1308
_XMP_add_num_of_gets
void _XMP_add_num_of_gets()
Add 1 to _num_of_gets.
Definition: xmp_coarray_fjrdma.c:1328
_XMP_world_rank
int _XMP_world_rank
Definition: xmp_world.c:9
_XMP_add_num_of_puts
void _XMP_add_num_of_puts()
Add 1 to _num_of_puts.
Definition: xmp_coarray_fjrdma.c:1318