内存池化基础软件, 基于超节点总线、服务器网络实现DRAM与显存混合池化,提供极简的内存访问接口和高性能的内存直接访问能力,支撑多种场景下的数据共享与传输
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
添加特性设计的SKILL Co-authored-by: liuquanzhang<brian.liu@huawei.com> # message auto-generated for no-merge-commit merge: !917 merge develop_add_design_skill into develop 添加特性设计的SKILL Created-by: liu1103xwxw Commit-by: liuquanzhang Merged-by: chenyz6 Description: # 合入来源 - [ ] 需求 - [ ] 问题单 - [x] issue # 问题/功能描述 添加特性设计的SKILL # 修改方案描述 新增SKILL # 是否涉及UT/ST - [ ] 是 - [x] 否(无代码,仅提交文档规范) # 开发自检 - [x] 规范:未超过1k;超过1k已完成备案;反合入需要标题注明【反合】 - [x] 规范:已关联issue或里程碑 - [x] 规范:不需要UT/ST且已说明理由;需要且已包含UT/ST - [x] 安全:涉及对外接口/参数/环境变量改动,并同步修改资料 - [x] 安全:未引入三方开源软件;引入三方开源软件并经过安全评审 - [x] 安全:未新增对外接口/参数;新增对外接口/参数有校验 - [x] 规范:未涉及资料改动;涉及资料改动并已完成修改 See merge request: Ascend/memfabric_hybrid!917 | 3 个月前 | |
[motor]日志整改 Co-authored-by: lanskeep<lichunyang17@h-partners.com> # message auto-generated for no-merge-commit merge: !959 merge develop into develop [motor]日志整改 Created-by: lanskeep Commit-by: lanskeep Merged-by: chenyz6 Description: # 合入来源 - [ ] 需求 - [ ] 问题单 - [x] issue # 问题/功能描述 [motor]日志整改 # 修改方案描述 1、日志信息不合理 2、修改日志等级不合理,warn级别日志中,有error、failed等error级别字段信息 3、重要流程日志缺失 # 是否涉及UT/ST - [ ] 是 - [x] 否(说明理由) # 开发自检 - [x] 规范:未超过1k;超过1k已完成备案;反合入需要标题注明【反合】 - [x] 规范:已关联issue或里程碑 - [x] 规范:不需要UT/ST且已说明理由;需要且已包含UT/ST - [x] 安全:涉及对外接口/参数/环境变量改动,并同步修改资料 - [x] 安全:未引入三方开源软件;引入三方开源软件并经过安全评审 - [x] 安全:未新增对外接口/参数;新增对外接口/参数有校验 - [x] 规范:未涉及资料改动;涉及资料改动并已完成修改 See merge request: Ascend/memfabric_hybrid!959 | 3 个月前 | |
【TTFHW】修复 TTFHW issue 308 && 工程优化 Co-authored-by: littleyellowbicycle<liguo29@h-partners.com> # message auto-generated for no-merge-commit merge: !1071 merge ci_fix into develop 【TTFHW】修复 TTFHW issue 308 && 工程优化 Created-by: littleyellowbicycle Commit-by: littleyellowbicycle Merged-by: yrewzjsx Description: # 合入来源 - [ ] 需求 - [ ] 问题单 - [ √] issue # 问题/功能描述 1. devcontainer 工程 pre-commit go组件没有安装 2. 用例脚本部分用例执行容易失败 3. ttfhw 文档描述不全,构建脚本没有aib控制开关 # 修改方案描述 1. post脚本中安装go依赖 2. 执行前增加环境清理 3. 脚本增加 abi 启动开关, 文档增加描述 # 是否涉及UT/ST - [ ] 是 - [ √] 否(工程修改,不涉及业务逻辑) # 开发自检 - [√ ] 规范:未超过1k;超过1k已完成备案;反合入需要标题注明【反合】 - [ √] 规范:已关联issue或里程碑 - [ √] 规范:不需要UT/ST且已说明理由;需要且已包含UT/ST - [ ×] 安全:涉及对外接口/参数/环境变量改动,并同步修改资料 - [ √] 安全:未引入三方开源软件;引入三方开源软件并经过安全评审 - [ √] 安全:未新增对外接口/参数;新增对外接口/参数有校验 - [ √] 规范:未涉及资料改动;涉及资料改动并已完成修改 See merge request: Ascend/memfabric_hybrid!1071 | 2 个月前 | |
update pr template Co-authored-by: Hututu-w<wangyibing13@huawei.com> # message auto-generated for no-merge-commit merge: !844 merge dev_doc into develop update pr template Created-by: Hututu-w Commit-by: Hututu-w Merged-by: liu1103xwxw Description: 更新pr描述模板 See merge request: Ascend/memfabric_hybrid!844 | 4 个月前 | |
zbal fused_deep_moe: bf16/fp16 内核拆分到独立 .cpp 以缩短编译时间 把按 src_data_type 运行时分支的单一 kernel 拆成 bf16/fp16 两个入口内核, 并分别放入独立 .cpp(公共宏集中到 entry.h),使 make -j 可并行编译; 执行行为与参数顺序不变,fmoe 编译时间缩短。 | 28 天前 | |
[core] ci: pre-commit 全量格式化:clang-format/ruff,仅格式无逻辑变更 Co-authored-by: shilinlee<836160610@qq.com> # message auto-generated for no-merge-commit merge: !930 merge mf_format_pre_commit into develop [core] ci: pre-commit 全量格式化:clang-format/ruff,仅格式无逻辑变更 Created-by: shilinlee_com Commit-by: shilinlee Merged-by: yrewzjsx Description: # 合入来源 - [ ] 需求 - [ ] 问题单 - [x] issue # 问题/功能描述 仓库代码风格不统一(C++ 指针对齐、大括号位置、行宽;Python 引号、行宽、换行),且缺乏强制校验。需引入 pre-commit 全量格式化与 CI PR 检查,统一全仓风格基线。 # 修改方案描述 1. 配置 pre-commit 钩子(.pre-commit-config.yaml、.clang-format、pre-commit/pyproject.toml):trim trailing whitespace、fix end of files、check yaml/json、detect private key、ruff format(py310,行长 120)、codespell、clang-format v18.1.8(Google 基础,IndentWidth=4,ColumnLimit=120,Allman 大括号)。 2. 改造 script/ci-pre-commit-pr.sh,支持全量检查/格式化与按 PR 变更增量过滤两种模式。 5. 验证: pre-commit run --all-files 全部通过;95 个 Python 文件 AST 比对无语义差异;C++ 抽查(common_def.h、pytransfer.cpp 等)均为纯格式化。 # 是否涉及UT/ST - [ ] 是 - [x] 否(说明理由):纯格式化,不改变任何业务/测试逻辑,无需新增 UT/ST。 # 开发自检 - [x] 规范:未超过1k;超过1k已完成备案;反合入需要标题注明【反合】 - [x] 规范:已关联issue或里程碑 - [x] 规范:不需要UT/ST且已说明理由;需要且已包含UT/ST - [x] 安全:涉及对外接口/参数/环境变量改动,并同步修改资料 - [x] 安全:未引入三方开源软件;引入三方开源软件并经过安全评审 - [x] 安全:未新增对外接口/参数;新增对外接口/参数有校验 - [x] 规范:未涉及资料改动;涉及资料改动并已完成修改 See merge request: Ascend/memfabric_hybrid!930 | 3 个月前 | |
[doc]新增版本说明书;将资料移至 docs/zh 目录下,并同步更新受影响文档;根据docs tool工具扫描结果刷新文档 Co-authored-by: whytao<weitao46@h-partners.com> # message auto-generated for no-merge-commit merge: !1183 merge develop into develop [doc]新增版本说明书;将资料移至 docs/zh 目录下,并同步更新受影响文档;根据docs tool工具扫描结果刷新文档 Created-by: whytao Commit-by: whytao Merged-by: yrewzjsx Description: # 合入来源 - [ ] 需求 - [ ] 问题单 - [x] issue fixed: [#416](https://atomgit.com/Ascend/memfabric_hybrid/issues/416) # 问题/功能描述 新增版本说明书; 将资料移至 docs/zh 目录下,并同步更新受影响文档; 根据docs tool工具扫描结果刷新文档,从而满足资料门禁需求 # 修改方案描述 # 是否涉及UT/ST - [ ] 是 - [ ] 否(说明理由) # 开发自检 - [ ] 规范:未超过1k;超过1k已完成备案;反合入需要标题注明【反合】 - [ ] 规范:已关联issue或里程碑 - [ ] 规范:不需要UT/ST且已说明理由;需要且已包含UT/ST - [ ] 安全:涉及对外接口/参数/环境变量改动,并同步修改资料 - [ ] 安全:未引入三方开源软件;引入三方开源软件并经过安全评审 - [ ] 安全:未新增对外接口/参数;新增对外接口/参数有校验 - [ ] 规范:未涉及资料改动;涉及资料改动并已完成修改 See merge request: Ascend/memfabric_hybrid!1183 | 1 个月前 | |
[fix] etcd .so 补充 SONAME:Go c-shared 不自动设置,用 patchelf 补齐 Co-authored-by: liuao<royliu.chengdu@gmail.com> # message auto-generated for no-merge-commit merge: !1298 merge fix/etcd-so-soname into master [fix] etcd .so 补充 SONAME:Go c-shared 不自动设置,用 patchelf 补齐 Created-by: gcw_M5Xrk6cX Commit-by: liuao Merged-by: liu1103xwxw Description: # 合入来源 - [ ] 需求 - [ ] 问题单 - [x] issue # 问题/功能描述 # 修改方案描述 # 是否涉及UT/ST - [ ] 是 - [x] 否(说明理由) # 开发自检 - [x] 规范:未超过1k;超过1k已完成备案;反合入需要标题注明【反合】 - [x] 规范:已关联issue或里程碑 - [x] 规范:不需要UT/ST且已说明理由;需要且已包含UT/ST - [x] 安全:涉及对外接口/参数/环境变量改动,并同步修改资料 - [x] 安全:未引入三方开源软件;引入三方开源软件并经过安全评审 - [x] 安全:未新增对外接口/参数;新增对外接口/参数有校验 - [x] 规范:未涉及资料改动;涉及资料改动并已完成修改 See merge request: Ascend/memfabric_hybrid!1298 | 1 个月前 | |
支持通过 SYS_memfd_create 申请共享内存 Co-authored-by: hansanyue<hansanyue@h-partners.com> # message auto-generated for no-merge-commit merge: !1299 merge master_host-shm into master 支持通过 SYS_memfd_create 申请共享内存 Created-by: han-sanyue Commit-by: hansanyue Merged-by: chenyz6 Description: # 合入来源 - [x] 需求 - [ ] 问题单 - [ ] issue # 问题/功能描述 原有的host_shm实现中有两种内存申请方式,分别依赖容器挂载Hugetlbfs或者设置--shm-size。新增一种SYS_memfd_create申请方式不依赖容器拉起参数,在MF_HOST_SHM_USE_MEMFD=1时使用。 # 修改方案描述 | 共享方式 | 同容器共享 | 跨容器共享 | 实测带宽 | | ----------------------------------------- | ------------------- | ------------------- | -------------------------- | | /proc/\<pid>/fd/\<fd> | 容器无特殊要求 | 设置 --pid=host | PUT 5GB/s GET 12~13 GB/s | | /dev/hugepages/memfabric_hybrid_{rank_id} | 挂载 /dev/hugepages | 挂载 /dev/hugepages | PUT 5~6GB/s GET 9~11 GB/s | | /dev/shm/memfabric_hybrid_{rank_id} | 设置 --shm-size | / | PUT 2~3GB/s GET 10~11 GB/s | # 是否涉及UT/ST - [x] 是 - [ ] 否(说明理由) # 开发自检 - [x] 规范:未超过1k;超过1k已完成备案;反合入需要标题注明【反合】 - [x] 规范:已关联issue或里程碑 - [x] 规范:不需要UT/ST且已说明理由;需要且已包含UT/ST - [x] 安全:涉及对外接口/参数/环境变量改动,并同步修改资料 - [x] 安全:未引入三方开源软件;引入三方开源软件并经过安全评审 - [x] 安全:未新增对外接口/参数;新增对外接口/参数有校验 - [x] 规范:未涉及资料改动;涉及资料改动并已完成修改 See merge request: Ascend/memfabric_hybrid!1299 | 1 个月前 | |
[offload] [trans] A3支持trans d2rh+offload Co-authored-by: zhangshuren<978726578@qq.com> # message auto-generated for no-merge-commit merge: !1331 merge a3_d2rh into master [offload] [trans] A3支持trans d2rh+offload Created-by: SoulMeister Commit-by: zhangshuren Merged-by: chenyz6 Description: # 合入来源 - [ ] 需求 - [ ] 问题单 - [x] issue # 问题/功能描述 a3支持trans d2rh+offload # 修改方案描述 1. **A3 导出判型**:用户内存导出按 HBM 地址判型——hbm地址区间内走 IPC 名,区间外 offload 池走 VMM share_handle 2. **share handle 登记复用**:HybmVaManager 新增 AddHandle/GetHandle,导出/导入时登记句柄,导出时优先复用已登记句柄(解决 rank>0 无法 export 的问题) 3. **注册去重**:offload 池注册按整个 allocation 区间扩展 + slice ID 去重,重复注册直接复用既有 slice,u.address 用 slice 真实范围;配套新增 hybm_get_slice_size API 4. **整池申请**:SHARED 池从 32GB 分片改为整池一次性申请,并移除不支持跨机 import 的 HYBM_FLAG_UNRESTRICTED_MEM 5. **测试脚本**:新增 d2rh_shared 端到端验证脚本 # 是否涉及UT/ST - [x] 是 - [ ] 否(说明理由) trans d2rh_shared用例:  shared_sparse_copy用例:  shared_engram用例:  # 开发自检 - [x] 规范:未超过1k;超过1k已完成备案;反合入需要标题注明【反合】 - [x] 规范:已关联issue或里程碑 - [x] 规范:不需要UT/ST且已说明理由;需要且已包含UT/ST - [x] 安全:涉及对外接口/参数/环境变量改动,并同步修改资料 - [x] 安全:未引入三方开源软件;引入三方开源软件并经过安全评审 - [x] 安全:未新增对外接口/参数;新增对外接口/参数有校验 - [x] 规范:未涉及资料改动;涉及资料改动并已完成修改 See merge request: Ascend/memfabric_hybrid!1331 | 1 个月前 | |
[doc]新增版本说明书;将资料移至 docs/zh 目录下,并同步更新受影响文档;根据docs tool工具扫描结果刷新文档 Co-authored-by: whytao<weitao46@h-partners.com> # message auto-generated for no-merge-commit merge: !1183 merge develop into develop [doc]新增版本说明书;将资料移至 docs/zh 目录下,并同步更新受影响文档;根据docs tool工具扫描结果刷新文档 Created-by: whytao Commit-by: whytao Merged-by: yrewzjsx Description: # 合入来源 - [ ] 需求 - [ ] 问题单 - [x] issue fixed: [#416](https://atomgit.com/Ascend/memfabric_hybrid/issues/416) # 问题/功能描述 新增版本说明书; 将资料移至 docs/zh 目录下,并同步更新受影响文档; 根据docs tool工具扫描结果刷新文档,从而满足资料门禁需求 # 修改方案描述 # 是否涉及UT/ST - [ ] 是 - [ ] 否(说明理由) # 开发自检 - [ ] 规范:未超过1k;超过1k已完成备案;反合入需要标题注明【反合】 - [ ] 规范:已关联issue或里程碑 - [ ] 规范:不需要UT/ST且已说明理由;需要且已包含UT/ST - [ ] 安全:涉及对外接口/参数/环境变量改动,并同步修改资料 - [ ] 安全:未引入三方开源软件;引入三方开源软件并经过安全评审 - [ ] 安全:未新增对外接口/参数;新增对外接口/参数有校验 - [ ] 规范:未涉及资料改动;涉及资料改动并已完成修改 See merge request: Ascend/memfabric_hybrid!1183 | 1 个月前 | |
[doc]新增版本说明书;将资料移至 docs/zh 目录下,并同步更新受影响文档;根据docs tool工具扫描结果刷新文档 Co-authored-by: whytao<weitao46@h-partners.com> # message auto-generated for no-merge-commit merge: !1183 merge develop into develop [doc]新增版本说明书;将资料移至 docs/zh 目录下,并同步更新受影响文档;根据docs tool工具扫描结果刷新文档 Created-by: whytao Commit-by: whytao Merged-by: yrewzjsx Description: # 合入来源 - [ ] 需求 - [ ] 问题单 - [x] issue fixed: [#416](https://atomgit.com/Ascend/memfabric_hybrid/issues/416) # 问题/功能描述 新增版本说明书; 将资料移至 docs/zh 目录下,并同步更新受影响文档; 根据docs tool工具扫描结果刷新文档,从而满足资料门禁需求 # 修改方案描述 # 是否涉及UT/ST - [ ] 是 - [ ] 否(说明理由) # 开发自检 - [ ] 规范:未超过1k;超过1k已完成备案;反合入需要标题注明【反合】 - [ ] 规范:已关联issue或里程碑 - [ ] 规范:不需要UT/ST且已说明理由;需要且已包含UT/ST - [ ] 安全:涉及对外接口/参数/环境变量改动,并同步修改资料 - [ ] 安全:未引入三方开源软件;引入三方开源软件并经过安全评审 - [ ] 安全:未新增对外接口/参数;新增对外接口/参数有校验 - [ ] 规范:未涉及资料改动;涉及资料改动并已完成修改 See merge request: Ascend/memfabric_hybrid!1183 | 1 个月前 | |
【feature】transfer support register dram Co-authored-by: littleyellowbicycle<1021593619@qq.com> # message auto-generated for no-merge-commit merge: !1287 merge dram into master 【feature】transfer support register dram Created-by: littleyellowbicycle Commit-by: littleyellowbicycle Merged-by: chenyz6 Description: # 合入来源 - [ √] 需求 - [ ] 问题单 - [ ] issue # 问题/功能描述 1. 用户 DRAM 无法接入 trans 池:原 HybmDevUserLegacySegment 仅支持 HBM 用户注册内存(RtIpc 路径),外部 DRAM 无注册通道,HBM+DRAM 异构内存无法在单个用户段内统一管理、导出/导入。 2. dataOpType 未设置时 host register 被拒:CheckHostRegisterAllowed 白名单仅放行显式指定 opType 的场景,dataOpType=DEFAULT(0)(纯主机/无卡接入)会被直接拒绝,导致 smem_trans 相关 UT 失败、非 NPU 场景不可用。 3. 非 NPU 构建无法使用 host 类传输:ApplyDataOpType 在非 ascend NPU 构建下一律拒绝,但 HOST_RDMA/URMA/TCP 为纯主机侧传输,不依赖昇腾设备 SDK。 4. Python TransferAdapter 退出堆损坏:析构时 consumer 线程/连接未有序停止,静态析构期间释放 SMEM/HCOM 状态触发 abort(malloc_consolidate); unregister_memory 在无 handle 场景未向对端广播 deregister、未清理本地注册表。 5 . UT 存在编译错误(lambda 参数类型与 typedef 不一致)及 clean code 扫描问题。 # 修改方案描述 1. 新增 AsymmetricMemSegment 替代 HybmDevUserLegacySegment(hybm_asymmetric_mem_segment.cpp/h):仅当 scene=TRANS && maxHBMSize!=0 时由工厂创建;单段内同时管理两类介质——HBM 走 RtIpc 注册,用户 DRAM 走 DlHalApi::HalHostRegister + HOST_MEM_MAP_DEV(mapped+pinned 映射进设备地址空间,实现设备侧零拷贝访问);新增 USER_DRAM_SLICE_EXPORT_INFO_MAGIC、SEGMENT_TYPE_USER_DRAM 与 IsUserDramSlice(),ExportSliceExchangeInfo/ImportForSegment 按 slice 实际 memType 选择导出 magic,保证 192B 统一交换结构对端可识别。 2. 注册准入放宽:CheckHostRegisterAllowed 放行 dataOpType==DEFAULT(NeedHostDeviceMapping=false,仅登记 GVA);trans 场景补齐 HOST_URMA/HOST_TCP opType 支持,非 NPU 构建仅对 device 类 op 拒绝、host 类 op 放行。 3. TransferAdapter 生命周期修复(pytransfer.cpp/h):抽出有序 Shutdown()(先停 consumer、关连接,再释放 SMEM/HCOM),解决退出堆损坏;unregister_memory 修复无 handle 时的广播 deregister 与 registeredMems_ 清理;引入 smemInited_ 防重复 init/uninit。 4. UT 整改:新增 hybm_asymmetric_segment_test.cpp(464 行,覆盖 HBM/DRAM 双介质注册、导出导入、准入校验);修复 dev/mem_segment 测试编译错误(stub lambda const void* 签名对齐 typedef);clean code 整改(魔法数字具名化、reinterpret_cast 收敛至 TestAddr()、strncpy→memcpy、fixture 命名对齐文件名)。 # 是否涉及UT/ST - [√ ] 是 - [ ] 否(说明理由) # 开发自检 - [ √] 规范:未超过1k;超过1k已完成备案;反合入需要标题注明【反合】 - [ √] 规范:已关联issue或里程碑 - [ √] 规范:不需要UT/ST且已说明理由;需要且已包含UT/ST - [ √] 安全:涉及对外接口/参数/环境变量改动,并同步修改资料 - [ √] 安全:未引入三方开源软件;引入三方开源软件并经过安全评审 - [ √] 安全:未新增对外接口/参数;新增对外接口/参数有校验 - [ √] 规范:未涉及资料改动;涉及资料改动并已完成修改 shell TRACE [62788-62788][HYBM compose_transport_manager.cpp:131 OpenDevice] Success to open device rankId:0 protocol:8 nic:host#tcp://192.168.100.10:6000; [Decode] engine init success, dataOpType=HOST_RDMA nic='tcp://192.168.100.10:6000' [Decode] registered host buffer addr=0x7fec10200000 size=4194304 [Decode] >>> copy this addr to Prefill: --dst-addr 0x7fec10200000 <<< [Decode] waiting for data ... 2026-09-09 07:56:51.961934 TRACE [62788-62802][AccLink acc_tcp_listener.cpp:210 ProcessNewConnection] Connected from 127.0.0.1:60578 successfully, ssl disable 2026-09-09 07:56:51.962020 TRACE [62788-62802][SMEM smem_tcp_config_store_server.cpp:319 LinkConnectedHandler] l:2 ws:4294967295 r:4294967295 rec:0 2026-09-09 07:56:52.990768 ERROR [62788-62817][HYBM host_hcom_transport_manager.cpp:81 HcomExternalLoggerAdapter] [HCOM] [HCOM net_monotonic.h:134] Failed to get tick as failed to get GHz [Decode] PASS: received data verified, checksum=534759456 bytes=4194240 2026-09-09 07:56:53.285212 TRACE [62788-62814][HYBM host_hcom_reconnector.cpp:118 ReconnectLoop] end thread for host_re_conn 2026-09-09 07:56:53.286033 TRACE [62788-62816][HYBM host_hcom_transport_manager.cpp:1067 HcomChannelDisconnected] broken channel local server side:0, reconnect by remote side: 1 2026-09-09 07:56:58.671872 TRACE [62788-62801][SMEM smem_tcp_config_store_server.cpp:391 LinkBrokenHandler] link broken, linkId: 1 remove rankId: 0 2026-09-09 07:56:58.683826 TRACE [62788-62788][SMEM smem_tcp_config_store_server.cpp:188 Shutdown] start to shutdown Acc Store Server 2026-09-09 07:56:58.968713 TRACE [62788-62802][AccLink acc_tcp_listener.cpp:182 RunInThread] Working thread for AccTcpStore listener at 127.0.0.1:50051 exiting 2026-09-09 07:56:59.682129 TRACE [62788-62805][SMEM smem_tcp_config_store_server.cpp:1272 CheckerThreadTask] checker thread exit 2026-09-09 07:56:59.682268 TRACE [62788-62788][SMEM smem_tcp_config_store_server.cpp:228 Shutdown] finished shutdown Acc Store Server 2026-09-09 07:56:59.683229 TRACE [62788-62788][SMEM smem_trans.cpp:103 smem_trans_uninit] smem_trans_uninit finished See merge request: Ascend/memfabric_hybrid!1287 | 1 个月前 | |
[core] [feat] trans 支持 offload/bm 内存注册,va_manager 去 rank 化 Co-authored-by: littleyellowbicycle<liguo29@h-partners.com> Co-authored-by: littleyellowbicycle<1021593619@qq.com> # message auto-generated for no-merge-commit merge: !1270 merge support_rubin into master [core] [feat] trans 支持 offload/bm 内存注册,va_manager 去 rank 化 Created-by: littleyellowbicycle Commit-by: littleyellowbicycle Merged-by: chenyz6 Description: # 合入来源 - [√] 需求 - [ ] 问题单 - [√] issue # 问题/功能描述 ## 1. 需求 trans 场景需支持注册由 offload/bm 侧申请并持有的内存(典型:KV pool)。这类内存的持有方与注册方 往往不是同一实例,且同一块内存会被多实例(多连接)重复注册。据此要求: 1. va_manager 支持多个 segment 记录同一地址,以**计数**维护记录次数; 2. va_manager 不再记录 rank 信息,仅校验地址合法性; 3. gva 与 rank 的对应关系由 segment 维护。 ## 2. 原状差距 | 点 | 现状 | 差距 | |---|---|---| | 多实例注册同一地址 | VA 记录以 rank+地址做判重比较,跨 entity 注册同一 deviceVa 被判 overlap | bm/offload 内存无法被 trans 多连接重复注册 | | rank 语义 | VA 记录携带 localRankId/importedRankId,经 GetRankByGva 全局查询 | 多 store 组下 rank 归属有歧义:多实体下本地地址可能解析到他人 rank | | 地址分类 | 数据面方向决策依赖「本地/导入」布尔属性,与 rank 数值耦合在同一字段 | 概念混杂,无法按需求把 rank 下沉到 segment | 附带收益:sglang round-robin 场景(prefill 每请求轮流分发到不同 decode 实例,多连接并存、同一 KV pool 被多对端访问/注册)所依赖的「多实例同地址共存 + rank 域内解析」,在本重构下语义完备。 # 修改方案描述 ## 1. VA 管理器去 rank 化(纯地址注册表) - AllocatedGvaInfo/ReservedGvaInfo 删除 rank 字段,引入 AddressOwnership{Local, Imported} (hybm_va_manager.h:154);数据面方向决策 ClassifyAddressMask(hybm_va_manager.cpp:315-349) 只依赖归属布尔与 memType,与 rank 数值解耦。归属标记的产生点在 QueryAddr(.h:325)。 - 删除 GetRankByGva。接口收缩掉 rank 形参:AddVaInfoFromExternal(.h:272)、 AddVaInfo 两个重载(.h:275/:276)、AllocReserveGva(.h:294)、AllocReserveLva(.h:296)。 导入侧只打归属标记:AddVaInfoFromExternal 内构造 AllocatedGvaInfo(baseInfo, AddressOwnership::Imported)(.cpp:151)。 - 数据面 6 个分类调用点(hybm_data_op_entry.cpp:35/36/80/81/141/142)调用形式与语义均不变。 ## 2. segment 维护 gva↔rank - MemSegment 基类新增导入区 gva→rank 索引(hybm_mem_segment.h:148-177): IndexRemoteGva(登记,:151)、UnindexRemoteGva(注销,:157)、 FindRemoteRankByVa(按地址区间查询,:164)。底层 std::map + upper_bound ⇒ O(log n), 由 std::mutex remoteGvaRankMutex_ 互斥保护。 - 五类 segment 在「导入成功」与「远端切片删除」两处挂钩(下表为各自源文件内行号): | segment | 登记 IndexRemoteGva | 注销 UnindexRemoteGva | |---|---|---| | asymmetric | :667、:689 | :518 | | conn_based | :242 | :502 | | dev_legacy | :405 | :444 | | host_shm | :548 | :559 | | vmm | :634、:698 | :746 | - MemEntityDefault::LocateAddrAndRank 改为 **entity 域内解析**(hybm_entity_default.cpp:1147-1165): 先查本 entity 的 hbm/dram segment 导入索引,命中 → 对端 rank;未命中 → 本 options_.rankId。 顺带修掉多实体下「本地地址被解析成他人 rank」的隐患。 ## 3. 多实例同地址注册闭环 - **注册侧**:GVA 表按注册记录逐条登记(每连接身份独立);DVA/HVA 翻译表 first-wins —— 同一物理内存 只保留最早一份翻译,后注册的记录不覆盖(hybm_va_manager.cpp:80-98)。判重放行判据保持原语义: 「dva/hva/size/memType 全同且双方均为 Local」即视为同一物理内存的重放注册(.cpp:131-138), 原 allowAlias 开关已去掉(恒放行,不再需要显式开关)。 - **寿命侧**:新增 hvaRefCnt_(.h:358)按 HVA 计数。AddVaInfo 仅在「GVA 行新增」时递增, 幂等重放不重复计数(.cpp:82、:100-102);RemoveOneVaInfo(.cpp:167)经 ReleaseHvaRef(.cpp:208)递减,**计数归零才回收 DVA/HVA 行**(.cpp:184-203)。 - **传播侧**:lKey 与对端传播按连接独立。 - **机制演进(评审关注点)**:早期方案用 allowAlias 开关 + 属主晋升(PromoteAliasOwner)实现同一目标, 已由 49bf07e2 del alias 移除并替换为上述计数。原因是旧机制在删除属主时需 O(n) 遍历整张 GVA 表、 再跨表把 DVA/HVA 行重指向存活的别名,最坏路径随注册数增长;计数方案为 O(1)。同时判据里的 幂等重放比较改用 operator== 全字段比较(.h:205-209),补齐了原先缺失的 memType。 # 是否涉及UT/ST - [√] 是 - 新增/调整: - HybmVaManagerTest:ownership 断言、同地址重复注册与计数语义、QueryAddr/ClassifyAddressMask 语义(f035ed58 调整 295 行、54b15523 新增 121 行) - HybmEntityDefaultTest:FakeMemSegment(:104)承载导入索引,LocateAddrAndRank 导入命中/回退 语义(:843,索引在 :955/:957/:999 预置) - ConnBasedSegmentTest:FindRemoteRankByVa(:271)、IndexRemoteGva(:405/:412) - Asymmetric/Vmm/HostShm/DevLegacy/MemSegment 测试适配导入索引断言 - mockcpp 成员指针签名同步:删 allowAlias 形参后,hybm_dev_segment_test.cpp:823 与 hybm_host_shm_segment_test.cpp:587 的 AddVaInfo stub 签名由 (…, bool, bool) 改为 (…, bool) - 验证方式:本机无编译环境,**未编译、未跑 UT**;合入前需在有环境处跑 HybmVaManagerTest + HybmEntityDefaultTest + trans 场景回归。 # 开发自检 - [√] 规范:未超过1k;超过1k已完成备案;反合入需要标题注明【反合】 - [√] 规范:已关联issue或里程碑 - [√] 规范:不需要UT/ST且已说明理由;需要且已包含UT/ST - [√] 安全:涉及对外接口/参数/环境变量改动,并同步修改资料 - [√] 安全:未引入三方开源软件;引入三方开源软件并经过安全评审 - [√] 安全:未新增对外接口/参数;新增对外接口/参数有校验 - [√] 规范:未涉及资料改动;涉及资料改动并已完成修改 See merge request: Ascend/memfabric_hybrid!1270 | 29 天前 | |
[core] [feat] trans 支持 offload/bm 内存注册,va_manager 去 rank 化 Co-authored-by: littleyellowbicycle<liguo29@h-partners.com> Co-authored-by: littleyellowbicycle<1021593619@qq.com> # message auto-generated for no-merge-commit merge: !1270 merge support_rubin into master [core] [feat] trans 支持 offload/bm 内存注册,va_manager 去 rank 化 Created-by: littleyellowbicycle Commit-by: littleyellowbicycle Merged-by: chenyz6 Description: # 合入来源 - [√] 需求 - [ ] 问题单 - [√] issue # 问题/功能描述 ## 1. 需求 trans 场景需支持注册由 offload/bm 侧申请并持有的内存(典型:KV pool)。这类内存的持有方与注册方 往往不是同一实例,且同一块内存会被多实例(多连接)重复注册。据此要求: 1. va_manager 支持多个 segment 记录同一地址,以**计数**维护记录次数; 2. va_manager 不再记录 rank 信息,仅校验地址合法性; 3. gva 与 rank 的对应关系由 segment 维护。 ## 2. 原状差距 | 点 | 现状 | 差距 | |---|---|---| | 多实例注册同一地址 | VA 记录以 rank+地址做判重比较,跨 entity 注册同一 deviceVa 被判 overlap | bm/offload 内存无法被 trans 多连接重复注册 | | rank 语义 | VA 记录携带 localRankId/importedRankId,经 GetRankByGva 全局查询 | 多 store 组下 rank 归属有歧义:多实体下本地地址可能解析到他人 rank | | 地址分类 | 数据面方向决策依赖「本地/导入」布尔属性,与 rank 数值耦合在同一字段 | 概念混杂,无法按需求把 rank 下沉到 segment | 附带收益:sglang round-robin 场景(prefill 每请求轮流分发到不同 decode 实例,多连接并存、同一 KV pool 被多对端访问/注册)所依赖的「多实例同地址共存 + rank 域内解析」,在本重构下语义完备。 # 修改方案描述 ## 1. VA 管理器去 rank 化(纯地址注册表) - AllocatedGvaInfo/ReservedGvaInfo 删除 rank 字段,引入 AddressOwnership{Local, Imported} (hybm_va_manager.h:154);数据面方向决策 ClassifyAddressMask(hybm_va_manager.cpp:315-349) 只依赖归属布尔与 memType,与 rank 数值解耦。归属标记的产生点在 QueryAddr(.h:325)。 - 删除 GetRankByGva。接口收缩掉 rank 形参:AddVaInfoFromExternal(.h:272)、 AddVaInfo 两个重载(.h:275/:276)、AllocReserveGva(.h:294)、AllocReserveLva(.h:296)。 导入侧只打归属标记:AddVaInfoFromExternal 内构造 AllocatedGvaInfo(baseInfo, AddressOwnership::Imported)(.cpp:151)。 - 数据面 6 个分类调用点(hybm_data_op_entry.cpp:35/36/80/81/141/142)调用形式与语义均不变。 ## 2. segment 维护 gva↔rank - MemSegment 基类新增导入区 gva→rank 索引(hybm_mem_segment.h:148-177): IndexRemoteGva(登记,:151)、UnindexRemoteGva(注销,:157)、 FindRemoteRankByVa(按地址区间查询,:164)。底层 std::map + upper_bound ⇒ O(log n), 由 std::mutex remoteGvaRankMutex_ 互斥保护。 - 五类 segment 在「导入成功」与「远端切片删除」两处挂钩(下表为各自源文件内行号): | segment | 登记 IndexRemoteGva | 注销 UnindexRemoteGva | |---|---|---| | asymmetric | :667、:689 | :518 | | conn_based | :242 | :502 | | dev_legacy | :405 | :444 | | host_shm | :548 | :559 | | vmm | :634、:698 | :746 | - MemEntityDefault::LocateAddrAndRank 改为 **entity 域内解析**(hybm_entity_default.cpp:1147-1165): 先查本 entity 的 hbm/dram segment 导入索引,命中 → 对端 rank;未命中 → 本 options_.rankId。 顺带修掉多实体下「本地地址被解析成他人 rank」的隐患。 ## 3. 多实例同地址注册闭环 - **注册侧**:GVA 表按注册记录逐条登记(每连接身份独立);DVA/HVA 翻译表 first-wins —— 同一物理内存 只保留最早一份翻译,后注册的记录不覆盖(hybm_va_manager.cpp:80-98)。判重放行判据保持原语义: 「dva/hva/size/memType 全同且双方均为 Local」即视为同一物理内存的重放注册(.cpp:131-138), 原 allowAlias 开关已去掉(恒放行,不再需要显式开关)。 - **寿命侧**:新增 hvaRefCnt_(.h:358)按 HVA 计数。AddVaInfo 仅在「GVA 行新增」时递增, 幂等重放不重复计数(.cpp:82、:100-102);RemoveOneVaInfo(.cpp:167)经 ReleaseHvaRef(.cpp:208)递减,**计数归零才回收 DVA/HVA 行**(.cpp:184-203)。 - **传播侧**:lKey 与对端传播按连接独立。 - **机制演进(评审关注点)**:早期方案用 allowAlias 开关 + 属主晋升(PromoteAliasOwner)实现同一目标, 已由 49bf07e2 del alias 移除并替换为上述计数。原因是旧机制在删除属主时需 O(n) 遍历整张 GVA 表、 再跨表把 DVA/HVA 行重指向存活的别名,最坏路径随注册数增长;计数方案为 O(1)。同时判据里的 幂等重放比较改用 operator== 全字段比较(.h:205-209),补齐了原先缺失的 memType。 # 是否涉及UT/ST - [√] 是 - 新增/调整: - HybmVaManagerTest:ownership 断言、同地址重复注册与计数语义、QueryAddr/ClassifyAddressMask 语义(f035ed58 调整 295 行、54b15523 新增 121 行) - HybmEntityDefaultTest:FakeMemSegment(:104)承载导入索引,LocateAddrAndRank 导入命中/回退 语义(:843,索引在 :955/:957/:999 预置) - ConnBasedSegmentTest:FindRemoteRankByVa(:271)、IndexRemoteGva(:405/:412) - Asymmetric/Vmm/HostShm/DevLegacy/MemSegment 测试适配导入索引断言 - mockcpp 成员指针签名同步:删 allowAlias 形参后,hybm_dev_segment_test.cpp:823 与 hybm_host_shm_segment_test.cpp:587 的 AddVaInfo stub 签名由 (…, bool, bool) 改为 (…, bool) - 验证方式:本机无编译环境,**未编译、未跑 UT**;合入前需在有环境处跑 HybmVaManagerTest + HybmEntityDefaultTest + trans 场景回归。 # 开发自检 - [√] 规范:未超过1k;超过1k已完成备案;反合入需要标题注明【反合】 - [√] 规范:已关联issue或里程碑 - [√] 规范:不需要UT/ST且已说明理由;需要且已包含UT/ST - [√] 安全:涉及对外接口/参数/环境变量改动,并同步修改资料 - [√] 安全:未引入三方开源软件;引入三方开源软件并经过安全评审 - [√] 安全:未新增对外接口/参数;新增对外接口/参数有校验 - [√] 规范:未涉及资料改动;涉及资料改动并已完成修改 See merge request: Ascend/memfabric_hybrid!1270 | 29 天前 | |
[core] ci: pre-commit 全量格式化:clang-format/ruff,仅格式无逻辑变更 Co-authored-by: shilinlee<836160610@qq.com> # message auto-generated for no-merge-commit merge: !930 merge mf_format_pre_commit into develop [core] ci: pre-commit 全量格式化:clang-format/ruff,仅格式无逻辑变更 Created-by: shilinlee_com Commit-by: shilinlee Merged-by: yrewzjsx Description: # 合入来源 - [ ] 需求 - [ ] 问题单 - [x] issue # 问题/功能描述 仓库代码风格不统一(C++ 指针对齐、大括号位置、行宽;Python 引号、行宽、换行),且缺乏强制校验。需引入 pre-commit 全量格式化与 CI PR 检查,统一全仓风格基线。 # 修改方案描述 1. 配置 pre-commit 钩子(.pre-commit-config.yaml、.clang-format、pre-commit/pyproject.toml):trim trailing whitespace、fix end of files、check yaml/json、detect private key、ruff format(py310,行长 120)、codespell、clang-format v18.1.8(Google 基础,IndentWidth=4,ColumnLimit=120,Allman 大括号)。 2. 改造 script/ci-pre-commit-pr.sh,支持全量检查/格式化与按 PR 变更增量过滤两种模式。 5. 验证: pre-commit run --all-files 全部通过;95 个 Python 文件 AST 比对无语义差异;C++ 抽查(common_def.h、pytransfer.cpp 等)均为纯格式化。 # 是否涉及UT/ST - [ ] 是 - [x] 否(说明理由):纯格式化,不改变任何业务/测试逻辑,无需新增 UT/ST。 # 开发自检 - [x] 规范:未超过1k;超过1k已完成备案;反合入需要标题注明【反合】 - [x] 规范:已关联issue或里程碑 - [x] 规范:不需要UT/ST且已说明理由;需要且已包含UT/ST - [x] 安全:涉及对外接口/参数/环境变量改动,并同步修改资料 - [x] 安全:未引入三方开源软件;引入三方开源软件并经过安全评审 - [x] 安全:未新增对外接口/参数;新增对外接口/参数有校验 - [x] 规范:未涉及资料改动;涉及资料改动并已完成修改 See merge request: Ascend/memfabric_hybrid!930 | 3 个月前 | |
[core] ci: pre-commit 全量格式化:clang-format/ruff,仅格式无逻辑变更 Co-authored-by: shilinlee<836160610@qq.com> # message auto-generated for no-merge-commit merge: !930 merge mf_format_pre_commit into develop [core] ci: pre-commit 全量格式化:clang-format/ruff,仅格式无逻辑变更 Created-by: shilinlee_com Commit-by: shilinlee Merged-by: yrewzjsx Description: # 合入来源 - [ ] 需求 - [ ] 问题单 - [x] issue # 问题/功能描述 仓库代码风格不统一(C++ 指针对齐、大括号位置、行宽;Python 引号、行宽、换行),且缺乏强制校验。需引入 pre-commit 全量格式化与 CI PR 检查,统一全仓风格基线。 # 修改方案描述 1. 配置 pre-commit 钩子(.pre-commit-config.yaml、.clang-format、pre-commit/pyproject.toml):trim trailing whitespace、fix end of files、check yaml/json、detect private key、ruff format(py310,行长 120)、codespell、clang-format v18.1.8(Google 基础,IndentWidth=4,ColumnLimit=120,Allman 大括号)。 2. 改造 script/ci-pre-commit-pr.sh,支持全量检查/格式化与按 PR 变更增量过滤两种模式。 5. 验证: pre-commit run --all-files 全部通过;95 个 Python 文件 AST 比对无语义差异;C++ 抽查(common_def.h、pytransfer.cpp 等)均为纯格式化。 # 是否涉及UT/ST - [ ] 是 - [x] 否(说明理由):纯格式化,不改变任何业务/测试逻辑,无需新增 UT/ST。 # 开发自检 - [x] 规范:未超过1k;超过1k已完成备案;反合入需要标题注明【反合】 - [x] 规范:已关联issue或里程碑 - [x] 规范:不需要UT/ST且已说明理由;需要且已包含UT/ST - [x] 安全:涉及对外接口/参数/环境变量改动,并同步修改资料 - [x] 安全:未引入三方开源软件;引入三方开源软件并经过安全评审 - [x] 安全:未新增对外接口/参数;新增对外接口/参数有校验 - [x] 规范:未涉及资料改动;涉及资料改动并已完成修改 See merge request: Ascend/memfabric_hybrid!930 | 3 个月前 | |
[acc_offload] kernel 构建改用 cmake ascendc_library 替代手写 bisheng Co-authored-by: Moretti_Zaria<2821161247@qq.com> # message auto-generated for no-merge-commit merge: !1129 merge develop_0817 into develop [acc_offload] kernel 构建改用 cmake ascendc_library 替代手写 bisheng Created-by: Moretti_Zaria Commit-by: Moretti_Zaria Merged-by: yrewzjsx Description: # 合入来源 - [ ] 需求 - [ ] 问题单 - [x] issue # 问题/功能描述 acc_offload 的 sparse_copy kernel 在 script/run_pkg_maker/install.sh 用手写 bisheng -x asc 构建,codegen 不及 cmake ascendc_library,导致 H2D 带宽低。 # 修改方案描述 把 accoffload kernel 构建从 install.sh 手写 bisheng 改为 cmake ascendc_library # 自检验 A3  A5  # 性能提升 A3 手写 bisheng  A3 cmake 构建  A5 手写 bisheng  A5 cmake 构建  A3 性能从 13-14GB/s 提升至 18GB/s,A5 性能不变。 # 是否涉及UT/ST - [ ] 是 - [x] 否(仅更改构建方式,未涉及功能逻辑) # 开发自检 - [x] 规范:未超过1k;超过1k已完成备案;反合入需要标题注明【反合】 - [x] 规范:已关联issue或里程碑 - [x] 规范:不需要UT/ST且已说明理由;需要且已包含UT/ST - [ ] 安全:涉及对外接口/参数/环境变量改动,并同步修改资料 - [x] 安全:未引入三方开源软件;引入三方开源软件并经过安全评审 - [x] 安全:未新增对外接口/参数;新增对外接口/参数有校验 - [x] 规范:未涉及资料改动;涉及资料改动并已完成修改 See merge request: Ascend/memfabric_hybrid!1129 | 2 个月前 | |
support to specify mf 3rd-deps install path by CMAKE_INSTALL_PREFIX Co-authored-by: royliu<royliu.chengdu@gmail.com> # message auto-generated for no-merge-commit merge: !220 merge develop into develop support to specify mf 3rd-deps install path by CMAKE_INSTALL_PREFIX Created-by: gcw_M5Xrk6cX Commit-by: royliu Merged-by: liu1103xwxw Description: # Pull Request Template ## Description <!-- Provide a clear summary of the change, the problem it solves, and the technical approach. --> ## Related Issues <!-- Replace with actual issue numbers. Example: Closes #123, Related to #456 --> ## Type of Change - [ ] Bug fix - [ ] New feature - [ ] Performance optimization - [ ] Documentation update - [x] Other (please describe):_______________ ## Testing <!-- Describe how the changes were tested. Include: - Unit/integration test coverage - Manual validation steps - Links to CI reports (e.g., CIDA) if available - Note any pending tests --> ## Checklist - [x] I have performed a self-review of my own code. - [ ] I have updated the documentation. - [ ] I have added tests to prove my changes are effective. See merge request: Ascend/memfabric_hybrid!220 | 8 个月前 | |
新增gitleaks敏感信息检测 Co-authored-by: lanskeep<lichunyang17@h-partners.com> # message auto-generated for no-merge-commit merge: !953 merge gitleaks into develop 新增gitleaks敏感信息检测 Created-by: lanskeep Commit-by: lanskeep Merged-by: yrewzjsx Description: # 合入来源 - [ ] 需求 - [ ] 问题单 - [x] issue # 问题/功能描述 新增gitleaks敏感信息检测 # 修改方案描述 引入gitleaks在线扫描工具 新增pre-commit/.gitleaks.toml配置,继承官方全部检测规则 配置pre-commit钩子,提交前自动扫描密钥硬编码风险。 # 是否涉及UT/ST - [ ] 是 - [x] 否(说明理由) # 开发自检 - [x] 规范:未超过1k;超过1k已完成备案;反合入需要标题注明【反合】 - [x] 规范:已关联issue或里程碑 - [x] 规范:不需要UT/ST且已说明理由;需要且已包含UT/ST - [x] 安全:涉及对外接口/参数/环境变量改动,并同步修改资料 - [x] 安全:未引入三方开源软件;引入三方开源软件并经过安全评审 - [x] 安全:未新增对外接口/参数;新增对外接口/参数有校验 - [x] 规范:未涉及资料改动;涉及资料改动并已完成修改 See merge request: Ascend/memfabric_hybrid!953 | 3 个月前 | |
【ut】: 规避 run_ut.sh 被asan 中断的问题 Co-authored-by: littleyellowbicycle<liguo29@h-partners.com> # message auto-generated for no-merge-commit merge: !1121 merge fix_ut into develop 【ut】: 规避 run_ut.sh 被asan 中断的问题 Created-by: littleyellowbicycle Commit-by: littleyellowbicycle Merged-by: yrewzjsx Description: # 合入来源 - [ ] 需求 - [ ] 问题单 - [√] issue # 问题/功能描述 aarch64(含 Ubuntu 22.04)上 GCC ASAN 与 mockcpp 的 JmpCode 函数钩子机制冲突: detect_stack_use_after_return=1 时触发 stack-use-after-return 误报(ApiHookKey/Invocation 路径), =0 时函数入口栈插桩直接 SEGV,导致 run_ut.sh 默认 ASAN 构建在 aarch64 上无法跑完 UT。 同时 devcontainer(vllm-ascend 镜像)LD_PRELOAD 了 libjemalloc,与 ASAN 的 malloc 拦截器冲突, 加剧问题。此前仓库无任何相关文档,下个人会重新踩一遍。 # 修改方案描述 1. script/run_ut.sh:新增环境变量 MF_UT_BUILD_TYPE(默认 ASAN),覆盖 CMAKE_BUILD_TYPE; BUILD_FINGERPRINT 含该变量以在 fast 模式切换类型时触发全量重建。 aarch64 本地迭代用 MF_UT_BUILD_TYPE=DEBUG bash script/run_ut.sh,仍带 gcov 覆盖率门槛, sanitizer 闸门留给 CI(CI 默认 ASAN 不变)。 2. AGENTS.md:新增"已知问题(aarch64 / devcontainer)"小节(ASAN 不可用 / jemalloc 预加载 / AccLinksTest 端口 8100 冲突);修正 environment_variables.md 路径笔误 doc/ → docs/。 涉及文件:script/run_ut.sh、AGENTS.md、docs/environment_variables.md 不涉及产品代码、对外接口、运行时行为变更。 # 是否涉及UT/ST - [ ] 是 - [√] 否(说明理由) 本次只改 UT 脚本本身(让 UT 在 aarch64 上能跑)和文档,不改产品代码、不改对外接口/参数、 不改运行时行为,无需新增 UT/ST。 # 开发自检 - [√] 规范:未超过1k;超过1k已完成备案;反合入需要标题注明【反合】 - [ ] 规范:已关联issue或里程碑 - [√] 规范:不需要UT/ST且已说明理由;需要且已包含UT/ST - [√] 安全:涉及对外接口/参数/环境变量改动,并同步修改资料(MF_UT_BUILD_TYPE 已补入 docs/environment_variables.md) - [√] 安全:未引入三方开源软件;引入三方开源软件并经过安全评审 - [√] 安全:未新增对外接口/参数;新增对外接口/参数有校验(MF_UT_BUILD_TYPE 为构建期 UT 专用环境变量,非运行时对外接口,有默认值 ASAN) - [√] 规范:未涉及资料改动;涉及资料改动并已完成修改(AGENTS.md、docs/environment_variables.md)  See merge request: Ascend/memfabric_hybrid!1121 | 2 个月前 | |
[core] fix: use <etcd_ip> placeholder instead of 0.0.0.0 for security compliance;remove huawei url Co-authored-by: liuao<royliu.chengdu@gmail.com> # message auto-generated for no-merge-commit merge: !771 merge security into develop [core] fix: use <etcd_ip> placeholder instead of 0.0.0.0 for security compliance;remove huawei url Created-by: gcw_M5Xrk6cX Commit-by: liuao Merged-by: liu1103xwxw Description: # Pull Request Template ## Description <!-- Provide a clear summary of the change, the problem it solves, and the technical approach. --> ## Related Issues <!-- Replace with actual issue numbers. Example: Closes #123, Related to #456 --> ## Type of Change - [ ] Bug fix - [ ] New feature - [ ] Performance optimization - [ ] Documentation update - [x] Other (please describe):_______________ ## Testing <!-- Describe how the changes were tested. Include: - Unit/integration test coverage - Manual validation steps - Links to CI reports (e.g., CIDA) if available - Note any pending tests --> ## Checklist - [ ] I have performed a self-review of my own code. - [ ] I have updated the documentation. - [ ] I have added tests to prove my changes are effective. See merge request: Ascend/memfabric_hybrid!771 | 4 个月前 | |
[doc]新增版本说明书;将资料移至 docs/zh 目录下,并同步更新受影响文档;根据docs tool工具扫描结果刷新文档 Co-authored-by: whytao<weitao46@h-partners.com> # message auto-generated for no-merge-commit merge: !1183 merge develop into develop [doc]新增版本说明书;将资料移至 docs/zh 目录下,并同步更新受影响文档;根据docs tool工具扫描结果刷新文档 Created-by: whytao Commit-by: whytao Merged-by: yrewzjsx Description: # 合入来源 - [ ] 需求 - [ ] 问题单 - [x] issue fixed: [#416](https://atomgit.com/Ascend/memfabric_hybrid/issues/416) # 问题/功能描述 新增版本说明书; 将资料移至 docs/zh 目录下,并同步更新受影响文档; 根据docs tool工具扫描结果刷新文档,从而满足资料门禁需求 # 修改方案描述 # 是否涉及UT/ST - [ ] 是 - [ ] 否(说明理由) # 开发自检 - [ ] 规范:未超过1k;超过1k已完成备案;反合入需要标题注明【反合】 - [ ] 规范:已关联issue或里程碑 - [ ] 规范:不需要UT/ST且已说明理由;需要且已包含UT/ST - [ ] 安全:涉及对外接口/参数/环境变量改动,并同步修改资料 - [ ] 安全:未引入三方开源软件;引入三方开源软件并经过安全评审 - [ ] 安全:未新增对外接口/参数;新增对外接口/参数有校验 - [ ] 规范:未涉及资料改动;涉及资料改动并已完成修改 See merge request: Ascend/memfabric_hybrid!1183 | 1 个月前 | |
【反合】[core] 单卡场景,支持 dsa kvoffload 稀疏批量h2d/d2h算子 Co-authored-by: wlwen<wuliangwen@huawei.com> # message auto-generated for no-merge-commit merge: !993 merge develop into develop 【反合】[core] 单卡场景,支持 dsa kvoffload 稀疏批量h2d/d2h算子 Created-by: wlwen Commit-by: wlwen Merged-by: chenyz6 Description: # 合入来源 - [ ] 需求 - [ ] 问题单 - [x] issue # 问题/功能描述 单卡场景,支持 dsa kvoffload 稀疏批量h2d/d2h算子 # 修改方案描述 1、新增 acc_offload 模块用于kv offload场景及后续功能扩展。 2、acc_offload 基于 hybm 提供池化能力,完成host内存向device内存注册。 3、算子侧基于MTE分核完成h2d/d2h拷贝。 4、支持图模式。 # 是否涉及UT/ST  - [x] 是 - [ ] 否(说明理由) # 开发自检 - [x] 规范:未超过1k;超过1k已完成备案;反合入需要标题注明【反合】 - [ ] 规范:已关联issue或里程碑 - [ ] 规范:不需要UT/ST且已说明理由;需要且已包含UT/ST - [ ] 安全:涉及对外接口/参数/环境变量改动,并同步修改资料 - [ ] 安全:未引入三方开源软件;引入三方开源软件并经过安全评审 - [ ] 安全:未新增对外接口/参数;新增对外接口/参数有校验 - [ ] 规范:未涉及资料改动;涉及资料改动并已完成修改 See merge request: Ascend/memfabric_hybrid!993 | 2 个月前 | |
[core] ci: pre-commit 全量格式化:clang-format/ruff,仅格式无逻辑变更 Co-authored-by: shilinlee<836160610@qq.com> # message auto-generated for no-merge-commit merge: !930 merge mf_format_pre_commit into develop [core] ci: pre-commit 全量格式化:clang-format/ruff,仅格式无逻辑变更 Created-by: shilinlee_com Commit-by: shilinlee Merged-by: yrewzjsx Description: # 合入来源 - [ ] 需求 - [ ] 问题单 - [x] issue # 问题/功能描述 仓库代码风格不统一(C++ 指针对齐、大括号位置、行宽;Python 引号、行宽、换行),且缺乏强制校验。需引入 pre-commit 全量格式化与 CI PR 检查,统一全仓风格基线。 # 修改方案描述 1. 配置 pre-commit 钩子(.pre-commit-config.yaml、.clang-format、pre-commit/pyproject.toml):trim trailing whitespace、fix end of files、check yaml/json、detect private key、ruff format(py310,行长 120)、codespell、clang-format v18.1.8(Google 基础,IndentWidth=4,ColumnLimit=120,Allman 大括号)。 2. 改造 script/ci-pre-commit-pr.sh,支持全量检查/格式化与按 PR 变更增量过滤两种模式。 5. 验证: pre-commit run --all-files 全部通过;95 个 Python 文件 AST 比对无语义差异;C++ 抽查(common_def.h、pytransfer.cpp 等)均为纯格式化。 # 是否涉及UT/ST - [ ] 是 - [x] 否(说明理由):纯格式化,不改变任何业务/测试逻辑,无需新增 UT/ST。 # 开发自检 - [x] 规范:未超过1k;超过1k已完成备案;反合入需要标题注明【反合】 - [x] 规范:已关联issue或里程碑 - [x] 规范:不需要UT/ST且已说明理由;需要且已包含UT/ST - [x] 安全:涉及对外接口/参数/环境变量改动,并同步修改资料 - [x] 安全:未引入三方开源软件;引入三方开源软件并经过安全评审 - [x] 安全:未新增对外接口/参数;新增对外接口/参数有校验 - [x] 规范:未涉及资料改动;涉及资料改动并已完成修改 See merge request: Ascend/memfabric_hybrid!930 | 3 个月前 | |
[doc]新增版本说明书;将资料移至 docs/zh 目录下,并同步更新受影响文档;根据docs tool工具扫描结果刷新文档 Co-authored-by: whytao<weitao46@h-partners.com> # message auto-generated for no-merge-commit merge: !1183 merge develop into develop [doc]新增版本说明书;将资料移至 docs/zh 目录下,并同步更新受影响文档;根据docs tool工具扫描结果刷新文档 Created-by: whytao Commit-by: whytao Merged-by: yrewzjsx Description: # 合入来源 - [ ] 需求 - [ ] 问题单 - [x] issue fixed: [#416](https://atomgit.com/Ascend/memfabric_hybrid/issues/416) # 问题/功能描述 新增版本说明书; 将资料移至 docs/zh 目录下,并同步更新受影响文档; 根据docs tool工具扫描结果刷新文档,从而满足资料门禁需求 # 修改方案描述 # 是否涉及UT/ST - [ ] 是 - [ ] 否(说明理由) # 开发自检 - [ ] 规范:未超过1k;超过1k已完成备案;反合入需要标题注明【反合】 - [ ] 规范:已关联issue或里程碑 - [ ] 规范:不需要UT/ST且已说明理由;需要且已包含UT/ST - [ ] 安全:涉及对外接口/参数/环境变量改动,并同步修改资料 - [ ] 安全:未引入三方开源软件;引入三方开源软件并经过安全评审 - [ ] 安全:未新增对外接口/参数;新增对外接口/参数有校验 - [ ] 规范:未涉及资料改动;涉及资料改动并已完成修改 See merge request: Ascend/memfabric_hybrid!1183 | 1 个月前 | |
rebase误覆盖fix 、部分bug fix、冗余接口移除、更新版本到1.3 Co-authored-by: liuao<royliu.chengdu@gmail.com> # message auto-generated for no-merge-commit merge: !1094 merge develop into develop rebase误覆盖fix 、部分bug fix、冗余接口移除、更新版本到1.3 Created-by: gcw_M5Xrk6cX Commit-by: royliu;liuao Merged-by: yrewzjsx Description: # 合入来源 - [ ] 需求 - [ ] 问题单 - [x] issue # 问题/功能描述 # 修改方案描述 # 是否涉及UT/ST - [ ] 是 - [x] 否(说明理由) # 开发自检 - [x] 规范:未超过1k;超过1k已完成备案;反合入需要标题注明【反合】 - [x] 规范:已关联issue或里程碑 - [x] 规范:不需要UT/ST且已说明理由;需要且已包含UT/ST - [x] 安全:涉及对外接口/参数/环境变量改动,并同步修改资料 - [x] 安全:未引入三方开源软件;引入三方开源软件并经过安全评审 - [x] 安全:未新增对外接口/参数;新增对外接口/参数有校验 - [x] 规范:未涉及资料改动;涉及资料改动并已完成修改 See merge request: Ascend/memfabric_hybrid!1094 | 2 个月前 | |
[core] ci: pre-commit 全量格式化:clang-format/ruff,仅格式无逻辑变更 Co-authored-by: shilinlee<836160610@qq.com> # message auto-generated for no-merge-commit merge: !930 merge mf_format_pre_commit into develop [core] ci: pre-commit 全量格式化:clang-format/ruff,仅格式无逻辑变更 Created-by: shilinlee_com Commit-by: shilinlee Merged-by: yrewzjsx Description: # 合入来源 - [ ] 需求 - [ ] 问题单 - [x] issue # 问题/功能描述 仓库代码风格不统一(C++ 指针对齐、大括号位置、行宽;Python 引号、行宽、换行),且缺乏强制校验。需引入 pre-commit 全量格式化与 CI PR 检查,统一全仓风格基线。 # 修改方案描述 1. 配置 pre-commit 钩子(.pre-commit-config.yaml、.clang-format、pre-commit/pyproject.toml):trim trailing whitespace、fix end of files、check yaml/json、detect private key、ruff format(py310,行长 120)、codespell、clang-format v18.1.8(Google 基础,IndentWidth=4,ColumnLimit=120,Allman 大括号)。 2. 改造 script/ci-pre-commit-pr.sh,支持全量检查/格式化与按 PR 变更增量过滤两种模式。 5. 验证: pre-commit run --all-files 全部通过;95 个 Python 文件 AST 比对无语义差异;C++ 抽查(common_def.h、pytransfer.cpp 等)均为纯格式化。 # 是否涉及UT/ST - [ ] 是 - [x] 否(说明理由):纯格式化,不改变任何业务/测试逻辑,无需新增 UT/ST。 # 开发自检 - [x] 规范:未超过1k;超过1k已完成备案;反合入需要标题注明【反合】 - [x] 规范:已关联issue或里程碑 - [x] 规范:不需要UT/ST且已说明理由;需要且已包含UT/ST - [x] 安全:涉及对外接口/参数/环境变量改动,并同步修改资料 - [x] 安全:未引入三方开源软件;引入三方开源软件并经过安全评审 - [x] 安全:未新增对外接口/参数;新增对外接口/参数有校验 - [x] 规范:未涉及资料改动;涉及资料改动并已完成修改 See merge request: Ascend/memfabric_hybrid!930 | 3 个月前 |
![]()
DRAM&HBM hybrid pooling, memory semantic interface, high-performance cross-machine memory direct access
🔄Latest News
-
[2026/01] DRAM池化相关配套已发布支持,详见软件硬件配套
-
[2025/12] MemFabric + MemCache已作为vllm-ascend backend使能大模型推理加速,详情查看vllm-ascend开源社区,使用示例
-
[2025/11] MemFabric项目于2025年11月开源,在昇腾上提供高效的多链路的D2RH,RH2D,RH2H,D2D,D2H,H2D等内存直接访问能力。
🔜 Roadmap
MemFabric roadmap和版本分支策略详见:Roadmap
🎉概述
MemFabric是一款开源内存池化软件,面向昇腾超节点和服务器等,其设计目的与核心思想是:
- 异构设备的统一池化: 将多节点的异构设备内存(DRAM|HBM等)池化, 提供高性能的全局内存"直接访问"的能力
- 简单的北向接口: 提供内存语义访问接口, 即xcopy with global virtual address, 向传统的memcpy概念靠近, 支持D2RH\RH2D\RH2H\D2D等
- 南向高可扩展: 通过插件的方式支持多种DMA引擎和LD/ST及多种网络/灵衢互联(Device UB、Device RoCE、Host UB、Host RoCE等)

