远程内存访问
类型定义
-
ACLSHMEM_TYPENAME_FUN(FUNC)
标准RMA类型和名称。
TYPE
TYPENAME
float
float
double
double
bfloat16_t
bfloat16
half
half
char
char
signed char
schar
short
short
int
int
long
long
long long
longlong
unsigned char
uchar
unsigned short
ushort
unsigned int
uint
unsigned long
ulong
unsigned long long
ulonglong
int8_t
int8
int16_t
int16
int32_t
int32
int64_t
int64
uint8_t
uint8
uint16_t
uint16
uint32_t
uint32
uint64_t
uint64
size_t
size
UB初始化接口
-
ACLSHMEM_AIC void aclshmem_aicore_init(__ubuf__ uint8_t *ub, uint32_t len, uint8_t evtid)
初始化用于get和put接口临时使用的ub buffer,需要用户提前申请。
- 参数:
ub – [in] 用户申请的ub buffer的起始地址。
len – [in] 用户申请的ub buffer的大小,单位为字节。
evtid – [in] 用于同步MTE2/MTE3事件的ID。
同步接口
SHMEM_PUT
-
ACLSHMEM_AIC void aclshmem_putmem(__gm__ void *dest, __gm__ const void *source, size_t nelems, int pe)
-
ACLSHMEM_AIC void aclshmem_TYPENAME_put(__gm__ TYPE *dest, __gm__ const TYPE *source, size_t nelems, int pe)
同步接口。将本PE上的连续数据复制到指定PE上的对称地址。
TYPENAME及TYPE的可选值见 ACLSHMEM_TYPENAME_FUN。
- 参数:
dest – [in] 目标数据在对称内存上的地址。
source – [in] 源数据在本PE上的地址。
nelems – [in] 目标数据和源数据的元素数量。
pe – [in] 远端PE的PE id。
SHMEM_P
-
ACLSHMEM_AIC void aclshmem_TYPENAME_p(__gm__ TYPE *dest, TYPE value, int pe)
同步接口。将单个TYPE类型的元素复制到指定PE上的对称地址。
TYPENAME及TYPE的可选值见 ACLSHMEM_TYPENAME_FUN。
- 参数:
dest – [in] 目标数据在对称内存上的地址。
value – [in] 需要put的值。
pe – [in] 目标PE的PE id。
SHMEM_GET
-
ACLSHMEM_AIC void aclshmem_getmem(__gm__ void *dest, __gm__ const void *source, size_t nelems, int pe)
-
ACLSHMEM_AIC void aclshmem_TYPENAME_get(__gm__ TYPE *dest, __gm__ const TYPE *source, size_t nelems, int pe)
同步接口。从指定PE将对称内存上的连续数据复制到本PE的地址。
TYPENAME及TYPE的可选值见 ACLSHMEM_TYPENAME_FUN。
- 参数:
dest – [in] 目标数据在本PE上的地址。
source – [in] 源数据在对称内存上的地址。
nelems – [in] 目标数据和源数据的元素数量。
pe – [in] 远端PE的PE id。
SHMEM_G
-
ACLSHMEM_AIC TYPE aclshmem_TYPENAME_g(__gm__ const TYPE *source, int pe)
同步接口。从指定PE的对称内存上获取单个TYPE类型的元素。
TYPENAME及TYPE的可选值见 ACLSHMEM_TYPENAME_FUN。
- 参数:
source – [in] 目标数据在对称内存上的地址。
pe – [in] 目标PE的PE id。
异步接口
SHMEM_PUT_NBI
-
ACLSHMEM_AIC void aclshmem_putmem_nbi(__gm__ void *dest, __gm__ const void *source, size_t nelems, int pe)
-
ACLSHMEM_AIC void aclshmem_TYPENAME_put_nbi(__gm__ TYPE *dest, __gm__ const TYPE *source, size_t nelems, int pe)
异步接口。将本PE上的连续数据复制到指定PE上的对称地址。
TYPENAME及TYPE的可选值见 ACLSHMEM_TYPENAME_FUN。
- 参数:
dest – [in] 目标数据在对称内存上的地址。
source – [in] 源数据在本PE上的地址。
nelems – [in] 目标数据和源数据的元素数量。
pe – [in] 远端PE的PE id。
SHMEM_GET_NBI
-
ACLSHMEM_AIC void aclshmem_getmem_nbi(__gm__ void *dest, __gm__ const void *source, size_t nelems, int pe)
-
ACLSHMEM_AIC void aclshmem_TYPENAME_get_nbi(__gm__ TYPE *dest, __gm__ const TYPE *source, size_t nelems, int pe)
异步接口。从指定PE将对称内存上的连续数据复制到本PE的地址。
TYPENAME及TYPE的可选值见 ACLSHMEM_TYPENAME_FUN。
- 参数:
dest – [in] 目标数据在本PE上的地址。
source – [in] 源数据在对称内存上的地址。
nelems – [in] 目标数据和源数据的元素数量。
pe – [in] 远端PE的PE id。
SHMEMX_PUT_NBI
-
ACLSHMEM_AIC void aclshmemx_putmem_nbi(__gm__ void *dest, __ubuf__ const void *source, size_t nelems, int pe)
-
ACLSHMEM_AIC void aclshmemx_TYPENAME_put_nbi(__gm__ TYPE *dest, __ubuf__ const TYPE *source, size_t nelems, int pe)
异步接口。将本PE UB上的连续数据复制到指定PE上的对称地址。
TYPENAME及TYPE的可选值见 ACLSHMEM_TYPENAME_FUN。
- 参数:
dest – [in] 目标数据在对称内存上的地址。
source – [in] 源数据在本PE UB上的地址。
nelems – [in] 目标数据和源数据的元素数量。
pe – [in] 远端PE的PE id。
SHMEMX_GET_NBI
-
ACLSHMEM_AIC void aclshmemx_getmem_nbi(__ubuf__ void *dest, __gm__ const void *source, size_t nelems, int pe)
-
ACLSHMEM_AIC void aclshmemx_TYPENAME_get_nbi(__ubuf__ TYPE *dest, __gm__ const TYPE *source, size_t nelems, int pe)
异步接口。从指定PE上的对称地址复制连续数据到本PE UB上。
TYPENAME及TYPE的可选值见 ACLSHMEM_TYPENAME_FUN。
- 参数:
dest – [in] 目标数据在本PE UB上的地址。
source – [in] 源数据在对称内存上的地址。
nelems – [in] 目标数据和源数据的元素数量。
pe – [in] 远端PE的PE id。