远程内存访问

类型定义

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。