| 【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 天前 |
| Initial commit
| 5 个月前 |
| fix ACL_MDL_RESERVED
| 6 天前 |
| 【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 天前 |
| Initial commit
| 5 个月前 |
| Initial commit
| 5 个月前 |
| 【Refactor】:opdef解耦
Co-authored-by: 我乌拉乌拉了<huxiujuan@huawei.com>
# message auto-generated for no-merge-commit merge:
!2308 merge f/opdef_dev2 into develop
【Refactor】:opdef解耦
Created-by: huxj153
Commit-by: 我乌拉乌拉了
Merged-by: cann-robot
Description:
# Pull Request
## 描述
opdef解耦,具体修改如下:
1. 将opdef的实现从ge里删除,跳转到metadef提供的对外接口获取具体的opdef实现
2. opdef相关头文件不再由ge打入cann包
## 变更类型
请选择本次引入的变更类型:
<!-- [x] 表示选中 -->
- [ ] 🐛 Bug 修复
- [ ] ✨ 新功能
- [ ] 💄 代码风格更新(格式化,局部变量)
- [x] ♻️ 重构(既不修复错误也不增加功能的代码变动)
- [ ] 📦 构建过程或辅助工具的变动
- [ ] 📝 文档内容更新
## 关联的Issue
<!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 -->
## 如何测试
描述测试此变更的步骤和前提条件:
1.
2.
## 核对清单
<!-- [x] 表示选中 -->
- [x] 我的代码遵循了项目的代码风格
- [x] 我已对代码进行了自测
- [x] 我已更新了相关的文档
- [x] 我在标题中使用了合适的类型标签(如:feat:, fix:)
- [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等
## 其他信息
在此添加任何其他关于本次 PR 的说明。
See merge request: cann/ge!2308 | 1 个月前 |
| 【PR】:ge一月份需求合入(包含整改dflow ST、自定义算子执行Context等)
Co-authored-by: jikai-tyler<jikai5@huawei.com>
# message auto-generated for no-merge-commit merge:
!223 merge master into master
【PR】:ge一月份需求合入(包含整改dflow ST、自定义算子执行Context等)
Created-by: jikai-tyler
Commit-by: jikai-tyler
Merged-by: cann-robot
Description:
# Pull Request
## 描述
ge一月份需求合入:
1、llt测试用例相关重复stub文件清理
2、Triton入图parser解析dlopen的handle关闭
- Triton入图parser解析dlopen的handle关闭
- 补充tensorflow 中其他的入参类型
- 优化parser 解析的的代码
3、UserGraphsManager suppport gert::Tensor
- UserGraphsManager及JitExecutor等RunGraphAsync入参由ge::Tensor改为gert::Tensor
- 老的兼容接口Session::RunGraph/RunGraphAsync在ge_api.cc 将ge::Tensor转换为gert::Tensor,然后调用InnerSession的接口。
4、整改dflow ST中的HELPER_RES_FILE_PATH
- HELPER_RES_FILE_PATH配置文件已经废弃,需要删除并整改用例使用RESOURCE_CONFIG_PATH。
- rtGetIsHeterogenous接口已经废弃,需要删除并整改用例使用RESOURCE_CONFIG_PATH环境变量。
5、注册ge错误码
- 从error_code.json文件中拆分出GE错误码,通过ErrorManager模块的对外接口REG_FORMAT_ERROR_MSG宏完成GE错误码的注册
6、使能acl目录覆盖率拦截项
7、triton入图parser解析优化
8、告警规则处理
9、refactor parser/common/tuple.h
10、fix UserGraphControl SetCompiledFlag/SetCompiledFlag
11、修复Sample问题
- Include stdint and stddef for base mdl
- move CheckRunGraphMode to ge_api_v2.cc
12、自定义算子执行Context
13、fix AllRealInputsAreTheSameOutAnchor error log issue
- 在Session::AddGraph时会造一个UserGraphControl实例。因此在UserGraphControl中增加compiled_flag
14、bugfix:handling excessively long name
- 避免因字符串过长导致二进制匹配耗尽资源而coredump,裁剪name,只保留最开始的128字符
15、acl code check告警处理
16、modify 3rd compile para
17、修改自定义ES_API Sample问题 && README.md
18、Refined inner session to no longer retrieve GraphNode or GraphOptions via graph_id from graph_manager.
19、ES关键类PIMPL实现 && 修改命名空间
- EsCGraphBuilder, CompliantNodeBuilder, EsCTensorHolder改为PIMPL实现
- 修改AddEdgeAndUpdatePeerDesc和CompliantNodeBuilder命名空间至ge::es
20、手动实现log功能, 实现debug_print函数来定位
## 变更类型
请选择本次引入的变更类型:
<!-- [x] 表示选中 -->
- [ ] 🐛 Bug 修复
- [x] ✨ 新功能
- [ ] 💄 代码风格更新(格式化,局部变量)
- [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动)
- [ ] 📦 构建过程或辅助工具的变动
- [ ] 📝 文档内容更新
## 关联的Issue
<!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 -->
## 如何测试
描述测试此变更的步骤和前提条件:
1.存量用例执行
2.告警规则检测
## 核对清单
<!-- [x] 表示选中 -->
- [x] 我的代码遵循了项目的代码风格
- [x] 我已对代码进行了自测
- [x] 我已更新了相关的文档
- [x] 我在标题中使用了合适的类型标签(如:feat:, fix:)
- [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等
## 其他信息
在此添加任何其他关于本次 PR 的说明。
See merge request: cann/ge!223 | 3 个月前 |