Remote Memory Access

类型定义

ACLSHMEM_TYPENAME_FUN(FUNC)

标准RMA类型和名称。

TYPENAME

TYPE

float

float

double

double

bfloat16

bfloat16_t

half

half

char

char

schar

signed char

short

short

int

int

long

long

longlong

long long

uchar

unsigned char

ushort

unsigned short

uint

unsigned int

ulong

unsigned long

ulonglong

unsigned long long

int8

int8_t

int16

int16_t

int32

int32_t

int64

int64_t

uint8

uint8_t

uint16

uint16_t

uint32

uint32_t

uint64

uint64_t

size

size_t

UB初始化接口

ACLSHMEM_DEVICE_PREFIX void aclshmemx_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。

同步接口

ACLSHMEM_PUT

ACLSHMEM_DEVICE_PREFIX void aclshmem_putmem(__gm__ void *dest, __gm__ const void *source, size_t nelems, int pe)
ACLSHMEM_HOST_PREFIX void aclshmem_putmem(void *dest, const void *source, size_t bytes, int pe)
ACLSHMEM_DEVICE_PREFIX 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。

ACLSHMEM_P

ACLSHMEM_DEVICE_PREFIX 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。

ACLSHMEM_GET

ACLSHMEM_DEVICE_PREFIX void aclshmem_getmem(__gm__ void *dest, __gm__ const void *source, size_t nelems, int pe)
ACLSHMEM_HOST_PREFIX void aclshmem_getmem(void *dest, const void *source, size_t bytes, int pe)
ACLSHMEM_DEVICE_PREFIX 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。

ACLSHMEM_G

ACLSHMEM_DEVICE_PREFIX TYPE aclshmem_TYPENAME_g(__gm__ const TYPE *source, int pe)

同步接口。从指定PE的对称内存上获取单个TYPE类型的元素。

TYPENAME及TYPE的可选值见 ACLSHMEM_TYPENAME_FUN

参数:
  • source – [in] 目标数据在对称内存上的地址。

  • pe – [in] 目标PE的PE id。

异步接口

ACLSHMEM_PUT_NBI

ACLSHMEM_DEVICE_PREFIX void aclshmem_putmem_nbi(__gm__ void *dest, __gm__ const void *source, size_t nelems, int pe)
ACLSHMEM_HOST_PREFIX void aclshmem_putmem_nbi(void *dest, const void *source, size_t bytes, int pe)
ACLSHMEM_DEVICE_PREFIX 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。

ACLSHMEM_GET_NBI

ACLSHMEM_DEVICE_PREFIX void aclshmem_getmem_nbi(__gm__ void *dest, __gm__ const void *source, size_t nelems, int pe)
ACLSHMEM_HOST_PREFIX void aclshmem_getmem_nbi(void *dest, const void *source, size_t bytes, int pe)
ACLSHMEM_DEVICE_PREFIX 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。

ACLSHMEMX_PUT_NBI

ACLSHMEM_DEVICE_PREFIX void aclshmemx_putmem_nbi(__gm__ void *dest, __ubuf__ const void *source, size_t nelems, int pe)
ACLSHMEM_DEVICE_PREFIX 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。

ACLSHMEMX_GET_NBI

ACLSHMEM_DEVICE_PREFIX void aclshmemx_getmem_nbi(__ubuf__ void *dest, __gm__ const void *source, size_t nelems, int pe)
ACLSHMEM_DEVICE_PREFIX 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。