如上图所示, MemFabric主要分为四大模块: Global Memory Management、Data Operation、Transport Management、API
- Global Memory Management: 实现全局统一内存地址(Global Virtual Address, GVA)的统一编排、页表映射策略制定及通过驱动将映射策略注入页表
- Data Operation: xcopy的实现,驱动xDMA、LD/ST实现全局内存直接读写
- Transport Management: 链接管理; xcopy驱动Host RDMA、Device RDMA、UDMA时,需要建立QP、Jetty链接,xcopy使用SDMA、MTE、LD/ST时不需要Transport Management
- API: 统一且简单的API及其实现, 包括BM API、SHM API、Trans API,三种API适用于不同的场景
其中, Global Memory Management、Data Operation、Transport Management都实现了逻辑的抽象, 可以轻松扩展实现不同硬件的对接。当前已支持的南向包括:
- 昇腾A3超节点: DRAM+HBM pooling over Device UB 1.0, DRAM pooling over Host RoCE
- 昇腾A2服务器: DRAM+HBM pooling over Device RoCE, DRAM pooling over Host RoCE
- 鲲鹏服务器: DRAM pooling over Host RoCE
- 鲲鹏超节点: DRAM pooling over Host UB
MemFabric以动态库的形式支持应用快速,简便的集成,支撑大模型KV缓存、生成式推荐缓存、强化训练参数Reshard、模型参数缓存、PD传输等多种业务场景。
🧩核心特性
- 池化与全局统一编址
MemFabric通过构建逻辑上的全局内存语义统一编址,对分布在不同层级、不同节点的内存单元进行统一管理与使用,使系统能够像管理单一物理资源一样,对跨CPU、NPU的内存资源进行统一寻址和透明访问,核心目的是实现内存资源的整合与统一调度,最大程度的释放硬件性能。 GVA的特点:
- 它是一个简单的uint64
- 所有进程的GVA的起始地址一致
- 所有进程的GVA按线性排布且一致

