| feat: 支持 IndirectLoad SIMD 多实现并修复精度问题 Co-authored-by: xiebangrui<xiebangrui@huawei.com> # message auto-generated for no-merge-commit merge: !1660 merge IL into develop feat: 支持 IndirectLoad SIMD 多实现并修复精度问题 Created-by: xiebangrui2025 Commit-by: xiebangrui Merged-by: cann-robot Description: ## 描述 支持 IndirectLoad SIMD 的 MicroAPI 和 GatherApi 多实现生成及运行时选择,并修复索引加载、流水同步和 UB 内存管理问题: 1. 增加 GatherApi 实现及 implementation 属性传递,根据模板和实现类型选择运行时候选,保留 MicroAPI 实现。 2. 修复 int32 索引跨 repeat 复用加载状态导致的偏移精度问题,同时保持 int64 连续加载路径。 3. 完善 SIMD offset 构造后的 PIPE_V 依赖、queue/临时缓冲区分配,以及 direct-GM SIMT 路径的生命周期处理。 4. 扩展 full-prefix、direct-index、混合前后融合、后融合 Reduce 和多数据类型场景,并收敛 CI 中的 IndirectLoad 验证集合。 ## 变更类型 - [x] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [x] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue 无。 ## 如何测试 1. IndirectLoad optimize UT:34/34 通过;codegen UT:8/8 通过。 2. IndirectLoad codegen ST:18/18 通过;模拟器 E2E:18/18 通过。 3. 对17个提交文件执行限定范围 pre-commit 和 OAT 检查,全部通过。 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 本次变更不涉及对外接口文档更新 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 - PR 已整理为单个提交:f5681160。 - PR 源分支为 xiebangrui2025:IL,目标分支为 cann:develop。 See merge request: cann/graph-autofusion!1660 | 27 天前 |