| feat: 支持 IndirectLoad Load-Transpose 布局并完善 SIMD/SIMT codegen Co-authored-by: xiebangrui2025<xiebangrui@huawei.com> # message auto-generated for no-merge-commit merge: !2029 merge IL into develop feat: 支持 IndirectLoad Load-Transpose 布局并完善 SIMD/SIMT codegen Created-by: xiebangrui2025 Commit-by: xiebangrui2025 Merged-by: cann-robot Description: # Pull Request ## 描述 本 PR 完整支持 IndirectLoad 输入侧 Load-Transpose 布局,并统一、简化 SIMD/SIMT lowering 与 codegen。主要变更如下: - 在 IndirectLoad 调度生成中识别输入和索引链上的 Load-Transpose,按 Transpose 输出轴顺序映射 Load 物理 stride,并保留共享数据边与控制边边界。 - 将 IndirectLoad 逻辑视图、访问分析、SIMD/SIMT 策略和 lowering metadata 收敛到公共分析层,减少 codegen 重复推导。 - 简化 SIMD/SIMT API 调用生成和地址策略,统一 SIMT 多输出、后融合与 GM/UB 输出处理。 - 协同 Transpose、NDDMA 和 un-alignment 流程,避免 IndirectLoad 图重复处理 Transpose 或错误修改向量化布局。 - 修复 Broadcast 物理视图分析中的 dtype/axis 属性污染,并支持 SIMT 直接 GM Load 的非零 IR offset。 - 补充 Load-Transpose、Broadcast、embedding slice、SIMT 输出与边界场景 E2E,并同步线上线下 IL E2E 清单。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [x] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [x] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue 无。 ## 如何测试 描述测试此变更的步骤和前提条件: 1. 使用 CANN 9.2 环境执行 cmake --build build --target codegen -j 8,增量编译通过。 2. 构建并实际运行 indirect_load_graph_hint_embedding_slice_e2e_v2、indirect_load_both_transpose_simd_fallback_test_e2e_v2、indirect_load_both_transpose_simd_nddma_test_e2e_v2 和 indirect_load_both_transpose_simt_test_e2e_v2,4/4 通过。 3. 使用 clang-format 18.1.8 检查 PR 范围内全部 C++ 变更文件,--dry-run --Werror 通过;git diff --check 通过。 4. 对比 CMake/build 注册目标与 scripts/test/run_autofuse_test.sh 线上执行列表:双方均为 86 个 IL E2E,双向差集为空。 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已确认本次无对外接口变化,无需更新用户文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 本 PR 包含 4 个连续 commit: 1. 7d147dec:支持 IndirectLoad Load-Transpose 布局及相关调度协同。 2. 41adeac4:统一 lowering metadata,简化 SIMD/SIMT codegen 与地址策略。 3. 778a7824:统一 SIMT 输出处理并补充 IL ST。 4. 5a1b71fb:修复 dtype/axis/offset 回归并补充 embedding slice E2E。 源分支为 xiebangrui2025:IL,目标分支为 cann:develop。 See merge request: cann/graph-autofusion!2029 | 9 天前 |