点对点同步
数据类型及比较操作符类型定义
-
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
SHMEM_WAIT
-
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发出的所有针对对称数据的操作完成。