点对点同步 ========== 数据类型及比较操作符类型定义 ---------------------------- .. _ACLSHMEM_TYPENAME_SYNC_FUN: .. doxygendefine:: ACLSHMEM_TYPENAME_SYNC_FUN :project: ACLSHMEM_API .. _AIC_CMP_TYPE: .. doxygenenum:: AIC_CMP_TYPE :project: ACLSHMEM_API SHMEM_WAIT ---------- .. doxygenfunction:: aclshmem_wait :project: ACLSHMEM_API .. cpp:function:: ACLSHMEM_AIC void aclshmem_TYPENAME_wait(__gm__ TYPE *ivar, TYPE cmp_value) 阻塞直到当前PE处的对称数据对象ivar中的值不等于cmp_value为止。 TYPENAME及TYPE的可选值见 :ref:`ACLSHMEM_TYPENAME_SYNC_FUN`。 :param ivar: [in] 可远程访问的数据对象的对称地址。 :param cmp_value: [in] 用于和ivar进行比较的值。 SHMEM_WAIT_UNTIL ---------------- .. doxygenfunction:: aclshmem_wait_until :project: ACLSHMEM_API .. cpp:function:: ACLSHMEM_AIC void aclshmem_TYPENAME_wait_until(__gm__ TYPE *ivar, int cmp, TYPE cmp_value) 阻塞直到当前PE处的对称数据对象ivar中的值满足由比较运算符cmp和比较值cmp_value指定的等待条件为止。 TYPENAME及TYPE的可选值见 :ref:`ACLSHMEM_TYPENAME_SYNC_FUN`。 :param ivar: [in] 可远程访问的数据对象的对称地址。 :param cmp: [in] 比较运算符,可支持的类型见 :ref:`AIC_CMP_TYPE`。 :param cmp_value: [in] 用于和ivar进行比较的值。 SHMEM_WAIT_UNTIL_ALL -------------------- .. doxygenfunction:: aclshmem_wait_until_all :project: ACLSHMEM_API .. doxygenfunction:: aclshmem_wait_until_all_advanced :project: ACLSHMEM_API .. cpp:function:: 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的可选值见 :ref:`ACLSHMEM_TYPENAME_SYNC_FUN`。 :param ivars: [in] 指向对称数据对象数组的对称地址。 :param nelems: [in] ivars数组的元素总数。若该值为0,则函数会立即返回,不阻塞。 :param status: [in] 可选的掩码数组(长度与nelems一致),用于筛选ivars中需要进行比对的元素。 - 若掩码为0,对应ivars中元素需要检查是否满足条件; - 若掩码非0,对应ivars中元素不参与条件比较; - 若status为空指针,则忽略掩码筛选,所有元素均需要参与比较。 :param cmp: [in] 比较运算符,可支持的类型见 :ref:`AIC_CMP_TYPE`。 :param cmp_value: [in] 用于和ivars中元素进行比较的值。 SHMEM_FENCE ----------- .. doxygenfunction:: aclshmem_fence :project: ACLSHMEM_API SHMEM_QUIET ----------- .. doxygenfunction:: aclshmem_quiet :project: ACLSHMEM_API