CANN/shmem 对外头文件与库文件 SHMEM 对外头文件与库文件说明【免费下载链接】shmemCANN SHMEM 是面向昇腾平台的多机多卡内存通信库基于OpenSHMEM 标准协议实现跨设备的高效内存访问与数据同步。项目地址: https://gitcode.com/cann/shmem范围对外公开接口头文件以及安装产物中的共享库.so。1. 库文件总览库文件类型用途依赖版本信息libshmem.so核心运行时Host 侧主库初始化、堆、Team、Host RMA/同步/集合通信等依赖ASCEND_HOME_PATH下 CANN 库runtime/ascendcl/tiling_api/platform/c_sec等链接libshmem_utils.soSOC_TYPEAscend950时另链hcommlibshmem_utils.so工具/支撑库日志、内部工具与公共支撑符号供主库与 bootstrap 插件链接无独立对外版本号UDMA 开启时编译期依赖 nlohmann/json 头文件aclshmem_bootstrap_config_store.soBootstrap 插件无lib前缀Default / UniqueID 初始化控制面Config Store。ACLSHMEMX_INIT_WITH_DEFAULT与ACLSHMEMX_INIT_WITH_UNIQUEID均加载本库运行时由 init 动态加载链接libshmem_utils.so无独立版本号aclshmem_bootstrap_uid.soBootstrap 插件UniqueID bootstrap 相关库链接libshmem_utils.so无独立版本号aclshmem_bootstrap_mpi.soBootstrap 插件可选MPI 模式 bootstrapCMakefind_package(MPI)成功时才编译链接MPI::MPI_CXX与libshmem_utils.so_pyshmem*.soPython 扩展可选pybind11 绑定供import shmem构建find_package(pybind11)链接libshmem.so等运行torch-npusetup.py说明Device 侧接口多为头文件内联Host 侧符号由libshmem.so提供。应用侧通常#include shmem.h链接-lshmem并保证libshmem_utils.so与实际使用的 bootstrap 插件可被动态链接器解析。2. 对外公开接口头文件列表统一入口shmem.h按 Host / Device / SIMT 条件包含下列头文件。2.1 总入口与公共定义对外公开接口文件对应 so 库文件文件用途依赖版本信息shmem.hHost 部分对应libshmem.so及 utils/bootstrapDevice/SIMT 部分无对外总头文件按编译宏聚合 Host / Device / SIMT 公开 APIDevice/SIMT 分支依赖编译宏如__CCE_AICORE__、USE_SIMT无独立外部版本号host_device/shmem_common_types.h无Host/Device 共用类型、枚举、ACLSHMEM_DEVICE等宏依赖 CANN 头文件acl/acl_rt.hhost_device/shmem_common_macros.h无Host/Device 共用宏无host/shmem_host_def.hlibshmem.soHost 侧常量、版本宏、ACLSHMEM_HOST_API、公共结构/枚举无外部版本约束仅定义本库 API 宏device/shmem_def.h无Device 侧公共定义与非连续拷贝等结构依赖 CANNUSE_SIMT时有条件分支2.2 Host 侧公开接口对外公开接口文件对应 so 库文件文件用途依赖版本信息host/init/shmem_host_init.hlibshmem.so 运行时加载 bootstrap 插件初始化/终结、UniqueId、init 状态查询、aclshmemx_init_attr等Default/UniqueID 加载aclshmem_bootstrap_config_store.soMPI 模式加载aclshmem_bootstrap_mpi.so需系统 MPIhost/mem/shmem_host_heap.hlibshmem.so对称堆分配malloc/calloc/align/free及扩展内存类型接口无host/team/shmem_host_team.hlibshmem.soTeam 创建/拆分/销毁、PE 翻译、my_pe/n_pes等无host/data_plane/shmem_host_rma.hlibshmem.soHost 侧 RMAput/get 等与aclshmem_ptr无host/data_plane/shmem_host_so.hlibshmem.soHost 侧 putsignal 同步/异步接口无host/data_plane/shmem_host_p2p_sync.hlibshmem.soHost 侧 P2P 同步、handle_wait、signal wait、ffts 配置获取无host/data_plane/shmem_host_cc.hlibshmem.soHost 侧集合通信barrier/sync 及 on_stream 变体无host/utils/shmem_log.hlibshmem.so/libshmem_utils.so外部 logger、日志级别、profiling 打印/获取无2.3 Device 侧公开接口GM↔GM / UB↔GM对外公开接口文件对应 so 库文件文件用途依赖版本信息device/gm2gm/shmem_device_rma.h无Device GM↔GM 标准 RMA多 dtype put/get 等依赖 CANN底层可走 MTE/RDMA/SDMA/UDMA由拓扑与编译选项决定device/gm2gm/shmem_device_so.h无Device 侧 putsignal 同步接口依赖 CANNdevice/gm2gm/shmem_device_amo.h无Device 原子操作atomic_add 等依赖 CANN头文件注明各引擎支持类型随 SoC如 UDMA 面向 Ascend950device/gm2gm/shmem_device_mo.h无Device 内存序quiet/fence依赖 CANNdevice/gm2gm/shmem_device_p2p_sync.h无Device P2P 同步signal_op、wait_until 等依赖 CANNdevice/gm2gm/shmem_device_cc.h无Device 集合通信barrier含 vector-only 等变体、ffts 地址设置依赖 CANN头文件限制主要用于 MIX Kerneldevice/gm2gm/engine/shmem_device_mte.h无MTE 引擎对称地址翻译、连续/非连续异步 put/get依赖 CANNdevice/gm2gm/engine/shmem_device_rdma.h无RDMA 引擎跨机/远端对称内存异步 RMA依赖 CANNHost 侧需开启ACLSHMEM_RDMA_SUPPORTAscend950 另需指定 RDMA backenddevice/gm2gm/engine/shmem_device_sdma.h无SDMA 引擎参数设置与异步 put/get依赖 CANNdevice/gm2gm/engine/shmem_device_udma.h无UDMA 引擎低阶异步 RMA依赖 CANN编译需ACLSHMEM_UDMA_SUPPORT且 Hcomm 提供所需 APICMaketry_compile检测面向 Ascend950device/ub2gm/shmem_device_rma.h无UB↔GM 标准 RMAUB 侧 get/put 等依赖 CANNdevice/ub2gm/engine/shmem_device_mte.h无UB↔GM 的 MTE 引擎异步拷贝依赖 CANNdevice/team/shmem_device_team.h无Device 侧 Team/PE 查询与 PE 翻译依赖 CANN2.4 Device SIMT 公开接口需开启 SIMT 支持对外公开接口文件对应 so 库文件文件用途依赖版本信息device_simt/shmem_simt_common_types.h无SIMT 公共状态/类型定义需编译定义USE_SIMTACLSHMEM_SIMT_SUPPORTdevice_simt/gm2gm/shmem_device_simt_rma.h无SIMT 作用域下的 GM↔GM RMA需USE_SIMT依赖 CANNdevice_simt/gm2gm/engine/shmem_device_simt_mte.h无SIMT MTEthread/block/warp 作用域异步拷贝需USE_SIMT依赖 CANNdevice_simt/team/shmem_device_simt_team.h无SIMT 侧 Team 相关接口需USE_SIMT依赖 CANN【免费下载链接】shmemCANN SHMEM 是面向昇腾平台的多机多卡内存通信库基于OpenSHMEM 标准协议实现跨设备的高效内存访问与数据同步。项目地址: https://gitcode.com/cann/shmem创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考