文件最后提交记录最后更新时间
修改setBuffFlag同步问题,以及setBuffFlag与checkBuffFlag同步问题 Co-authored-by: gcw_xe6QyzGC<gcw_xe6QyzGC@noreply.gitcode.com> # message auto-generated for no-merge-commit merge: !5556 merge yuhuangqi_AllGatherMM into master 修改setBuffFlag同步问题,以及setBuffFlag与checkBuffFlag同步问题 Created-by: gcw_xe6QyzGC Commit-by: gcw_xe6QyzGC Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 1、all2allmatmul、matmulall2all、allgathermatmulv2、matmulreducescatterv2四个算子都使用了SetBuffFlag函数,经检视,发现同步问题,补充MTE3_S信号 2、修复allgathermatmulv2中setBuffFlag与checkBuffFlag之间的冲突问题 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-transformer/issues/2127 https://gitcode.com/cann/ops-transformer/issues/2384 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!555613 天前
fix error offset in alltoallmm. Co-authored-by: qq_43844249<fanglin17@huawei.com> # message auto-generated for no-merge-commit merge: !6131 merge fix-bug-alltoallmm into master fix error offset in alltoallmm. Created-by: qq_43844249 Commit-by: qq_43844249 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> # 代码检视报告 ## 检视概要 | 统计项 | 数值 | | ------ | ---- | | **分支名称** | fix-bug-alltoallmm | | **提交哈希** | c6adcb86feb3a585f7ec0090cc1ded7f85d2f197 | | **提交信息** | fix error offset. | | **变更文件** | 1 个 | | **变更行数** | 1 行(+1, -1) | | **检视条款** | 17 条(TOPK 5 条 + CPP-SECURE 12 条) | | **发现问题** | 0 个(变更部分通过检视) | | **潜在风险** | 2 个(需人工确认) | **核心结论**:本次提交修复了 ProcessTail 函数中 x1ScaleOffset 计算错误,从使用 tileM 改为使用 tailM,修复逻辑正确。代码整体符合安全编码规范,TOPK 问题清单中未发现明显违规。 --- ## TOPK 问题清单检视结果 ### TOPK-3: 生命周期内使用局部变量指针,避免野指针 [适用: All] **检视结果**:✅ 通过 **分析**:代码中无局部变量指针返回问题,所有指针均在作用域内有效使用。 --- ### TOPK-6: 必须考虑nan/inf/+0/-0等特殊值和边界值处理 [适用: All] **检视结果**:✅ 通过 **分析**:本次变更代码主要为地址偏移计算(整数乘法),不涉及浮点运算或特殊值处理场景。 --- ### TOPK-8: gm内存偏移或大小必须用int64表示 [适用: All] **检视结果**:✅ 通过 **分析**:变更代码(第 269 行)使用 uint64_t 进行偏移计算: ```cpp pipeLineContext_.computationContext->additionalData.x1ScaleOffset = static_cast<uint64_t>(mc2Tiling_.tailM) * tempScaleKBytes; ``` 符合规范要求,防止大地址空间溢出。 --- ### TOPK-10: 可整数计算时不允许转浮点数计算 [适用: All] **检视结果**:✅ 通过 **分析**:代码中全部使用整数类型进行偏移计算,无不必要的浮点转换。 --- ### TOPK-12: 宏定义中临时变量命名不能和外部变量冲突 [适用: All] **检视结果**:✅ 通过 **分析**:代码中无宏定义,不存在此风险。 --- ## C++ 安全编码规范检视结果 ### CPP-SECURE-2.1: 有符号整数运算不溢出 [适用: All] **检视结果**:✅ 通过 **分析**:代码中使用 uint64_t 进行乘法运算(第 235-236 行、第 255-256 行),防止溢出: ```cpp uint64_t tailMMultiRankK = static_cast<uint64_t>(mc2Tiling_.tailM) * rankForComm_; uint64_t tileCntMultitileMMultiRankK = static_cast<uint64_t>(mc2Tiling_.tileCnt) * static_cast<uint64_t>(mc2Tiling_.tileM) * rankForComm_; ``` --- ### CPP-SECURE-2.3: 除法/余数运算除零保护 [适用: All] **检视结果**:✅ 通过 **分析**:CeilDiv 函数(第 21-27 行)有除零保护: ```cpp template <typename T1, typename T2> __aicore__ inline T1 CeilDiv(T1 a, T2 b) { if (b == 0) { return 0; } return (a + b - 1) / b; } ``` --- ### CPP-SECURE-3.5: 指针使用前判空 [适用: All] **检视结果**:✅ 通过 **分析**:Process 函数(第 114-122 行)有指针判空保护: ```cpp if (pipeLine_ == nullptr || tilingData_ == nullptr) { return; } if (mc2Tiling_.rankDim == 0) { return; } ``` --- ### 其他条款检视结果 | 规范编号 | 规范名称 | 检视结果 | 说明 | | -------- | -------- | -------- | ---- | | 1.1 | 保证静态类型安全 | ✅ 通过 | 使用正确的类型转换 | | 1.2 | 保证内存安全 | ✅ 通过 | 无内存越界访问 | | 1.3 | 禁止使用未定义行为 | ✅ 通过 | 无 UB 操作 | | 2.2 | 无符号整数运算不回绕 | ✅ 通过 | 使用 uint64_t 防止回绕 | | 3.1 | 禁止使用未初始化的变量 | ✅ 通过 | 成员变量在 Init 中初始化 | | 3.3 | 数组索引校验 | ✅ 通过 | 无数组索引访问 | | 4.1 | 外部输入合法性校验 | ✅ 通过 | TilingData 已校验 | | 4.2 | 内存操作长度校验 | ✅ 通过 | 偏移量计算安全 | | 10.10 | 敏感信息使用后清零 | ✅ 通过 | 无敏感信息处理 | --- ## 变更代码正确性分析 ### 变更内容 **修改前**: ```cpp pipeLineContext_.computationContext->additionalData.x1ScaleOffset = static_cast<uint64_t>(mc2Tiling_.tileM) * tempScaleKBytes; ``` **修改后**: ```cpp pipeLineContext_.computationContext->additionalData.x1ScaleOffset = static_cast<uint64_t>(mc2Tiling_.tailM) * tempScaleKBytes; ``` ### 修复逻辑分析 **ProcessTile 函数(主块处理)**:使用 tileM 计算 x1ScaleOffset(第 217-223 行) **ProcessTail 函数(尾块处理)**:应使用 tailM 计算 x1ScaleOffset **修复原因**: - tileM 表示主块的 M 维度大小 - tailM 表示尾块的 M 维度大小 - ProcessTail 处理尾块,应使用尾块的参数计算偏移 **修复正确性**:✅ 修复逻辑正确 --- ## 潜在风险提示(需人工确认) ### 风险1:x1Scale 起始地址计算一致性 **位置**:第 266-267 行 ```cpp pipeLineContext_.computationContext->additionalData.x1Scale = transX1ScaleGM1_ + mc2Tiling_.tileCnt * mc2Tiling_.tileM * tempScaleKBytes; ``` **风险描述**: 此处使用 tileCnt * tileM 计算 x1Scale 的起始偏移(表示所有主块的总大小),而 x1ScaleOffset 使用 tailM(表示尾块的大小)。需确认: 1. transX1ScaleGM1_ 的数据布局是否为主块数据连续排列,尾块数据紧随其后? 2. 如果尾块数据布局与主块不同,x1Scale 的起始地址计算是否需要调整? **严重级别**:Suggestion(建议) **建议**:人工确认 transX1ScaleGM1_ 的内存布局设计,确保 ProcessTail 的地址计算与实际数据布局一致。 --- ### 风险2:cGM 输出地址计算一致性 **位置**:第 261 行 ```cpp pipeLineContext_.computationContext->baseData.cGM = y_ + static_cast<uint64_t>(mc2Tiling_.tileCnt) * mc2Tiling_.tileM * mc2Tiling_.rankN * sizeof(DTYPE_Y); ``` **风险描述**: 此处使用 tileCnt * tileM 计算输出矩阵 Y 的起始偏移,需确认: 1. 输出矩阵 Y 的布局是否为主块数据在前,尾块数据在后? 2. 与 x1Scale 的地址计算是否保持一致的布局逻辑? **严重级别**:Suggestion(建议) **建议**:人工确认 Y 矩阵的内存布局,确保 ProcessTail 的地址计算正确。 --- ## 总结与建议 ### 整体评价 本次提交是一个正确的 bug 修复,解决了 ProcessTail 函数中 x1ScaleOffset 计算使用错误参数(tileM 应为 tailM)的问题。代码整体符合 TOPK 问题清单和 C++ 安全编码规范,未发现严重安全风险。 ### 改进建议 1. **代码审查建议**: - 人工确认 transX1ScaleGM1_ 和 Y 矩阵的内存布局设计,确保 ProcessTail 的所有地址计算与实际数据布局一致 - 建议在代码注释中说明数据布局设计,提高可维护性 2. **后续测试建议**: - 增加边界值测试用例(如 tailM 较小、tileCnt 较大等场景) - 验证修复后的算子输出精度和功能正确性 ### 核间同步说明 根据用户提供的信息,调用的 process 代码已经保证了同步,不需要添加 AscendC::SyncAll() 等同步机制。因此 TOPK-11(通信算子融合需核间同步)不适用本次检视。 --- **报告生成时间**:2026-05-30 **报告状态**:已完成检视,建议人工确认潜在风险 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!61313 天前