| D&C Fix Communication Engine Index
Co-authored-by: gitcode_lijd<lijiandong20@huawei.com>
# message auto-generated for no-merge-commit merge:
!5261 merge fix_2 into master
D&C Fix Communication Engine Index
Created-by: gitcode_lijd
Commit-by: gitcode_lijd
Merged-by: cann-robot
Description: ## 描述
<!--在这里详细描述你的改动,包括改动的原因和所采取的方法。-->
## 关联的Issue
https://gitcode.com/cann/ops-transformer/issues/2385
<!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000-->
<!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。-->
## 测试
<!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。-->
**检视文件**:mc2_tiling_utils.h
**修改内容**:修改 A5_CCU_ENGINE 常量值(5 → 0)
**规范来源**:cpp-secure.md、cpp-general.md
---
## 修改内容说明
### 本次修改的目的
将 A5 芯片的通信引擎配置从 CCU_MS(值5)改为默认值(值0)。
### 原方案
**常量定义**:
```cpp
constexpr uint8_t A5_CCU_ENGINE = 5; // CCU_MS引擎类型
```
**注释说明**:
```cpp
/**
当前通信API未提供枚举,后续会提供
0:默认值 1:HOST_TS(A2/3支持 A5不支持)2:AICPU_TS(A2/3支持 A5不支持)
3:AIV 4:AIV_ONLY(A2/3支持 A5不支持) 5:CCU_MS(A2/3支持 A5不支持)
6:CCU_SCHED(A2/3支持 A5不支持) 7:AICPU_UB/ROCE(A5不支持)
**/
```
### 新方案
**修改点**:
```cpp
constexpr uint8_t A5_CCU_ENGINE = 0; // 改为COMM_ALG_DEFAULT
```
**使用场景**(arch35目录下两个算子):
- moe_distribute_dispatch_v2_tiling_arch35.cpp:845
- moe_distribute_combine_tiling_arch35.cpp:679
```cpp
mc2CcTilingConfig.SetCommEngine(mc2tiling::A5_CCU_ENGINE);
```
---
## 问题列表
| 序号 | 级别 | 问题描述 | 行号 | 规范条款 |
|-----|------|---------|-----|---------|
| 1 | 中 | 常量命名与实际值语义不符 | 10,23 | 规范4.2 |
| 2 | 低 | 缺少修改说明和原因 | 全文件 | 规范1.3 |
---
## 问题详情
### 1. 常量命名与实际值语义不符 [中风险]
**假设检验过程**:
- **H0**:修改后常量语义清晰,不影响理解
- **H1**:常量名称与值不匹配,可能导致误解
- **自信值初始化**:0%
**证据收集**:
1. **规范违反** (+40%):
- 规范 4.2(cpp-general.md):禁止使用魔鬼数字/字符串,常量命名应体现语义
- 原定义:A5_CCU_ENGINE = 5,名称明确表示"CCU引擎",值5对应注释中的"CCU_MS"
- 新定义:A5_CCU_ENGINE = 0,名称仍为"CCU引擎",但值0是"默认值"(COMM_ALG_DEFAULT)
- 命名与值语义不符:A5_CCU_ENGINE 暗示CCU引擎,但值0是默认值
2. **上下文防御缺失** (+30%):
- 未修改注释说明,注释仍显示"5:CCU_MS"
- 新值为0,但注释中0的含义是"默认值",不是CCU引擎
3. **数据流追踪风险** (+25%):
- 使用场景在arch35目录(A5芯片相关),调用 SetCommEngine(A5_CCU_ENGINE)
- 如果A5不支持CCU_MS(值5),改为默认值(值0)是合理的
- 但常量名称应改为 A5_DEFAULT_ENGINE 或类似命名
**自信值**:95%(超过60%,判定为中风险)
**风险代码**:
```cpp
// 5159.diff 第10、23行
-constexpr uint8_t A5_CCU_ENGINE = 5;
+constexpr uint8_t A5_CCU_ENGINE = 0;
```
**建议修复方案**:
**方案A**:修改常量名称以匹配语义
```cpp
// 如果A5不支持CCU,使用默认引擎
constexpr uint8_t A5_DEFAULT_ENGINE = 0; // 或 A5_COMM_DEFAULT
```
**方案B**:保留名称,但更新注释说明
```cpp
/**
当前通信API未提供枚举,后续会提供
0:默认值(A5使用) 1:HOST_TS(A2/3支持) 2:AICPU_TS(A2/3支持)
3:AIV 4:AIV_ONLY(A2/3支持) 5:CCU_MS(A2/3支持,A5不支持)
6:CCU_SCHED(A2/3支持) 7:AICPU_UB/ROCE(A5不支持)
**/
constexpr uint8_t A5_CCU_ENGINE = 0; // A5使用默认引擎,不支持CCU
```
---
### 2. 缺少修改说明和原因 [低风险]
**假设检验过程**:
- **H0**:修改有明确的设计意图
- **H1**:修改原因未说明,影响可维护性
- **自信值初始化**:0%
**证据收集**:
1. **规范违反** (+40%):
- 规范 1.3(cpp-general.md):删除无效、冗余或永不执行的代码需说明原因
- 修改常量值属于重要配置变更,应说明修改原因
2. **上下文防御缺失** (+30%):
- diff 中仅修改值,无commit message或注释说明原因
- 从注释"CCU_MS(A2/3支持 A5不支持)"推断:可能因A5不支持CCU而改为默认值
3. **数据流追踪风险** (+25%):
- 修改影响通信引擎配置,可能影响性能和功能
- 应说明:为何A5不能用CCU_MS、改为0后的影响
**自信值**:95%(超过60%,判定为低风险)
**建议修复方案**:
- 在commit message中说明:"A5芯片不支持CCU_MS引擎,改为使用默认通信引擎配置"
- 或在代码注释中补充说明
---
## 总结
**修改合理性分析**:
- 从注释"A5不支持CCU_MS"推断,修改可能合理(A5不支持值5,改用默认值0)
- 但存在命名和语义不符问题
**建议**:
1. 修改常量名称为 A5_DEFAULT_ENGINE 或更新注释说明语义变更
2. 补充修改原因说明,提高可维护性
---
See merge request: cann/ops-transformer!5261 | 20 天前 |