| fix: 修复多 group reuse 资源判等
Co-authored-by: zhang_shengjie<804425610@qq.com>
# message auto-generated for no-merge-commit merge:
!627 merge fix_group_reuse_resource_equivalence into develop
fix: 修复多 group reuse 资源判等
Created-by: zhang_shengjie
Commit-by: zhang_shengjie
Merged-by: cann-robot
Description: ## 描述
### 一、主要解决的问题
修复 ATT 多 group reuse 时仅比较 MemAttr 导致的资源误复用问题。
在 concat 融合等多 group 场景中,不同 group 的 VectorFunc 输出可能存在 que.id 顺序差异,例如 group0 为 y0.que=2, y1.que=1,group1 为 y0.que=1, y1.que=2。当前等价图识别只比较 alloc_type/position/hardware/reuse_id,会将物理 queue/buffer 资源不同的 tensor 误判为可复用,进而导致 q1/q2 语义顺序不一致。
### 二、修改方案
在 EquivalentGraphRecognizer::IsMemEquivalent 中保守增强资源属性判等:
- Queue 类型除 MemAttr 外,额外比较 que.id、que.depth、que.buf_num
- Buffer 类型除 MemAttr 外,额外比较 buf.id
- Global 等其他类型保持原有 MemAttr 判等
该方案不引入资源重映射,只在无法确认物理资源一致时阻止多 group reuse。
## 变更类型
- [x] Bug 修复
- [ ] 新功能
- [ ] 代码风格更新
- [ ] 重构
- [ ] 构建过程或辅助工具的变动
- [ ] 文档内容更新
## 关联的Issue
#87
## 如何测试
### 一、测试用例说明
新增 UT 覆盖以下资源属性不一致场景:
- IsMemEquivalentQueueIdNotEqual
- IsMemEquivalentQueueDepthNotEqual
- IsMemEquivalentQueueBufNumNotEqual
- IsMemEquivalentBufferIdNotEqual
### 二、验证命令
```bash
cmake --build build --target att_ut -j 8
./build/autofuse/tests/ut/att/att_ut --gtest_filter='EquivalentGraphRecongnizerUnitTest.IsMemEquivalentQueueIdNotEqual:EquivalentGraphRecongnizerUnitTest.IsMemEquivalentQueueDepthNotEqual:EquivalentGraphRecongnizerUnitTest.IsMemEquivalentQueueBufNumNotEqual:EquivalentGraphRecongnizerUnitTest.IsMemEquivalentBufferIdNotEqual'
./build/autofuse/tests/ut/att/att_ut --gtest_filter='EquivalentGraphRecongnizerUnitTest.*'
```
验证结果:
- 新增 4 个资源属性用例通过
- EquivalentGraphRecongnizerUnitTest.* 共 30 个用例通过
## 核对清单
- [x] 代码遵循项目代码风格
- [x] 已完成自测
- [x] 已补充对应 UT
- [x] 标题使用合适类型标签
## 其他信息
### 提交记录
| Commit | 描述 | 修改文件数 |
|--------|------|----------|
| 37d383d | fix: tighten reuse group resource equivalence | 2 |
### 修改文件清单
| 文件路径 | 修改类型 | 说明 |
|---------|---------|------|
| autofuse/att/gen_model_info/reuse_group_utils/equivalent_graph_recognizer.cpp | 修改 | 增强 queue/buffer 资源属性判等 |
| autofuse/tests/ut/att/testcase/gen_model_info/reuse_group_utils/test_equivalent_graph_recongnizer.cpp | 修改 | 新增资源属性不一致 UT |
See merge request: cann/graph-autofusion!627 | 22 小时前 |