Point-To-Point Synchronization

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

ACLSHMEM_TYPENAME_SYNC_FUN(FUNC)

点对点同步支持类型和名称。

TYPENAME

TYPE

char

char

schar

signed char

short

short

int

int

long

long

uchar

unsigned char

ushort

unsigned short

uint

unsigned int

ulong

unsigned long

int8

int8_t

int16

int16_t

int32

int32_t

uint8

uint8_t

uint16

uint16_t

uint32

uint32_t

enum ACLSHMEM_CMP_TYPE

支持的比较操作符类型。

Values:

enumerator EQ
enumerator NE

等于

enumerator GT

不等于

enumerator GE

大于

enumerator LT

大于等于

enumerator LE

小于

ACLSHMEM_WAIT_UNTIL

ACLSHMEM_DEVICE_PREFIX 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] 比较运算符,可支持的类型见 ACLSHMEM_CMP_TYPE

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

ACLSHMEM_WAIT_UNTIL_ALL

ACLSHMEM_DEVICE_PREFIX 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] 比较运算符,可支持的类型见 ACLSHMEM_CMP_TYPE

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