-
跨机跨介质直接访问
基于MemFabric内存语义统一编址,数据可以在跨节点的多级存储间实现透明、直接访问。
典型跨节点跨介质的访问路径有:
- D2RH:本机HBM到跨机DRAM
- RH2D:跨机DRAM到本机HBM
- RH2H:跨机DRAM到本机DRAM
Note: D为Device, RH为Remote Host
MemFabric跨机访问数据流和控制流如下图所示(昇腾A3超节点):

当前MemFabric池化的硬件支持情况如下:
- 昇腾A3超节点:Device UB 1.0,Host rdma
- 昇腾A2服务器:Device rdma,Host rdma
- 鲲鹏服务器: Host rdma
| 池化类型 | 访问方向 | host rdma | device rdma | Device UB 1.0 |
|---|---|---|---|---|
| DRAM POOL | LD2GH | ✅ | ✅ | ✅ |
| DRAM POOL | GH2LD | ✅ | ✅ | ✅ |
| DRAM POOL | LH2GH | ✅ | ✅ | ✅ |
| DRAM POOL | GH2LH | ✅ | ✅ | ✅ |
| HBM POOL | GD2LH | ❌ | ✅ | ✅ |
| HBM POOL | LH2GD | ❌ | ✅ | ✅ |
| HBM POOL | GD2LD | ❌ | ✅ | ✅ |
| HBM POOL | LD2GD | ❌ | ✅ | ✅ |
| HBM + DRAM POOL | GH2GD | ❌ | ✅ | ✅ |
| HBM + DRAM POOL | GD2GH | ❌ | ✅ | ✅ |
| HBM + DRAM POOL | GH2GH | ❌ | ✅ | ✅ |
| HBM + DRAM POOL | GD2GD | ❌ | ✅ | ✅ |
说明
- L为Local,D为Device,G为Global,H为Host
- GH:代表一块DRAM内存,其属于DRAM内存池空间,可能在本地,也可能在远端其他节点
- GD:代表一块HBM显存,其属于HBM内存池空间,可能在本地,可能在远端其他节点
- LH:代表一块DRAM内存,其不属于任何内存池空间,其位置在当前进程
- LD:代表一块HBM显存,其不属于任何内存池空间,其位置在当前进程
🔥性能表现
时延测试
- 使用2个昇腾A3节点组成双机内存池,将MemFabric对接到MoonCake Transfer Engine(MoonCake是业界开源的一款的分布式缓存软件, memfabric对接mooncake代码)进行读写时延测试,模拟构造DeepSeek-R1模型KV大小的block size,即:61x128K + 61x16K = 8784KB ≈ 8.57MB,共122个离散地址,性能表现如下:

