点对点同步

数据类型及比较操作符类型定义

ACLSHMEM_TYPENAME_SYNC_FUN(FUNC)

标准RMA类型和名称。

TYPE

TYPENAME

char

char

signed char

schar

short

short

int

int

long

long

unsigned char

uchar

unsigned short

ushort

unsigned int

uint

unsigned long

ulong

int8_t

int8

int16_t

int16

int32_t

int32

uint8_t

uint8

uint16_t

uint16

uint32_t

uint32

enum AIC_CMP_TYPE

支持的比较操作符类型。

Values:

enumerator EQ
enumerator NE

等于

enumerator GT

不等于

enumerator GE

大于

enumerator LT

大于等于

enumerator LE

小于

SHMEM_WAIT

template<class TYPE>
ACLSHMEM_AIC void aclshmem_wait(__gm__ TYPE *ivar, TYPE cmp_value)
ACLSHMEM_AIC void aclshmem_TYPENAME_wait(__gm__ TYPE *ivar, TYPE cmp_value)

阻塞直到当前PE处的对称数据对象ivar中的值不等于cmp_value为止。

TYPENAME及TYPE的可选值见 ACLSHMEM_TYPENAME_SYNC_FUN

参数:
  • ivar – [in] 可远程访问的数据对象的对称地址。

  • cmp_value – [in] 用于和ivar进行比较的值。

SHMEM_WAIT_UNTIL

template<class TYPE>
ACLSHMEM_AIC void aclshmem_wait_until(__gm__ TYPE *ivar, int cmp, TYPE cmp_value)
ACLSHMEM_AIC void aclshmem_TYPENAME_wait_until(__gm__ TYPE *ivar, int cmp, TYPE cmp_value)

阻塞直到当前PE处的对称数据对象ivar中的值满足由比较运算符cmp和比较值cmp_value指定的等待条件为止。

TYPENAME及TYPE的可选值见 ACLSHMEM_TYPENAME_SYNC_FUN

参数:
  • ivar – [in] 可远程访问的数据对象的对称地址。

  • cmp – [in] 比较运算符,可支持的类型见 AIC_CMP_TYPE

  • cmp_value – [in] 用于和ivar进行比较的值。

SHMEM_WAIT_UNTIL_ALL

template<class TYPE>
ACLSHMEM_AIC void aclshmem_wait_until_all(__gm__ TYPE *ivars, size_t nelems, __gm__ const int *status, int cmp, TYPE cmp_value)
template<class TYPE>
ACLSHMEM_AIC void aclshmem_wait_until_all_advanced(__gm__ TYPE *ivars, size_t nelems, __gm__ const int *status, int cmp, TYPE cmp_value)
ACLSHMEM_AIC void aclshmem_TYPENAME_wait_until_all(__gm__ TYPE *ivars, size_t nelems, __gm__ const int *status, int cmp, TYPE cmp_value)

用于实现基于对称数据对象数组的批量同步逻辑。直到由 ivars(对称数据对象数组)和 status(可选掩码数组)共同指定的 “等待集合” 中所有元素,均满足预设的比较条件(由比较运算符cmp和比较值cmp_value定义),且对应内存更新完全完成后,才会解除阻塞并继续执行后续代码。

TYPENAME及TYPE的可选值见 ACLSHMEM_TYPENAME_SYNC_FUN

参数:
  • ivars – [in] 指向对称数据对象数组的对称地址。

  • nelems – [in] ivars数组的元素总数。若该值为0,则函数会立即返回,不阻塞。

  • status

    [in] 可选的掩码数组(长度与nelems一致),用于筛选ivars中需要进行比对的元素。

    • 若掩码为0,对应ivars中元素需要检查是否满足条件;

    • 若掩码非0,对应ivars中元素不参与条件比较;

    • 若status为空指针,则忽略掩码筛选,所有元素均需要参与比较。

  • cmp – [in] 比较运算符,可支持的类型见 AIC_CMP_TYPE

  • cmp_value – [in] 用于和ivars中元素进行比较的值。

SHMEM_FENCE

ACLSHMEM_AIC void aclshmem_fence()

确保对称数据对象上操作的下发顺序。

SHMEM_QUIET

ACLSHMEM_AIC void aclshmem_quiet()

确保当前PE发出的所有针对对称数据的操作完成。