SHMEM Python API Reference

shmem.core API

对外接口

  1. 获取当前库版本函数

    def get_version() -> str
    

    参数/返回值

    含义

    返回值

    version信息组成的字符串

  2. 初始化共享内存模块

    def get_unique_id(empty: bool=False) -> UniqueID
    

    参数/返回值

    含义

    empty

    预留参数,无实际意义

    返回值

    代表一个唯一 ID 的句柄

  3. 初始化共享内存模块

    def init(device: int=None, uid: UniqueID=None, rank: int=None, nranks: int=None, mpi_comm=None, initializer_method: str="", mem_size: int=None) -> None
    

    参数/返回值

    含义

    device

    预留参数,无实际意义

    uid

    用于初始化的唯一标识符

    rank

    当前进程在 ACLSHMEM 作业中的排名

    nranks

    参与 ACLSHMEM 作业的总进程数(

    mpi_comm

    预留参数,无实际意义

    initializer_method

    指定初始化方法,必须为 “uid”

    mem_size

    个处理单元(PE)分配的对称内存大小

  4. 销毁共享内存模块

    def finalize() -> None
    
  5. 分配一个由 ACLSHMEM 支持的 NPU 缓冲区

    def buffer(size, release=False, except_on_del=True) -> Buffer
    

    参数/返回值

    含义

    size

    要分配的缓冲区大小

    release

    预留参数,无实际意义

    except_on_del

    预留参数,无实际意义

    返回值

    一个原始内存缓冲区,通过其地址和字节长度表示

  6. 释放缓冲区

    def free(buf: Buffer) -> None
    

    参数/返回值

    含义

    buf

    需要释放的缓冲区

  7. 获取可用于在指定PE上直接引用目标地址的地址

    def get_peer_buffer(buf: Buffer, pe: int) -> Buffer
    

    参数/返回值

    含义

    buf

    远程可访问数据的对称地址

    pe

    PE编号

    返回值

    一个原始内存缓冲区,通过其地址和字节长度表示

  8. 同步接口,从指定的PE复制对称内存中的连续数据到本地PE的地址

    def put_signal(dst: Buffer, src: Buffer, signal_var: Buffer, signal_val: int, signal_operation: SignalOp, remote_pe: int=-1, stream=None) -> None
    

    参数/返回值

    含义

    dst

    本地 PE 上的对称内存缓冲区(目标地址)

    src

    包含源数据的对称内存缓冲区。

    signal_var

    用作信号变量的对称内存缓冲区

    signal_operation

    用于更新信号变量的原子操作

    remote_pe

    远程处理单元(PE)的编号

    stream

    预留参数,无实际意义

  9. 同步接口,在指定流上将对称内存中连续的数据从本地处理单元(PE)复制到指定PE的地址上

    def put(dst: Buffer, src: Buffer, remote_pe: int=-1, stream: int=None) -> None
    

    参数/返回值

    含义

    dst

    远程 PE 上的对称目标缓冲区

    src

    包含待发送数据的本地源缓冲区

    remote_pe

    要目标处理单元(PE)的编号

    stream

    ACL 流对象

  10. 同步接口,在指定流上将对称内存中指定处理单元(PE)上的连续数据复制到本地PE的地址上

    def get(dst: Buffer, src: Buffer, remote_pe: int=-1, stream: int=None) -> None
    

    参数/返回值

    含义

    dst

    用于写入数据的本地目标缓冲区

    src

    远程 PE 上的对称源缓冲区

    remote_pe

    要目标处理单元(PE)的编号

    stream

    ACL 流对象

  11. 同步接口,在指定的 PE 上对远程信号变量执行原子操作,该操作在给定的流上执行

    def signal_op(signal_var: Buffer, signal_val: int, signal_operation: SignalOp, remote_pe: int=-1, stream: int=None) -> None
    

    参数/返回值

    含义

    signal_var

    包含信号变量的对称内存缓冲区

    signal_val

    用于远程原子信号操作的值

    signal_operation

    要应用于远程信号变量的原子操作

    remote_pe

    远程处理单元(PE)的编号

    stream

    ACL 流对象

  12. 同步接口,在指定的 PE 上对远程信号变量执行原子比较操作,该操作在给定的流上执行

    def signal_wait(signal_var: Buffer, signal_val: int, signal_operation: ComparisonType, stream: int=None) -> None
    

    参数/返回值

    含义

    signal_var

    包含信号变量的对称内存缓冲区

    signal_val

    用于比较 sig 所指向值与 cmp_val 的比较操作符

    signal_operation

    用于与 sig 所指向的值进行比较的数值

    stream

    ACL 流对象

  13. 获取PE值

    def my_pe() -> int
    

    参数/返回值

    含义

    返回值

    PE值

  14. 获取在特定team中的PE号码

    def team_my_pe(team) -> int
    

    参数/返回值

    含义

    team

    目标team的id

    返回值

    PE值

  15. 程序中运行的PE数量

    def n_pes() -> int
    

    参数/返回值

    含义

    返回值

    PE数量

  16. 获取特定team中的PE数量

    def team_n_pes(team) -> int
    

    参数/返回值

    含义

    team

    目标team的id

    返回值

    PE数量

  17. 查询共享内存模块的当前初始化状态

    def init_status() -> InitStatus
    

    参数/返回值

    含义

    返回值

    返回初始化状态

  1. UniqueId类

    class UniqueId:
        def __init__(self):
    

    属性

    含义

    version

    版本信息

    my_rank

    当前进程的pe编号

    n_pes

    所有进程的pe总数

    internal

    uid的内部信息

  2. InitStatus枚举类

    class InitStatus(Enum):
        NOT_INITIALIZED
        SHM_CREATED
        INITIALIZED
        INVALID
    
  3. SignalOp枚举类

    class SignalOp(Enum):
        SIGNAL_SET
        SIGNAL_ADD
    
  4. ComparisonType枚举类

    class ComparisonType(Enum):
        CMP_EQ
        CMP_NE
        CMP_GT
        CMP_GE
        CMP_LT
        CMP_LE
    

shmem._pyshmem API

对外接口

  1. 初始化共享内存模块

    def aclshmem_init(mype, npes, mem_size) -> int
    

    参数/返回值

    含义

    mype

    本地处理单元索引,范围在 0 ~ npes 之间

    npes

    处理单元总数

    mem_size

    每个处理单元的内存大小,以字节为单位

    返回值

    成功返回0,其他为错误码

  2. 完成共享内存模块

    def aclshmem_finialize() -> None
    
  3. 查询共享内存模块的当前初始化状态

    def aclshmemx_init_status() -> InitStatus
    

    参数/返回值

    含义

    返回值

    返回初始化状态。返回 ACLSHMEM_STATUS_IS_INITIALIZED 表示初始化已完成

  4. 注册一个Python解密处理程序

    def set_conf_store_tls_key(tls_pk, tls_pk_pw, py_decrypt_func:Callable[[str], str]) -> int
    

    参数/返回值

    含义

    tls_pk

    私钥

    tls_pk_pw

    私钥口令

    py_decrypt_func

    私钥口令解密函数,一个Python函数,接受 (str cipher_text),并返回 (str plain_text)

    返回值

    成功时返回0,失败时返回错误代码

  5. 分配内存

    def aclshmem_malloc(size) -> None
    

    参数/返回值

    含义

    size

    分配内存大小

    返回值

    分配成功返回指向已分配内存的指针;该内存未被成功分配或size为0,则返回NULL

  6. 为多个元素分配内存

    def aclshmem_calloc(nmemb, size) -> None
    

    参数/返回值

    含义

    nmemb

    元素数量

    size

    每个元素的大小

    返回值

    分配成功返回指向已分配内存的指针;该内存未被成功分配或size为0,则返回NULL

  7. 分配指定对齐方式内存

    def aclshmem_align(alignment, size) -> None
    

    参数/返回值

    含义

    alignment

    所需的内存对齐方式(必须是 2 的幂)

    size

    要分配的字节数

    返回值

    分配成功返回指向已分配内存的指针;该内存未被成功分配或size为0,则返回NULL

  8. 释放被分配的内存空间

    def aclshmem_free(ptr) -> None
    

    参数/返回值

    含义

    ptr

    要释放的内存

  9. 获取可用于在指定PE上直接引用目标地址的地址

    def aclshmem_ptr(ptr, peer) -> None
    

    参数/返回值

    含义

    ptr

    远程可访问数据的对称地址

    peer

    PE编号

    返回值

    分配成功返回指向已分配内存的指针;该内存未被成功分配或size为0,则返回NULL

  10. 获取PE值

    def my_pe() -> int
    

    参数/返回值

    含义

    返回值

    PE值

  11. 获取在特定团队中的PE号码

    def team_my_pe(team_id) -> int
    

    参数/返回值

    含义

    team_id

    team的句柄

    返回值

    PE值

  12. 程序中运行的PE数量

    def pe_count() -> int
    

    参数/返回值

    含义

    返回值

    PE数量

  13. 获取特定团队中的PE数量

    def team_n_pes(team_id) -> int
    

    参数/返回值

    含义

    team_id

    team的句柄

    返回值

    PE数量

  14. 从现有的父团队中拆分出一个子团队

    def team_split_strided(parent, start, stride, size)
    

    参数/返回值

    含义

    parent

    父团队ID

    start

    新团队中PE子集的最低PE编号

    stride

    父团队中团队PE编号之间的步长

    size

    来自父团队的PE数量

    返回值

    成功返回新团队ID

  15. 集体接口

    def team_split_2d(parent, x_range)
    

    参数/返回值

    含义

    parent

    team句柄

    x_range

    第一维度中的元素数量

    返回值

    成功返回0

  16. 获取作为团队创建时传入的team配置

    def aclshmem_team_get_config(team) -> int
    

    参数/返回值

    含义

    parent

    team id

    返回值

    成功返回0

  17. 同步接口,将对称内存中连续的数据从本地处理单元(PE)复制到指定PE的地址上

    def aclshmem_putmem(dst, src, elem_size, pe)
    

    参数/返回值

    含义

    dst

    本地PE对称地址上的指针

    src

    源数据本地内存中的指针

    elem_size

    目标地址和源地址中元素的大小

    pe

    远程PE的编号

  18. 同步接口,将对称内存中指定处理单元(PE)上的连续数据复制到本地PE的地址上。

    def aclshmem_getmem(dst, src, elem_size, pe)
    

    参数/返回值

    含义

    dst

    指向本地处理单元(PE)对称地址的指针

    src

    指向源数据本地内存的指针

    elem_size

    目标地址和源地址中元素的大小

    pe

    远程PE的编号

  19. 同步接口,将对称内存中的数据按照sst的步距从本地处理单元(PE)复制到指定PE的地址上(按照dst的步距)

    def aclshmem_{TYPE}_iput(dest, source, dst, sst, nelems, pe)
    

    参数/返回值

    含义

    TYPE

    数据类型,可选float/double/int8/int16/int32/int64/uint8/uint16/uint32/uint64/char

    dest

    指向目标数据的对称内存的指针

    source

    源数据所在本地设备的指针

    dst

    目标地址中连续元素之间的步长

    sst

    源地址中连续元素之间的步长

    nelems

    连续元素块的个数

    pe

    远程PE的编号

  20. 同步接口,将对称内存中指定处理单元(PE)上的数据按照sst的步距复制到本地PE的地址上(按照dst的步距)

    def aclshmem_{TYPE}_iget(dest, source, dst, sst, nelems, pe)
    

    参数/返回值

    含义

    TYPE

    数据类型,可选float/double/int8/int16/int32/int64/uint8/uint16/uint32/uint64/char

    dest

    目的数据所在本地设备的指针

    source

    源数据的对称内存的指针

    dst

    目标地址中连续元素之间的步长

    sst

    源地址中连续元素之间的步长

    nelems

    连续元素块的个数

    pe

    远程PE的编号

  21. 同步接口,将对称内存中连续的数据从本地处理单元(PE)复制到指定PE的地址上

    def aclshmem_put{BITS}(dst, src, elem_size, pe)
    

    参数/返回值

    含义

    BITS

    数据位宽,可选8/16/32/64/128

    dst

    本地PE对称地址上的指针

    src

    源数据本地内存中的指针

    elem_size

    目标地址和源地址中元素的大小

    pe

    远程PE的编号

  22. 同步接口,将对称内存中指定处理单元(PE)上的连续数据复制到本地PE的地址上。

    def aclshmem_get{BITS}(dst, src, elem_size, pe)
    

    参数/返回值

    含义

    BITS

    数据位宽,可选8/16/32/64/128

    dst

    指向本地处理单元(PE)对称地址的指针

    src

    指向源数据本地内存的指针

    elem_size

    目标地址和源地址中元素的大小

    pe

    远程PE的编号

  23. 同步接口,将对称内存中的数据按照sst的步距从本地处理单元(PE)复制到指定PE的地址上(按照dst的步距)

    def aclshmem_iput{BITS}(dest, source, dst, sst, nelems, pe)
    

    参数/返回值

    含义

    BITS

    数据位宽,可选8/16/32/64/128

    dest

    指向目标数据的对称内存的指针

    source

    源数据所在本地设备的指针

    dst

    目标地址中连续元素之间的步长

    sst

    源地址中连续元素之间的步长

    nelems

    连续元素块的个数

    pe

    远程PE的编号

  24. 同步接口,将对称内存中指定处理单元(PE)上的数据按照sst的步距复制到本地PE的地址上(按照dst的步距)

    def aclshmem_iget{BITS}(dest, source, dst, sst, nelems, pe)
    

    参数/返回值

    含义

    BITS

    数据位宽,可选8/16/32/64/128

    dest

    目的数据所在本地设备的指针

    source

    源数据的对称内存的指针

    dst

    目标地址中连续元素之间的步长

    sst

    源地址中连续元素之间的步长

    nelems

    连续元素块的个数

    pe

    远程PE的编号

  25. 返回主版本号和次版本号

    def aclshmem_info_get_version()
    

    参数/返回值

    含义

    返回值

    返回主版本号和次版本号

  26. 返回供应商定义的名称字符串

    def aclshmem_info_get_name()
    

    参数/返回值

    含义

    返回值

    返回供应商定义的名称字符串

  27. 将一个团队中的给定PE编号转换为另一个团队中的对应PE编号参数

    def team_translate_pe(src_team, src_pe, dest_team)
    

    参数/返回值

    含义

    src_team

    源团队ID

    src_pe

    源PE编号

    dest_team

    目标团队ID

    返回值

    成功时,返回目标团队中指定PE的编号。出错时,返回-1

  28. 销毁一个team

    def team_destroy(team)
    

    参数/返回值

    含义

    team

    team ID

  29. 获取运行时FFT配置

    def get_ffts_config()
    
  30. 异步接口,将本地处理单元(PE)上的连续数据复制到指定处理单元(PE)上的对称地址

    def aclshmem_putmem_nbi(dst, src, elem_size, pe)
    

    参数/返回值

    含义

    dst

    本地PE对称地址上的指针

    src

    源数据本地内存中的指针

    elem_size

    目标地址和源地址中元素的大小

    pe

    远程PE的编号

  31. 异步接口,将对称内存中指定处理单元(PE)上的连续数据复制到本地PE的地址上

    def aclshmem_getmem_nbi(dst, src, elem_size, pe)
    

    参数/返回值

    含义

    dst

    指向本地处理单元(PE)对称地址的指针

    src

    指向源数据本地内存的指针

    elem_size

    目标地址和源地址中元素的大小

    pe

    远程PE的编号

  32. 异步接口,将本地处理单元(PE)上的连续数据复制到指定处理单元(PE)上的对称地址

    def aclshmem_put{BITS}_nbi(dst, src, elem_size, pe)
    

    参数/返回值

    含义

    BITS

    数据位宽,可选8/16/32/64/128

    dst

    本地PE对称地址上的指针

    src

    源数据本地内存中的指针

    elem_size

    目标地址和源地址中元素的大小

    pe

    远程PE的编号

  33. 异步接口,将对称内存中指定处理单元(PE)上的连续数据复制到本地PE的地址上

    def aclshmem_get{BITS}_nbi(dst, src, elem_size, pe)
    

    参数/返回值

    含义

    BITS

    数据位宽,可选8/16/32/64/128

    dst

    指向本地处理单元(PE)对称地址的指针

    src

    指向源数据本地内存的指针

    elem_size

    目标地址和源地址中元素的大小

    pe

    远程PE的编号

  34. 异步接口,从指定的PE复制对称内存中的连续数据到本地PE的地址

    def aclshmemx_putmem_signal_nbi(dst, src, elem_size, sig, signal, sig_op, pe)
    

    参数/返回值

    含义

    dst

    指向本地处理单元(PE)对称地址的指针

    src

    指向源数据本地内存的指针

    elem_size

    目标地址和源地址中元素的大小

    sig

    要更新的信号字的对称地址

    signal

    用于更新sig_addr的值

    sig_op

    用于signal更新sig_addr的操作

    pe

    远程PE的编号

  35. 同步接口,从指定的PE复制对称内存中的连续数据到本地PE的地址

    def aclshmemx_putmem_signal(dst, src, elem_size, sig, signal, sig_op, pe)
    

    参数/返回值

    含义

    dst

    指向本地处理单元(PE)对称地址的指针

    src

    指向源数据本地内存的指针

    elem_size

    目标地址和源地址中元素的大小

    sig

    要更新的信号字的对称地址

    signal

    用于更新sig_addr的值

    sig_op

    用于signal更新sig_addr的操作

    pe

    远程PE的编号

  36. 异步接口,从指定的PE复制对称内存中的连续数据到本地PE的地址

    def aclshmemx_put{BITS}_signal_nbi(dst, src, elem_size, sig, signal, sig_op, pe)
    

    参数/返回值

    含义

    BITS

    数据位宽,可选8/16/32/64/128

    dst

    指向本地处理单元(PE)对称地址的指针

    src

    指向源数据本地内存的指针

    elem_size

    目标地址和源地址中元素的大小

    sig

    要更新的信号字的对称地址

    signal

    用于更新sig_addr的值

    sig_op

    用于signal更新sig_addr的操作

    pe

    远程PE的编号

  37. 同步接口,从指定的PE复制对称内存中的连续数据到本地PE的地址

    def aclshmemx_put{BITS}_signal(dst, src, elem_size, sig, signal, sig_op, pe)
    

    参数/返回值

    含义

    BITS

    数据位宽,可选8/16/32/64/128

    dst

    指向本地处理单元(PE)对称地址的指针

    src

    指向源数据本地内存的指针

    elem_size

    目标地址和源地址中元素的大小

    sig

    要更新的信号字的对称地址

    signal

    用于更新sig_addr的值

    sig_op

    用于signal更新sig_addr的操作

    pe

    远程PE的编号

  38. 所有进程通过广播调用exit()函数退出

    def aclshmem_global_exit(status)
    

    参数/返回值

    含义

    status

    传递给exit()函数的状态值

  39. 获取团队中的PE编号,即PE的索引

    def my_pe(team)
    

    参数/返回值

    含义

    team

    team id

    返回值

    返回指定团队中PE的编号,出错时,返回-1

  40. def pe_count(team)
    

    参数/返回值

    含义

    team

    team id

    返回值

    返回指定团队中PE的数目,出错时,返回-1

  41. 阻塞式同步原语,用于等待指定 PE 上的信号变量(sig_addr)满足指定比较条件(如等于、大于等)时返回

    def aclshmem_signal_wait_until(sig_addr, cmp, cmp_val)
    

    参数/返回值

    含义

    sig_addr

    指向对称内存中一个信号变量的指针

    cmp

    比较类型

    cmp_val

    比较值

    返回值

    返回满足比较条件时sig_addr的值

  42. 阻塞式同步原语,用于等待指定 PE 上的信号变量(ivar)满足指定比较条件(如等于、大于等)时返回

    def aclshmem_{TYPE}_wait_until(ivar, cmp, cmp_val)
    

    参数/返回值

    含义

    TYPE

    数据类型,可选float/int8/int16/int32/int64/uint8/uint16/uint32/uint64/char

    ivar

    指向对称内存中一个信号变量的指针

    cmp

    比较类型

    cmp_val

    比较值

  43. 阻塞式同步原语,用于等待指定 PE 上的信号变量(ivar)不等于给定比较值cmp_value时返回

    def aclshmem_{TYPE}_wait(ivar, cmp_val)
    

    参数/返回值

    含义

    ivar

    指向对称内存中一个信号变量的指针

    cmp_val

    比较值

  44. 阻塞式同步原语,用于等待指定 PE 上一组变量(ivars)均满足给定的比较条件(ivars[i] cmp cmp_value)时返回

    def aclshmem_{TYPE}_wait_until_all(ivars_ptr, nelems, status_ptr, cmp, cmp_val)
    

    参数/返回值

    含义

    TYPE

    数据类型,可选float/int8/int16/int32/int64/uint8/uint16/uint32/uint64/char

    ivars_ptr

    指向对称内存中长度为 nelems 的数组

    nelems

    数组元素个数

    status_ptr

    可选本地掩码数组

    cmp

    比较类型

    cmp_val

    比较值

  45. 阻塞式同步原语,用于等待指定 PE 上一组变量(ivars)中至少有一个变量满足给定的比较条件(ivars[i] cmp cmp_value)时返回

    def aclshmem_{TYPE}_wait_until_any(ivars_ptr, nelems, status_ptr, cmp, cmp_val, res_out_ptr)
    

    参数/返回值

    含义

    TYPE

    数据类型,可选float/int8/int16/int32/int64/uint8/uint16/uint32/uint64/char

    ivars_ptr

    指向对称内存中长度为 nelems 的数组

    nelems

    数组元素个数

    status_ptr

    可选本地掩码数组

    cmp

    比较类型

    cmp_val

    比较值

    res_out_ptr

    接收device侧接口返回值。即满足比较条件的元素索引值

  46. 阻塞式同步原语,用于等待指定 PE 上一组变量(ivars)中至少有一个变量满足给定的比较条件(ivars[i] cmp cmp_value)时返回

    def aclshmem_{TYPE}_wait_until_some(ivars_ptr, nelems, indices_ptr, status_ptr, cmp, cmp_val, res_out_ptr)
    

    参数/返回值

    含义

    TYPE

    数据类型,可选float/int8/int16/int32/int64/uint8/uint16/uint32/uint64/char

    ivars_ptr

    指向对称内存中长度为 nelems 的数组

    nelems

    数组元素个数

    indices_ptr

    对应 ivars_ptr 中所有满足条件元素的索引值

    status_ptr

    可选本地掩码数组

    cmp

    比较类型

    cmp_val

    比较值

    res_out_ptr

    接收device侧接口返回值。即满足比较条件的元素个数

  47. 阻塞式同步原语,用于等待指定 PE 上一组变量(ivars)均满足给定的比较条件(ivars[i] cmp cmp_values[i])时返回

    def aclshmem_{TYPE}_wait_until_all_vector(ivars_ptr, nelems, status_ptr, cmp, cmp_values_ptr)
    

    参数/返回值

    含义

    TYPE

    数据类型,可选float/int8/int16/int32/int64/uint8/uint16/uint32/uint64/char

    ivars_ptr

    指向对称内存中长度为 nelems 的数组

    nelems

    数组元素个数

    status_ptr

    可选本地掩码数组

    cmp

    比较类型

    cmp_values_ptr

    比较值数组

  48. 阻塞式同步原语,用于等待指定 PE 上一组变量(ivars)中至少有一个变量满足给定的比较条件(ivars[i] cmp cmp_values[i])时返回

    def aclshmem_{TYPE}_wait_until_any_vector(ivars_ptr, nelems, status_ptr, cmp, cmp_val, cmp_values_ptr, res_out_ptr)
    

    参数/返回值

    含义

    TYPE

    数据类型,可选float/int8/int16/int32/int64/uint8/uint16/uint32/uint64/char

    ivars_ptr

    指向对称内存中长度为 nelems 的数组

    nelems

    数组元素个数

    status_ptr

    可选本地掩码数组

    cmp

    比较类型

    cmp_values_ptr

    比较值数组

    res_out_ptr

    接收device侧接口返回值。即满足比较条件的元素索引值

  49. 阻塞式同步原语,用于等待指定 PE 上一组变量(ivars)中至少有一个变量满足给定的比较条件(ivars[i] cmp cmp_values[i])时返回

    def aclshmem_{TYPE}_wait_until_some_vector(ivars_ptr, nelems, indices_ptr, status_ptr, cmp, cmp_values_ptr, res_out_ptr)
    

    参数/返回值

    含义

    TYPE

    数据类型,可选float/int8/int16/int32/int64/uint8/uint16/uint32/uint64/char

    ivars_ptr

    指向对称内存中长度为 nelems 的数组

    nelems

    数组元素个数

    indices_ptr

    对应 ivars_ptr 中所有满足条件元素的索引值

    status_ptr

    可选本地掩码数组

    cmp

    比较类型

    cmp_values_ptr

    比较值数组

    res_out_ptr

    接收device侧接口返回值。即满足比较条件的元素个数

  50. 同步原语,用于检查指定 PE 上变量(ivar)是否满足给定的比较条件(ivar cmp cmp_value)

    def aclshmem_{TYPE}_test(ivar, cmp, cmp_value, res_out_ptr)
    

    参数/返回值

    含义

    TYPE

    数据类型,可选float/int8/int16/int32/int64/uint8/uint16/uint32/uint64/char

    ivar

    指向对称内存中一个信号变量的指针

    cmp

    比较类型

    cmp_value

    比较值

    res_out_ptr

    接收device侧接口返回值。满足比较条件返回1,否则返回0

  51. 同步原语,用于检查指定 PE 上一组变量(ivars)中是否至少有一个变量满足给定的比较条件(ivars[i] cmp cmp_value)

    def aclshmem_{TYPE}_test_any(ivars_ptr, nelems, status_ptr, cmp, cmp_value, res_out_ptr)
    

    参数/返回值

    含义

    TYPE

    数据类型,可选float/int8/int16/int32/int64/uint8/uint16/uint32/uint64/char

    ivars_ptr

    指向对称内存中长度为 nelems 的数组

    nelems

    数组元素个数

    status_ptr

    可选本地掩码数组

    cmp

    比较类型

    cmp_value

    比较值

    res_out_ptr

    接收device侧接口返回值。即满足比较条件的元素索引值

  52. 同步原语,用于检查指定 PE 上一组变量(ivars)中是否至少有一个变量满足给定的比较条件(ivars[i] cmp cmp_value)

    def aclshmem_{TYPE}_test_some(ivars_ptr, nelems, indices_ptr, status_ptr, cmp, cmp_value, res_out_ptr)
    

    参数/返回值

    含义

    TYPE

    数据类型,可选float/int8/int16/int32/int64/uint8/uint16/uint32/uint64/char

    ivars_ptr

    指向对称内存中长度为 nelems 的数组

    nelems

    数组元素个数

    indices_ptr

    对应 ivars_ptr 中所有满足条件元素的索引值

    status_ptr

    可选本地掩码数组

    cmp

    比较类型

    cmp_value

    比较值

    res_out_ptr

    接收device侧接口返回值。即满足比较条件的元素个数

  53. 同步原语,用于检查指定 PE 上一组变量(ivars)是否均满足给定的比较条件(ivars[i] cmp cmp_values[i])

    def aclshmem_{TYPE}_test_all_vector(ivars_ptr, nelems, status_ptr, cmp, cmp_values_ptr, res_out_ptr)
    

    参数/返回值

    含义

    TYPE

    数据类型,可选float/int8/int16/int32/int64/uint8/uint16/uint32/uint64/char

    ivars_ptr

    指向对称内存中长度为 nelems 的数组

    nelems

    数组元素个数

    status_ptr

    可选本地掩码数组

    cmp

    比较类型

    cmp_values_ptr

    比较值数组

    res_out_ptr

    接收device侧接口返回值。满足比较条件返回1,否则返回0

  54. 同步原语,用于检查指定 PE 上一组变量(ivars)中是否至少有一个变量满足给定的比较条件(ivars[i] cmp cmp_values[i])

    def aclshmem_{TYPE}_test_any_vector(ivars_ptr, nelems, status_ptr, cmp, cmp_val, cmp_values_ptr, res_out_ptr)
    

    参数/返回值

    含义

    TYPE

    数据类型,可选float/int8/int16/int32/int64/uint8/uint16/uint32/uint64/char

    ivars_ptr

    指向对称内存中长度为 nelems 的数组

    nelems

    数组元素个数

    status_ptr

    可选本地掩码数组

    cmp

    比较类型

    cmp_values_ptr

    比较值数组

    res_out_ptr

    接收device侧接口返回值。即满足比较条件的元素索引值

  55. 同步原语,用于检查指定 PE 上一组变量(ivars)中是否至少有一个变量满足给定的比较条件(ivars[i] cmp cmp_values[i])

    def aclshmem_{TYPE}_wait_until_some_vector(ivars_ptr, nelems, indices_ptr, status_ptr, cmp, cmp_values_ptr,res_out_ptr)
    

    参数/返回值

    含义

    TYPE

    数据类型,可选float/int8/int16/int32/int64/uint8/uint16/uint32/uint64/char

    ivars_ptr

    指向对称内存中长度为 nelems 的数组

    nelems

    数组元素个数

    indices_ptr

    对应 ivars_ptr 中所有满足条件元素的索引值

    status_ptr

    可选本地掩码数组

    cmp

    比较类型

    cmp_values_ptr

    比较值数组

    res_out_ptr

    接收device侧接口返回值。即满足比较条件的元素个数

  56. 同步接口,在指定流上将对称内存中连续的数据从本地处理单元(PE)复制到指定PE的地址上

    def aclshmemx_putmem_on_stream(dst, src, elem_size, pe, stream) -> None
    

    参数/返回值

    含义

    dst

    本地PE对称地址上的指针

    src

    源数据本地内存中的指针

    elem_size

    目标地址和源地址中元素的大小

    pe

    远程PE的编号

    stream

    使用指定的流进行拷贝(如果 stream 为 NULL,则使用默认流)

  57. 同步接口,在指定流上将对称内存中指定处理单元(PE)上的连续数据复制到本地PE的地址上

    def aclshmemx_getmem_on_stream(dst, src, elem_size, pe, stream) -> None
    

    参数/返回值

    含义

    dst

    指向本地处理单元(PE)对称地址的指针

    src

    指向源数据本地内存的指针

    elem_size

    目标地址和源地址中元素的大小

    pe

    远程PE的编号

    stream

    使用指定的流进行拷贝(如果 stream 为 NULL,则使用默认流)

  58. 同步接口,在指定的 PE 上对远程信号变量执行原子操作,该操作在给定的流上执行

    def aclshmemx_signal_op_on_stream(sig, signal, sig_op, pe, stream) -> None
    

    参数/返回值

    含义

    sig

    本地地址,指向源信号变量,该变量在目标 PE 上可访问

    signal

    用于原子操作的值

    sig_op

    在远程信号变量上执行的操作

    pe

    远程PE的编号

    stream

    使用指定的流进行拷贝(如果 stream 为 NULL,则使用默认流)

  59. 同步接口,在指定的 PE 上对远程信号变量执行原子比较操作,该操作在给定的流上执行

    def aclshmemx_signal_wait_until_on_stream(sig, cmp, cmp_val, stream) -> None
    

    参数/返回值

    含义

    sig

    源信号变量的本地地址

    cmp

    用于比较 sig 所指向值与 cmp_val 的比较操作符

    cmp_val

    用于与 sig 所指向的值进行比较的数值

    stream

    使用指定的流进行拷贝(如果 stream 为 NULL,则使用默认流)

  1. OpEngineType枚举类

    class OpEngineType(Enum):
        MTE
        SDMA
        ROCE
    
  2. OptionalAttr类

    class OptionalAttr:
        def __init__(self):
    

    属性

    含义

    version

    版本

    data_op_engine_type

    类型

    shm_init_timeout

    init函数的超时时间

    shm_create_timeout

    create函数的超时时间

    control_operation_timeout

    控制操作的超时时间

  3. InitAttr类

    class InitAttr:
        def __init__(self):
    

    属性

    含义

    my_rank

    当前进程的排名

    n_ranks

    所有进程的总排名数

    ip_port

    通信服务器的ip和端口

    local_mem_size

    当前占用的共享内存大小

    option_attr

    可选参数

  4. TeamConfig类

    class TeamConfig:
    

    属性

    含义

    num_contexts

    一个团队(team)中可以同时运行的上下文数量

  5. UniqueId类

    class UniqueId:
        def __init__(self):
    

    属性

    含义

    version

    版本信息

    my_rank

    当前进程的pe编号

    n_pes

    所有进程的pe总数

    internal

    uid的内部信息

  6. InitStatus枚举类

    class InitStatus(Enum):
        NOT_INITIALIZED
        SHM_CREATED
        INITIALIZED
        INVALID
    
  7. SignalOp枚举类

    class SignalOp(Enum):
        SIGNAL_SET
        SIGNAL_ADD
    
  8. CmpOp枚举类

    class CmpOp(Enum):
        CMP_EQ
        CMP_NE
        CMP_GT
        CMP_GE
        CMP_LT
        CMP_LE