信号操作

数据类型及操作类型定义

enum class AIC_SIGNAL_OP

支持的信号操作类型。

Values:

enumerator SIGNAL_SET

信号操作:设置

enumerator SIGNAL_ADD

信号操作:累加

SHMEM_PUT_SIGNAL

ACLSHMEM_AIC void aclshmem_putmem_signal(__gm__ void *dest, __gm__ const void *source, size_t nelems, __gm__ uint32_t *sig_addr, uint32_t signal, int sig_op, int pe)
ACLSHMEM_AIC void aclshmem_TYPENAME_put_signal(__gm__ void *dest, __gm__ const void *source, size_t nelems, __gm__ uint32_t *sig_addr, uint32_t signal, int sig_op, int pe)

同步接口。将本PE上的连续数据复制到指定PE的对称地址,然后更新sig_addr。

TYPENAME及TYPE的可选值见 ACLSHMEM_TYPENAME_FUN

参数:
  • dest – [in] 目标数据在本PE上的地址。

  • source – [in] 源数据在对称内存上的地址。

  • nelems – [in] 目标数据和源数据的元素数量。

  • sig_addr – [in] 待更新的信号字的对称地址。

  • signal – [in] 用于更新sig_addr的值。

  • sig_op – [in] 用于更新sig_addr的操作。支持的操作见:ref:AIC_SIGNAL_OP<AIC_SIGNAL_OP>

  • pe – [in] 远端PE的PE id。

SHMEM_PUT_SIGNAL_NBI

ACLSHMEM_AIC void aclshmem_putmem_signal_nbi(__gm__ void *dest, __gm__ const void *source, size_t nelems, __gm__ uint32_t *sig_addr, uint32_t signal, int sig_op, int pe)
ACLSHMEM_AIC void aclshmem_TYPENAME_put_signal_nbi(__gm__ void *dest, __gm__ const void *source, size_t nelems, __gm__ uint32_t *sig_addr, uint32_t signal, int sig_op, int pe)

异步接口。将本PE上的连续数据复制到指定PE的对称地址,然后更新sig_addr。

TYPENAME及TYPE的可选值见 ACLSHMEM_TYPENAME_FUN

参数:
  • dest – [in] 目标数据在本PE上的地址。

  • source – [in] 源数据在对称内存上的地址。

  • nelems – [in] 目标数据和源数据的元素数量。

  • sig_addr – [in] 待更新的信号字的对称地址。

  • signal – [in] 用于更新sig_addr的值。

  • sig_op – [in] 用于更新sig_addr的操作。支持的操作见:ref:AIC_SIGNAL_OP<AIC_SIGNAL_OP>

  • pe – [in] 远端PE的PE id。

SHMEM_SIGNAL_FETCH

ACLSHMEM_AIC uint64_t aclshmem_signal_fetch(__gm__ const uint64_t *sig_addr)

获取sig_addr上信号字的值。

参数:

sig_addr – [in] 可远程访问的信号字的本地地址。

返回:

sig_addr地址上信号字的值。