| Initial commit
| 5 个月前 |
| 【feat】:自定义算子入图支持地址刷新
Co-authored-by: yuht9<yuhaitao6@huawei.com>
# message auto-generated for no-merge-commit merge:
!3270 merge develop into develop
【feat】:自定义算子入图支持地址刷新
Created-by: yuht9
Commit-by: yuht9
Merged-by: cann-robot
Description:
# Pull Request
## 描述
新增接口与数据结构:
- ArgsHandler: args 内存管理抽象接口(VA 分配 + H2D 拷贝)
- KernelArgs: kernel launch arguments 结构体,含 placement 信息
- UpdateArgsContext: 地址刷新上下文,继承自 EagerOpExecutionContext
- ArgsUpdater: 自定义算子地址刷新能力接口,算子继承后框架在 I/O 地址变化时回调 UpdateHostArgs
- SinkOpArgsHandler: SinkOp 场景下 ArgsHandler 实现,委托 CustomTaskInfo 完成分配
- ArgsAllocationResult: 分配结果描述,含 reserved/extra 来源信息
- TaskInfo 新增 NeedReserveArgsTable/UpdateHostArgs/GetArgsAllocationResults 虚接口
CustomTaskInfo 扩展:
- 支持 ArgsUpdater 算子检测(IsAddressRefreshable)及地址刷新策略
- MallocReadOnlyDevArgsImpl 双路径分配:reserved 段(支持刷新)/ 动态内存(H2D 直拷)
- UpdateHostArgs 实现 I/O 地址更新及算子回调
- InitArgsIoAddrsUpdater 初始化地址映射关系
ModelArgsManager 扩展:
- 三级内存分配:reserved segment -> existing extra pool -> new extra pool
- IntegrateCustomOpArgs 将自定义算子 args 集成到统一刷新流程
- IntegrateReservedH2DCopyDatas/IntegrateExtraH2DCopyDatas 注册 H2D 刷新数据
- IntegrateReservedUpdateDatas/IntegrateExtraUpdateDatas 注册 host args 刷新数据
- UpdateCustomOpHostArgs/RefreshExtraH2DCopyDatas 执行阶段触发刷新
- custom_op_policies_to_task_infos_ 使用 unordered_set 保证去重
编译器适配:
- block_mem_assigner: 自定义算子支持零拷贝(IsAddressRefreshable 动态判断)
- mem_layout_conflict_util: 自定义算子支持地址刷新
CustomOpFactory 扩展:
- IsAddressRefreshable: 通过 dynamic_cast 判断算子是否支持地址刷新
UT/ST 用例:
- SinkOpArgsHandler/CustomTaskInfo/ModelArgsManager/ArgsIoAddrsUpdater/UpdateArgsContext/DavinciModel 单元测试
- 自定义算子地址刷新端到端 ST 用例及 CustomTaskInfo 地址刷新模式验证
- reserved+extra 去重验证、多个 ArgsUpdater 并发刷新测试
## 变更类型
请选择本次引入的变更类型:
<!-- [x] 表示选中 -->
- [ ] 🐛 Bug 修复
- [x] ✨ 新功能
- [ ] 💄 代码风格更新(格式化,局部变量)
- [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动)
- [ ] 📦 构建过程或辅助工具的变动
- [ ] 📝 文档内容更新
## 关联的Issue
<!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 -->
## 如何测试
描述测试此变更的步骤和前提条件:
1.构造自定算子连接模型边界场景,算子实现UpdateHostArgs函数,模型执行精度正确。
## 核对清单
<!-- [x] 表示选中 -->
- [x] 我的代码遵循了项目的代码风格
- [x] 我已对代码进行了自测
- [x] 我已更新了相关的文档
- [x] 我在标题中使用了合适的类型标签(如:feat:, fix:)
- [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等
## 其他信息
20260423评审通过
See merge request: cann/ge!3270 | 1 天前 |