带宽测试(单DIE+单CPU)
- 在昇腾A3超节点跨机数据访问性能(DRAM and HBM pooling over UB 1.0)如下:
| 数据传输方向 | 单次数据大小(GB) | 带宽(GB/s) |
|---|---|---|
| RH2D | 1 | 110.23 |
| RH2D | 2 | 110.19 |
| D2RH | 1 | 74.54 |
| D2RH | 2 | 74.54 |
| RD2D | 1 | 166.47 |
| RD2D | 2 | 166.47 |
| D2RD | 1 | 138.01 |
| D2RD | 2 | 138.01 |
说明
和昇腾官方带宽测试工具ascend-dmi一样,A3超节点测试采用的通信带宽的统计方式,1 GB/s = 1000 * 1000 * 1000 B/s。
- 在昇腾A2服务器跨机数据访问性能(DRAM and HBM pooling over Device RoCE)如下:

👆 性能测试参考 benchmark
🔍目录结构
├── LICENSE # LICENSE
├── .clang-format # 格式化配置
├── .gitmodules # 三方库git配置
├── .gitignore # git忽视文件
├── CMakeLists.txt # 项目的CMakeList
├── doc # 文档目录
├── examples # 样例
│ ├── memory_pool # 内存池化样例(含基础/扩展/优化/特性/可观测性)
│ ├── transfer # 传输样例(含batch data write/read)
│ └── hbm_share_memory # HBM共享内存样例(AllReduce/ShiftPutGet/RDMADemo)
├── script # 构建脚本
│ ├── build_and_pack_run.sh # 编译+打包脚本
│ ├── build.sh # 编译脚本
│ ├── run_ut.sh # 编译+运行ut脚本(详见 [script/run_ut.md](script/run_ut.md))
├── test # test目录
│ ├── 3rdparty # 三方库
│ ├── certs # 证书生成脚本
│ ├── python # python测试用例
│ └── ut # 单元测试用例
├── src # 源码
│ ├── acc_links # 内部通信层 (用于进程间控制命令的通信, 基于Host TCP实现)
│ └── hybm # 内存管理与内存访问层 (Global Memory Management、Data Operation、Transport Management)
│ └── smem # 语义与接口层 (big memory + transfer + share memory等语义与接口实现)
│ └── util # 公共函数
├── README.md
🚀快速入门
请访问以下文档获取简易教程。
-
编译安装:介绍组件编译和安装教程。
-
DevContainer 快速入门:VS Code Remote + DevContainer 一键环境搭建 + 全量用例运行指南。
-
样例执行:介绍如何端到端执行样例代码,包括C++和Python样例。
📑学习教程
-
API介绍:MemFabric提供的多种API的简介
-
C接口:C接口介绍以及C接口对应的API列表
-
python接口:python接口介绍以及python接口对应的API列表
-
ptracer:MemFabric内置性能打点工具简介
📦软件硬件配套说明
-
硬件型号支持
- Atlas 200T A2 Box16
- Atlas 800I A2/A3 系列产品
- Atlas 800T A2/A3 系列产品
- Atlas 900 A3 SuperPoD
-
平台:aarch64/x86
-
配套软件:CANN 8.1.RC1及之后版本
-
cmake >= 3.19
-
GLIBC >= 2.28
-
Ascend HDK配套驱动(npu-driver)、固件(npu-firmware)依赖(使用不同介质所需最低版本不同):
特性 HDK最低版本需求 HDK推荐版本 HBM池化 24.1.RC2 24.1.RC2 DRAM池化 25.5.0 25.5.1 -
LingQu Computing Network: 1.5.0版本,A3 DRAM池化需要配套升级1520 L1,升级指导书如下:
📌FAQ
常见问题请参考:FAQ
📝相关信息
说明
此开源项目非华为产品,仅提供有限支持。