| feat: 扩展TensorMove消除场景(特殊源节点 + 多TM消费 + 读写/排布冲突检查)
Co-authored-by: stevenaw0<huangguijun@huawei.com>
# message auto-generated for no-merge-commit merge:
!2908 merge tm_delete_optimize2 into develop
feat: 扩展TensorMove消除场景(特殊源节点 + 多TM消费 + 读写/排布冲突检查)
Created-by: stevenaw0
Commit-by: stevenaw0
Merged-by: cann-robot
Description: # Pull Request
## 描述
扩展现有 TensorMoveDeletePass,新增两种 TensorMove 消除场景:
1. **场景一**:variable/const 等特殊源节点下的 TensorMove,当后继不覆写源内存时允许消除
2. **场景二**:源节点输出被多个 TensorMove 消费时,将兄弟 TM 视为只读消费者,允许逐 TM 决策消除
同时新增两道安全关卡:
- **Rule 4 (读写冲突检查)**:调用 mem_rw_conflict_optimize 新增接口,删除 TM 前判断是否导致读写冲突
- **Rule 5 (内存排布冲突检查)**:调用 mem_layout_conflict_util 新增接口,删除 TM 前判断是否导致内存排布冲突
## 变更类型
- [ ] 🐛 Bug 修复
- [x] ✨ 新功能
- [ ] 💄 代码风格更新
- [ ] ♻️ 重构
- [ ] 📦 构建过程或辅助工具的变动
- [ ] 📝 文档内容更新
## 关联的Issue
无
## 修改文件
| 文件 | 改动 |
|------|------|
| compiler/graph/optimize/mem_rw_conflict_optimize.h | 新建 |
| compiler/graph/optimize/mem_rw_conflict_optimize.cc | +41行 |
| compiler/graph/optimize/mem_layout_conflict_optimize/mem_layout_conflict_util.h | +4行 |
| compiler/graph/optimize/mem_layout_conflict_optimize/mem_layout_conflict_util.cc | +132行 |
| compiler/graph/manager/graph_manager.cc | +2行 |
| compiler/graph/passes/standard_optimize/tensor_move_delete_pass.cc | +93/-4行 |
| tests/ge/ut/ge/graph/passes/tensor_move_delete_pass_unittest.cc | +151行 |
## 核对清单
- [x] 我的代码遵循了项目的代码风格
- [x] 我已对代码进行了自测
- [x] 我已更新了相关的文档
- [x] 我在标题中使用了合适的类型标签
- [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md)
## 其他信息
详细设计文档见 docs/superpowers/specs/2026-05-15-tensormove-optimize2-design.md
See merge request: cann/ge!2908 | 8 天前 |