文件最后提交记录最后更新时间
revert:对mc2的tilingKey进行宏编译处理 Co-authored-by: hblnb<huangbolin3@huawei.com> # message auto-generated for no-merge-commit merge: !5025 merge revert-mr-4332-1778221340412-auto into master revert:对mc2的tilingKey进行宏编译处理 Created-by: hblnb Commit-by: hblnb Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!502521 天前
all_gather_matmul算子UT重构 Co-authored-by: hblnb<huangbolin3@huawei.com> # message auto-generated for no-merge-commit merge: !1900 merge update_agm_ut_input into master all_gather_matmul算子UT重构 Created-by: hblnb Commit-by: hblnb Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-transformer!190022 天前
优化AllGatherMatmulV2算子量化场景workspace大小 Co-authored-by: zhu-mingzhe71<zhumingzhe2@huawei.com> # message auto-generated for no-merge-commit merge: !4362 merge optimize_workspace into master 优化AllGatherMatmulV2算子量化场景workspace大小 Created-by: zhu-mingzhe71 Commit-by: zhu-mingzhe71 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> AllGatherMatmulV2算子在量化场景时,会申请M * N * ranksize * sizeof(int32)大小的workspace空间用于存放mmad的中间结果,占用显存过大,影响模型使用,希望能过切片pingpong的方式来减小workspace空间。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-transformer/issues/2283 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [x] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!436220 天前
修改mc2目录下的arch32为arch22 Co-authored-by: hblnb<huangbolin3@huawei.com> # message auto-generated for no-merge-commit merge: !4314 merge change_A2A3_arch into master 修改mc2目录下的arch32为arch22 Created-by: hblnb Commit-by: hblnb Merged-by: cann-robot Description: ## 描述 修改mc2目录下的arch32为arch22 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!43141 个月前
fix-ccusmoke Co-authored-by: qq_43844249<fanglin17@huawei.com> # message auto-generated for no-merge-commit merge: !5138 merge fix-ccusmoke into master fix-ccusmoke Created-by: qq_43844249 Commit-by: qq_43844249 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> # 代码检视报告 **项目名称**:ops-transformer MC2算子通信引擎修复检视报告 **检视模块**:6个Tiling文件(allto_all/matmul_allto_all系列) **检视人**:Ascend C Code Review Agent **检视日期**:2026-05-11 **检视模式**:PR检视(提交 a8bddade8) **代码侧别**:Tiling侧(Host侧) --- ## 🔍 检视概览 | 统计项 | 数值 | | ---- | ---- | | 检视条款总数 | 8 条 | | 通过条款 | 7 条 | | 需关注条款 | 1 条 | | 发现问题总数 | 0 个(无严重级违规) | | 需关注建议 | 1 个(建议添加注释) | | 检视置信度分布 | HIGH: 0个 / MED: 1个 / LOW: 2个 | **核心结论**:本次修改的技术合理性正确,代码安全性合规,无严重级违规问题。存在1处中等置信度的可读性改进建议(建议添加注释说明修改原因),2处低置信度的类型安全和常量语义提醒(属代码规范建议,非强制整改项)。 **修改概述**: - 修改内容:将 mc2tiling::A5_CCU_ENGINE (值为5) 改为硬编码数字 0 - 修改范围:6个文件,每个文件仅修改1行 - 技术背景:根据 mc2_tiling_utils.h 注释,5 对应 CCU_MS引擎,仅在 A2/3架构支持,A5不支持;改为默认值 0 可解决 CCU Smoke 测试问题 --- ## 📊 检视条款执行详情 | 条款编号 | 条款名称 | 适用范围 | 检视结果 | 置信度 | 备注 | |---------|---------|---------|---------|--------|------| | CLAUSE-1 | 总体原则-静态类型安全(1.1) | All | ✅ PASS | LOW | 存在隐式类型转换(int→uint8_t),但值在范围内 | | CLAUSE-2 | 总体原则-内存安全(1.2) | All | ✅ PASS | - | 不涉及内存操作 | | CLAUSE-3 | 总体原则-禁止未定义行为(1.3) | All | ✅ PASS | - | 合法C++行为 | | CLAUSE-4 | 接口变更兼容性(10.12) | All | ⚠️ 需关注 | MED | 建议添加注释说明修改原因 | | CLAUSE-5 | 返回值校验(TOPK-1) | Host | ✅ PASS | - | 已有 isSuccess() 检查 | | CLAUSE-6 | 外部输入校验(TOPK-7) | Host | ✅ PASS | - | 不引入新的外部输入 | | CLAUSE-7 | 常量单一职责(4.3) | All | ✅ PASS | LOW | 建议添加注释说明语义 | | CLAUSE-8 | 禁止未初始化变量(5.5) | All | ✅ PASS | - | 不涉及变量声明 | --- ## ⚠️ 需关注建议详情 ### 建议 ID:SUGGESTION-001 | 严重级别:MEDIUM(建议) #### 🔬 假设检验过程 **代码段**:SetHcclTiling() 函数中的 withCommEngine(0) 调用 **假设**:H0: 修改不影响代码可读性和可维护性 | 证据序号 | 证据类型 | 规范ID | 证据描述 | 分值增量 | 累计自信值 | |---------|---------|--------|---------|---------|-----------| | 1 | 规范违反(轻) | cpp-secure.md 10.12 | 接口参数值变更未添加注释说明 | +40% | 40% | | 2 | 可读性降低 | - | 硬编码数字 0 缺乏语义说明 | +30% | 70% | **结论**:自信值 **70%** > 60%,**推翻原假设H0**,建议添加注释提升可维护性。 --- **关联规范条款**:cpp-secure.md 10.12(接口变更兼容性) **代码路径**:6个文件的 SetHcclTiling() 函数 - mc2/allto_all_matmul/op_host/op_tiling/arch35/allto_all_fp_matmul_tiling_base.cpp:192 - mc2/allto_all_matmul/op_host/op_tiling/arch35/allto_all_kc_quant_matmul_tiling_base.cpp:236 - mc2/allto_all_matmul/op_host/op_tiling/arch35/allto_all_mx_quant_matmul_tiling_base.cpp:493 - mc2/matmul_allto_all/op_host/op_tiling/arch35/fp_matmul_allto_all_tiling_base.cpp:177 - mc2/matmul_allto_all/op_host/op_tiling/arch35/kc_quant_matmul_allto_all_tiling_base.cpp:148 - mc2/matmul_allto_all/op_host/op_tiling/arch35/mx_quant_matmul_allto_all_tiling_base.cpp:608 **问题类型**:代码可读性建议 **问题描述**:修改将语义明确的常量 mc2tiling::A5_CCU_ENGINE 改为硬编码数字 0,降低了代码的可读性和可维护性。后续维护者需要查阅注释才能理解 0 的含义(默认通信引擎),增加了理解成本。虽用户明确排除魔鬼数字规范检查,但从工程实践角度,建议添加注释说明修改原因和技术背景。 --- #### 修改建议 **修改前代码**: ```cpp // reducetype接口附带的数据类型优先于调用通信接口传入的数据类型,因此这里需要设置 AscendC::Mc2CcTilingConfig allToAllTilingConfig = allToAllBuilder.withCommEngine(0) .withReduceType(opName_, AscendC::HcclReduceOp::HCCL_REDUCE_SUM, contextInfo_.args_.geAType, contextInfo_.args_.geAType) .build(); ``` **修改后代码**: ```cpp // reducetype接口附带的数据类型优先于调用通信接口传入的数据类型,因此这里需要设置 // 【CCU Smoke Fix】A5架构不支持CCU_MS引擎(值为5),改用默认引擎(值为0) // 参考:mc2_tiling_utils.h注释:"5:CCU_MS(A2/3支持 A5不支持)" AscendC::Mc2CcTilingConfig allToAllTilingConfig = allToAllBuilder.withCommEngine(0) // 默认通信引擎,适配A5架构 .withReduceType(opName_, AscendC::HcclReduceOp::HCCL_REDUCE_SUM, contextInfo_.args_.geAType, contextInfo_.args_.geAType) .build(); ``` **修改说明**:添加注释说明修改原因和技术背景,提升代码可维护性。注释包含: 1. 修改原因:解决 A5 架构 CCU Smoke 测试问题 2. 技术背景:引用 mc2_tiling_utils.h 注释,说明 5 在 A5 不支持 3. 语义说明:标注 0 表示默认通信引擎 --- ## ✅ 通过条款补充说明 ### CLAUSE-1:静态类型安全(置信度 LOW) **分析**:修改将 int 类型字面量 0 传递给可能期望 uint8_t 的 API(根据常量定义推断),存在隐式类型转换。但: - C++ 允许 intuint8_t 的隐式转换(缩窄转换) - 值 0uint8_t 表示范围内(0-255) - 无类型溢出风险 **建议**:类型转换风险较低,但建议添加注释说明类型兼容性。 --- ### CLAUSE-7:常量单一职责(置信度 LOW) **分析**:硬编码数字 0 的语义明确(根据注释"0:默认值"),保持单一职责(表示默认通信引擎)。但可读性有所降低,建议添加注释辅助理解。 --- ## 🔧 技术合理性验证 ### 修改背景分析 根据 mc2_tiling_utils.h 第 51-56 行注释: ```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不支持) **/ ``` **技术合理性**: - mc2tiling::A5_CCU_ENGINE = 5 对应 CCU_MS,注释明确标注"**A5不支持**" - 改为默认值 0 是合理的修复方案 - 其他算子(moe_distribute 系列)仍使用 A5_CCU_ENGINE,可能需要后续修复 ### 功能影响评估 **正面影响**: - 解决 A5 架构 CCU Smoke 测试失败问题 - 使用默认通信引擎,适配 A5 硬件限制 **潜在风险**: - 默认引擎 0 在 A5 上的性能是否与预期一致?建议验证性能 - 其他算子(moe_distribute)是否需要相同修复?建议统一处理 --- ## 📝 整改建议汇总 | 建议编号 | 建议类型 | 严重级别 | 建议内容 | 优先级 | |---------|---------|---------|---------|--------| | SUGGESTION-001 | 可读性改进 | MEDIUM | 添加注释说明修改原因和技术背景 | P2(建议执行) | | SUGGESTION-002 | 代码一致性 | LOW | 检查 moe_distribute 系列算子是否需要相同修复 | P3(可选) | | SUGGESTION-003 | 性能验证 | LOW | 验证默认引擎 0 在 A5 架构上的性能表现 | P3(可选) | --- ## ✅ 检视结论 **合规性评估**: - ✅ C++安全编码规范:8条条款全部通过(无严重级违规) - ✅ TOPK问题清单:相关条款全部通过 - ⚠️ 代码可读性:建议添加注释(非强制整改项) **技术合理性评估**: - ✅ 修改背景清晰:A5架构不支持CCU_MS引擎(值为5) - ✅ 修复方案合理:改为默认值(0) - ⚠️ 需验证性能和一致性 **整改建议**: 1. **建议执行**:添加注释说明修改原因(6个文件统一修改) 2. **可选执行**:检查 moe_distribute 系列算子是否需要相同修复 3. **可选执行**:验证默认引擎在 A5 上的性能表现 **最终结论**:本次修改**技术合理性正确,安全性合规**,建议添加注释提升可维护性,无需强制整改。 --- ## 📄 报告生成信息 **报告生成时间**:2026-05-11 **报告状态**:已完成检视,建议整改(非强制) **检视覆盖率**:8/8 条款(100%覆盖) **检视方法**:假设检验驱动 + 证据链追溯 --- ## 附录:修改文件列表 | 序号 | 文件路径 | 修改行 | 修改内容 | |-----|---------|--------|---------| | 1 | mc2/allto_all_matmul/op_host/op_tiling/arch35/allto_all_fp_matmul_tiling_base.cpp | 192 | mc2tiling::A5_CCU_ENGINE0 | | 2 | mc2/allto_all_matmul/op_host/op_tiling/arch35/allto_all_kc_quant_matmul_tiling_base.cpp | 236 | mc2tiling::A5_CCU_ENGINE0 | | 3 | mc2/allto_all_matmul/op_host/op_tiling/arch35/allto_all_mx_quant_matmul_tiling_base.cpp | 493 | mc2tiling::A5_CCU_ENGINE0 | | 4 | mc2/matmul_allto_all/op_host/op_tiling/arch35/fp_matmul_allto_all_tiling_base.cpp | 177 | mc2tiling::A5_CCU_ENGINE0 | | 5 | mc2/matmul_allto_all/op_host/op_tiling/arch35/kc_quant_matmul_allto_all_tiling_base.cpp | 148 | mc2tiling::A5_CCU_ENGINE0 | | 6 | mc2/matmul_allto_all/op_host/op_tiling/arch35/mx_quant_matmul_allto_all_tiling_base.cpp | 608 | mc2tiling::A5_CCU_ENGINE0 | ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!513818 天前
[AICPU] 算子根据环境变量选择commMode通信引擎 Co-authored-by: libohao6<libohao3@huawei.com> # message auto-generated for no-merge-commit merge: !4961 merge aicpu_only into master [AICPU] 算子根据环境变量选择commMode通信引擎 Created-by: libohao6 Commit-by: libohao6 Merged-by: cann-robot Description: ## 描述 [AICPU] 算子根据环境变量选择commMode通信引擎 #4961 ## 关联的Issue [Requirement|需求建议]: [AICPU] 算子根据环境变量选择commMode通信引擎 #4961 #2354 ## 测试 level0测试。 ## 文档更新 不涉及。 ## 类型标签 <!-- [x] 表示选中 --> - [.] 🐛 Bug 修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: # MC2代码检视报告 - MR#4961 ## 基本信息 | 项目 | 内容 | |------|------| | MR编号 | #4961 | | 分支 | aicpu_only | | Commit | c3c02630a | | 检视时间 | 2026-05-11 | | 检视人 | AI Code Reviewer | ## 修改概述 支持ENV_MC2_COMM_MODE_AICPU环境变量切换CCU/AICPU通信模式: 1. 新增Mc2Comm::GetCommModeFromEnv()统一环境变量读取入口(header-only) 2. 全层级环境变量判断: aclnn + gen_task + tiling + kernel 3. gen_task结合平台判断(A5→CCU, 非A5→AICPU) + 环境变量覆盖 4. Kernel层HcclTypeSelector模板选择HCCL服务器类型 5. tilingKey删除D_T_MM和TILINGKEY_MM维度,模板实例数减少67% ## 检视范围 - mc2/common/utils/mc2_comm_utils.h - mc2/allto_allv_quant_grouped_mat_mul/op_kernel/mc2_templates/communication/hccl_a2av_op.h - mc2/allto_allv_grouped_mat_mul/op_kernel/allto_allv_grouped_mat_mul_coarse_grained.h - mc2/allto_allv_quant_grouped_mat_mul/op_host/op_tiling/arch35/allto_allv_quant_grouped_mat_mul_tiling_common.cpp - mc2/allto_allv_grouped_mat_mul/op_host/op_tiling/allto_allv_grouped_mat_mul_tiling.cpp --- ## MC2领域规则检视 ### 规则对照分析 | 规则ID | 规则名称 | 检视结果 | 说明 | |--------|----------|----------|------| | MC2-01 | 核间同步必要性 | ✅ 合规 | 本次修改未新增循环结构调用通信API | | MC2-02 | 流同步正确性 | ✅ 合规 | 未涉及SetFlag/WaitFlag修改 | | MC2-03 | SyncAll同步生效 | ✅ 合规 | 未涉及SyncAll修改 | | MC2-04 | 全局操作一致性 | ✅ 合规 | 环境变量全局生效,所有rank参数一致 | | MC2-16 | 编译规范 | ✅ 合规 | 正确使用ASC_DEVKIT_MAJOR宏隔离 | --- ## 潜在风险点分析 ### 1. 环境变量线程安全性(低风险) **代码位置**: mc2/common/utils/mc2_comm_utils.h **代码片段**: ```cpp inline uint8_t GetCommModeFromEnv() { auto commModeEnv = getenv(COMM_MODE_ENV); // getenv非线程安全 if (commModeEnv != nullptr) { return COMM_MODE_AICPU; } return COMM_MODE_CCU; } ``` **假设检验**: - 原假设H0:代码线程安全 - 证据:getenv()是非线程安全的POSIX函数(C标准) - 自信值:30%(低风险) **结论**: 低风险,算子执行前环境变量已稳定,无需修改。 --- ### 2. HcclTypeSelector模板默认值一致性(无风险) **代码位置**: - mc2/allto_allv_quant_grouped_mat_mul/op_kernel/mc2_templates/communication/hccl_a2av_op.h - mc2/allto_allv_grouped_mat_mul/op_kernel/allto_allv_grouped_mat_mul_coarse_grained.h **代码片段**: ```cpp // 量化算子 template<int commMode = TILINGKEY_TPL_CCU> struct HcclTypeSelector { using type = Hccl<HcclServerType::HCCL_SERVER_TYPE_CCU>; // 默认CCU }; // 非量化算子 template<int commMode = CCU_COMM_MODE> struct HcclTypeSelector { using type = Hccl<HcclServerType::HCCL_SERVER_TYPE_CCU>; // 默认CCU }; ``` **假设检验**: - 原假设H0:两个算子默认值一致 - 证据:两者默认值都为CCU(0),一致 - 自信值:0%(无风险) **结论**: ✅ 合规,默认行为一致。 --- ## 环境变量逻辑验证 ### 默认行为(无环境变量) | 层级 | 平台 | 默认行为 | |------|------|----------| | mc2_comm_utils.h | - | 返回CCU(0) | | gen_task | A5 | CCU server/stream | | gen_task | 非A5 | AICPU server/stream | | aclnn | - | NnopbaseSetHcclServerType(CCU) | | tiling | - | SetCommEngine(CCU_ENGINE) | | kernel | - | HCCL_SERVER_TYPE_CCU | ### 强制AICPU行为(设置ENV_MC2_COMM_MODE_AICPU) | 层级 | 行为 | |------|------| | mc2_comm_utils.h | 返回AICPU(1) | | gen_task | 强制aicpu kfc server | | aclnn | NnopbaseSetHcclServerType(AICPU) | | tiling | SetCommEngine(AICPU_ENGINE) | | kernel | HCCL_SERVER_TYPE_AICPU | --- ## 总体结论 **✅ 代码检视通过** 本次修改符合MC2领域规则: - 无新增同步风险点 - HCCL模板选择正确 - 编译规范合规 - 全局参数一致性保证 - 环境变量逻辑清晰,默认行为与原代码一致 --- ## 附录 ### MR链接 https://gitcode.com/cann/ops-transformer/merge_requests/4961 ### Commit链接 https://gitcode.com/cann/ops-transformer/commit/c3c02630a See merge request: cann/ops-transformer!496117 天前
[AICPU] 算子根据环境变量选择commMode通信引擎 Co-authored-by: libohao6<libohao3@huawei.com> # message auto-generated for no-merge-commit merge: !4961 merge aicpu_only into master [AICPU] 算子根据环境变量选择commMode通信引擎 Created-by: libohao6 Commit-by: libohao6 Merged-by: cann-robot Description: ## 描述 [AICPU] 算子根据环境变量选择commMode通信引擎 #4961 ## 关联的Issue [Requirement|需求建议]: [AICPU] 算子根据环境变量选择commMode通信引擎 #4961 #2354 ## 测试 level0测试。 ## 文档更新 不涉及。 ## 类型标签 <!-- [x] 表示选中 --> - [.] 🐛 Bug 修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: # MC2代码检视报告 - MR#4961 ## 基本信息 | 项目 | 内容 | |------|------| | MR编号 | #4961 | | 分支 | aicpu_only | | Commit | c3c02630a | | 检视时间 | 2026-05-11 | | 检视人 | AI Code Reviewer | ## 修改概述 支持ENV_MC2_COMM_MODE_AICPU环境变量切换CCU/AICPU通信模式: 1. 新增Mc2Comm::GetCommModeFromEnv()统一环境变量读取入口(header-only) 2. 全层级环境变量判断: aclnn + gen_task + tiling + kernel 3. gen_task结合平台判断(A5→CCU, 非A5→AICPU) + 环境变量覆盖 4. Kernel层HcclTypeSelector模板选择HCCL服务器类型 5. tilingKey删除D_T_MM和TILINGKEY_MM维度,模板实例数减少67% ## 检视范围 - mc2/common/utils/mc2_comm_utils.h - mc2/allto_allv_quant_grouped_mat_mul/op_kernel/mc2_templates/communication/hccl_a2av_op.h - mc2/allto_allv_grouped_mat_mul/op_kernel/allto_allv_grouped_mat_mul_coarse_grained.h - mc2/allto_allv_quant_grouped_mat_mul/op_host/op_tiling/arch35/allto_allv_quant_grouped_mat_mul_tiling_common.cpp - mc2/allto_allv_grouped_mat_mul/op_host/op_tiling/allto_allv_grouped_mat_mul_tiling.cpp --- ## MC2领域规则检视 ### 规则对照分析 | 规则ID | 规则名称 | 检视结果 | 说明 | |--------|----------|----------|------| | MC2-01 | 核间同步必要性 | ✅ 合规 | 本次修改未新增循环结构调用通信API | | MC2-02 | 流同步正确性 | ✅ 合规 | 未涉及SetFlag/WaitFlag修改 | | MC2-03 | SyncAll同步生效 | ✅ 合规 | 未涉及SyncAll修改 | | MC2-04 | 全局操作一致性 | ✅ 合规 | 环境变量全局生效,所有rank参数一致 | | MC2-16 | 编译规范 | ✅ 合规 | 正确使用ASC_DEVKIT_MAJOR宏隔离 | --- ## 潜在风险点分析 ### 1. 环境变量线程安全性(低风险) **代码位置**: mc2/common/utils/mc2_comm_utils.h **代码片段**: ```cpp inline uint8_t GetCommModeFromEnv() { auto commModeEnv = getenv(COMM_MODE_ENV); // getenv非线程安全 if (commModeEnv != nullptr) { return COMM_MODE_AICPU; } return COMM_MODE_CCU; } ``` **假设检验**: - 原假设H0:代码线程安全 - 证据:getenv()是非线程安全的POSIX函数(C标准) - 自信值:30%(低风险) **结论**: 低风险,算子执行前环境变量已稳定,无需修改。 --- ### 2. HcclTypeSelector模板默认值一致性(无风险) **代码位置**: - mc2/allto_allv_quant_grouped_mat_mul/op_kernel/mc2_templates/communication/hccl_a2av_op.h - mc2/allto_allv_grouped_mat_mul/op_kernel/allto_allv_grouped_mat_mul_coarse_grained.h **代码片段**: ```cpp // 量化算子 template<int commMode = TILINGKEY_TPL_CCU> struct HcclTypeSelector { using type = Hccl<HcclServerType::HCCL_SERVER_TYPE_CCU>; // 默认CCU }; // 非量化算子 template<int commMode = CCU_COMM_MODE> struct HcclTypeSelector { using type = Hccl<HcclServerType::HCCL_SERVER_TYPE_CCU>; // 默认CCU }; ``` **假设检验**: - 原假设H0:两个算子默认值一致 - 证据:两者默认值都为CCU(0),一致 - 自信值:0%(无风险) **结论**: ✅ 合规,默认行为一致。 --- ## 环境变量逻辑验证 ### 默认行为(无环境变量) | 层级 | 平台 | 默认行为 | |------|------|----------| | mc2_comm_utils.h | - | 返回CCU(0) | | gen_task | A5 | CCU server/stream | | gen_task | 非A5 | AICPU server/stream | | aclnn | - | NnopbaseSetHcclServerType(CCU) | | tiling | - | SetCommEngine(CCU_ENGINE) | | kernel | - | HCCL_SERVER_TYPE_CCU | ### 强制AICPU行为(设置ENV_MC2_COMM_MODE_AICPU) | 层级 | 行为 | |------|------| | mc2_comm_utils.h | 返回AICPU(1) | | gen_task | 强制aicpu kfc server | | aclnn | NnopbaseSetHcclServerType(AICPU) | | tiling | SetCommEngine(AICPU_ENGINE) | | kernel | HCCL_SERVER_TYPE_AICPU | --- ## 总体结论 **✅ 代码检视通过** 本次修改符合MC2领域规则: - 无新增同步风险点 - HCCL模板选择正确 - 编译规范合规 - 全局参数一致性保证 - 环境变量逻辑清晰,默认行为与原代码一致 --- ## 附录 ### MR链接 https://gitcode.com/cann/ops-transformer/merge_requests/4961 ### Commit链接 https://gitcode.com/cann/ops-transformer/commit/c3c02630a See merge request: cann/ops-transformer!496117 天前
修改mc2目录下的arch32为arch22 Co-authored-by: hblnb<huangbolin3@huawei.com> # message auto-generated for no-merge-commit merge: !4314 merge change_A2A3_arch into master 修改mc2目录下的arch32为arch22 Created-by: hblnb Commit-by: hblnb Merged-by: cann-robot Description: ## 描述 修改mc2目录下的arch32为arch22 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!43141 个月前
修改mc2目录下的arch32为arch22 Co-authored-by: hblnb<huangbolin3@huawei.com> # message auto-generated for no-merge-commit merge: !4314 merge change_A2A3_arch into master 修改mc2目录下的arch32为arch22 Created-by: hblnb Commit-by: hblnb Merged-by: cann-robot Description: ## 描述 修改mc2目录下的arch32为arch22 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!43141 个月前
修复A2A3环境下EsTranspose和aclrtGetArgsFromExceptionInfo符号未定义问题 Co-authored-by: y00951989<yangshengjun3@huawei.com> # message auto-generated for no-merge-commit merge: !5077 merge A2A3_pr into master 修复A2A3环境下EsTranspose和aclrtGetArgsFromExceptionInfo符号未定义问题 Created-by: yangshengjun703 Commit-by: y00951989 Merged-by: cann-robot Description: ## 描述 解决A2A3环境下EsTranspose和aclrtGetArgsFromExceptionInfo符号未定义问题 ## 关联Issue 关联的Issue [https://gitcode.com/cann/ops-transformer/issues/2334](url) ## 测试 完成线上A5 A2 A3 rdv 及 本地问题单复现场景A2A3的用例测试,精度通过 # Ascend C 算子代码检视报告 ## 1. 检视概要 **检视文件**:C:\y00951989\5077.diff(171行) **检视模式**:PR 检视(C++安全检视) **检视范围**: - **文件1**:mc2/common/utils/mc2_exception_dump.h - 异常处理动态库加载改造 - **文件2**:mc2/matmul_allto_all/op_graph/fusion_pass/matmul_all_to_all_transpose_a5_fusion_pass.cpp - fusion pass 动态库加载 **核心变更**: - 使用 dlopen/dlsym 动态加载 API 函数,替代直接调用 - 目的:解决符号依赖问题,提升版本兼容性 **问题统计**: - **CRITICAL级别**:2个(空指针解引用、资源泄露) - **MEDIUM级别**:2个(外部输入校验、LOG安全) - **LOW级别**:0个 **检视结论**:该PR引入动态库加载机制解决版本兼容性问题,但存在**2个CRITICAL级别安全风险**,必须在合并前修复。 --- ## 2. 问题详情(按严重级别排序) ### CRITICAL-1:空指针解引用风险(cpp-secure 3.5) **严重级别**:CRITICAL(高) **假设检验过程**: | 步骤 | 假设与证据 | 自信值 | |------|-----------|-------| | **H0** | func 指针在使用前已判空 | 0% | | **证据1** | 行152:static EsTransposeFunc func = GetEsTransposeFunc(); 从 GetEsTransposeFunc() 获取指针 | +40% | | **证据2** | GetEsTransposeFunc() 可能返回 nullptr(dlopen 或 dlsym 失败时,第139、145行) | +30% | | **证据3** | TransposeDL 函数中第154行直接调用 func(...),未进行判空检查 | +30% | | **H1** | **func 指针可能为 nullptr,直接调用会导致程序崩溃** | **100%** | **关联条款**:cpp-secure 3.5(指针使用前判空)、TOPK-1(必须校验函数返回值) **代码路径**:mc2/matmul_allto_all/op_graph/fusion_pass/matmul_all_to_all_transpose_a5_fusion_pass.cpp(diff行152-154) **问题类型**:内存安全 - 空指针解引用 **问题代码片段**: ```cpp // 行150-157(TransposeDL 函数) ge::es::EsTensorHolder TransposeDL(const ge::es::EsTensorLike& x, const ge::es::EsTensorLike& perm) { static EsTransposeFunc func = GetEsTransposeFunc(); // ❌ 可能返回 nullptr auto* builder = ge::es::ResolveBuilder(x, perm); auto result = func(x.ToTensorHolder(builder).GetCTensorHolder(), // ❌ 直接调用,未判空 perm.ToTensorHolder(builder).GetCTensorHolder()); return result; } ``` **修改建议**: ```cpp // ✅ 正确:添加判空检查 ge::es::EsTensorHolder TransposeDL(const ge::es::EsTensorLike& x, const ge::es::EsTensorLike& perm) { static EsTransposeFunc func = GetEsTransposeFunc(); if (func == nullptr) { OPS_LOG_E("MatmulAllToAllTransposeA5FusionPass", "EsTranspose function not loaded"); return ge::es::EsTensorHolder(); // 返回空对象或抛出异常 } auto* builder = ge::es::ResolveBuilder(x, perm); auto result = func(x.ToTensorHolder(builder).GetCTensorHolder(), perm.ToTensorHolder(builder).GetCTensorHolder()); return result; } ``` --- ### CRITICAL-2:资源泄露风险(cpp-secure 5.2) **严重级别**:CRITICAL(高) **假设检验过程**: | 步骤 | 假设与证据 | 自信值 | |------|-----------|-------| | **H0** | dlopen handle 资源正确释放 | 0% | | **证据1** | 行136:dlopen("libes_math.so", RTLD_LAZY | RTLD_GLOBAL) 使用 RTLD_LAZY | RTLD_GLOBAL 标志 | +40% | | **证据2** | RTLD_LAZY | RTLD_GLOBAL 标志会增加动态库的引用计数 | +30% | | **证据3** | 整个函数作用域内无 dlclose 调用(第136-148行) | +30% | | **证据4** | handle 为局部变量,函数返回后丢失,无法后续释放 | +20% | | **H1** | **dlopen 增加了引用计数,但未配对 dlclose,导致资源泄露** | **100%** | **关联条款**:cpp-secure 5.2(资源申请和释放必须匹配) **代码路径**:mc2/matmul_allto_all/op_graph/fusion_pass/matmul_all_to_all_transpose_a5_fusion_pass.cpp(diff行136-148) **问题类型**:资源泄露 - dlopen未配对dlclose **问题分析**: - RTLD_LAZY | RTLD_GLOBAL 标志会加载库并增加引用计数 - 函数返回后 handle 局部变量丢失,无法后续调用 dlclose - 如果库被多次加载(虽然 static func 缓存了结果,但每次检查都会执行 dlopen),会导致库无法被正常卸载 **修改建议**: **方案1:使用 RTLD_NOLOAD,仅查询不增加引用计数**(推荐) ```cpp // ✅ 正确:使用 RTLD_NOLOAD,不增加引用计数 EsTransposeFunc GetEsTransposeFunc() { void* handle = dlopen("libes_math.so", RTLD_NOLOAD | RTLD_LAZY); // 仅查询 if (!handle) { OPS_LOG_E("MatmulAllToAllTransposeA5FusionPass", "dlopen failed: %s", dlerror()); return nullptr; } dlerror(); auto func = reinterpret_cast<EsTransposeFunc>(dlsym(handle, "EsTranspose")); if (dlerror() != nullptr) { OPS_LOG_E("MatmulAllToAllTransposeA5FusionPass", "dlsym EsTranspose failed"); return nullptr; } return func; // RTLD_NOLOAD 不增加引用计数,无需 dlclose } ``` --- ### MEDIUM-1:外部输入参数未判空(cpp-secure 4.1) **严重级别**:MEDIUM(中) **假设检验过程**: | 步骤 | 假设与证据 | 自信值 | |------|-----------|-------| | **H0** | args 参数正确校验 | 0% | | **证据1** | args 参数作为 aclrtExceptionInfo 指针,属于外部输入(来自异常回调) | +40% | | **证据2** | diff 第81行直接使用 args 参数调用函数,未显示判空检查 | +30% | | **证据3** | 虽然理论上异常回调不应传入 nullptr,但规范要求对外部输入必须校验 | +20% | | **H1** | **args 参数作为外部输入,建议添加判空检查** | **70%** | **关联条款**:cpp-secure 4.1(外部输入数据合法性校验) **代码路径**:mc2/common/utils/mc2_exception_dump.h(diff行81) **问题类型**:外部输入校验 - 参数未判空 **问题代码片段**: ```cpp // 行81(Mc2ExceptionImpl 函数) auto ret = aclrtGetArgsFromExceptionInfoFunc(args, &devArgsPtr, &devArgsLen); // args 未判空 ``` **修改建议**: ```cpp // ✅ 正确:添加参数校验 inline void Mc2ExceptionImpl(aclrtExceptionInfo *args, void *userdata, const char *op) { // 添加外部输入校验 if (args == nullptr) { OP_LOGE(OP_NAME, "args is nullptr, invalid exception info"); return; } // Get addr of hccl context from ExceptionInfo void* devArgsPtr = nullptr; uint32_t devArgsLen = 0; ... } ``` --- ### MEDIUM-2:LOG API 潜在空指针风险(cpp-secure 11.1) **严重级别**:MEDIUM(中) **假设检验过程**: | 步骤 | 假设与证据 | 自信值 | |------|-----------|-------| | **H0** | dlerror() 返回值作为 LOG 参数安全 | 0% | | **证据1** | dlerror() 函数在无错误时返回 nullptr | +40% | | **证据2** | 代码中直接将 dlerror() 作为 %s 参数传入 OP_LOGE(第34、37、55、60行) | +30% | | **证据3** | 虽然在错误分支调用理论上应返回错误字符串,但不同平台行为可能有差异 | +20% | | **H1** | **dlerror() 可能返回 nullptr,作为 %s 参数可能导致段错误** | **50%** | **结论**:自信值 **50%** < 60%,无法推翻原假设H0,但存在**需关注**风险点。 **关联条款**:cpp-secure 11.1(LOG API 禁止传入空指针作为字符串参数) **代码路径**:mc2/common/utils/mc2_exception_dump.h(diff行34、37、55、60) **问题类型**:LOG安全 - 潜在空指针风险 **问题代码片段**: ```cpp // 行34、37、55、60 OP_LOGE(OP_NAME, "dlsym aclrtGetArgsFromExceptionInfo failed: %s", dlerror()); // ❌ dlerror() 可能为 nullptr OP_LOGE(OP_NAME, "dlopen failed: %s", dlerror()); // ❌ dlerror() 可能为 nullptr ``` **修改建议**: ```cpp // ✅ 正确:判空或使用安全格式 // 方案1:判空 const char* errMsg = dlerror(); OP_LOGE(OP_NAME, "dlopen failed: %s", errMsg ? errMsg : "unknown error"); // 方案2:使用安全格式 OP_LOGE(OP_NAME, "dlopen failed, error code: %p", dlerror()); // 打印指针地址 ``` --- ## 3. 通过条款 以下条款经检视后确认代码符合规范: ### TOPK-13:禁止 thread_local 变量 - ✅ **通过**:代码中使用 static 变量,未使用 thread_local 关键字 ### TOPK-1:必须校验函数返回值 - ✅ **通过**:dlopen、dlsym、aclrtGetArgsFromExceptionInfo、acldumpGetPath 等关键函数均有返回值校验 ### cpp-secure 3.1:禁止使用未初始化的变量 - ✅ **通过**:所有 static 变量均显式初始化(func = nullptrinitialized = false) ### cpp-secure 11.3:LOG API 参数类型必须与格式化说明符匹配 - ✅ **通过**:%s 对应 dlerror() 返回值(char*),%d 对应 aclError 类型(整型),类型匹配 ### mc2_exception_dump.h 中的 RTLD_NOLOAD 使用 - ✅ **合理**:GetAclrtGetArgsFromExceptionInfoFunc() 和 GetAcldumpGetPathFunc() 使用 RTLD_NOLOAD | RTLD_LAZY,仅查询库是否已加载,不增加引用计数,无需 dlclose --- ## 4. 整体评价 ### 优点总结: 1. **架构设计合理**:使用动态加载机制解决版本兼容性问题,避免硬编码符号依赖 2. **函数指针管理规范**:使用 static 变量缓存函数指针,避免重复加载开销 3. **错误处理完善**:dlopen/dlsym 失败时记录日志,提供错误信息 4. **返回值校验完整**:关键函数调用均有返回值校验和错误处理 5. **RTLD_NOLOAD 使用正确**:mc2_exception_dump.h 中使用 RTLD_NOLOAD 避免增加引用计数 ### 需改进项总结: **必须修改(CRITICAL)**: 1. ✅ TransposeDL 函数添加 func 指针判空检查(防止空指针解引用崩溃) 2. ✅ GetEsTransposeFunc() 修改为 RTLD_NOLOAD 或添加 dlclose(防止资源泄露) **建议修改(MEDIUM)**: 1. ✅ Mc2ExceptionImpl 函数添加 args 参数判空检查(外部输入校验) 2. ✅ LOG 宏中的 dlerror() 返回值判空或使用安全格式(防止段错误) ### 综合评分: | 维度 | 评分 | 说明 | |------|------|------| | **安全编码** | 60/100 | 2个CRITICAL安全问题需立即修复 | | **API使用** | 75/100 | dlopen/dlsym 使用基本规范,但存在资源泄露风险 | | **性能优化** | 90/100 | static 缓存设计合理,避免重复加载 | | **代码规范** | 85/100 | 注释清晰,格式规范 | | **版本兼容性** | 95/100 | 动态加载机制解决符号依赖问题 | **总分**:**81/100** --- ## 5. 结论与建议 ### 检视结论: 该PR引入动态库加载机制(dlopen/dlsym)解决版本兼容性问题,架构设计合理。但存在**2个CRITICAL级别的安全风险**(空指针解引用、资源泄露),必须在合并前修复。 ### 修改要求: **必须修复(阻塞合并)**: 1. ✅ **TransposeDL 函数添加判空检查**(cpp-secure 3.5) - 添加 if (func == nullptr) 检查,防止空指针解引用崩溃 - 返回空对象或抛出异常作为错误处理 2. ✅ **GetEsTransposeFunc() 资源泄露修复**(cpp-secure 5.2) - **方案1(推荐)**:改用 RTLD_NOLOAD | RTLD_LAZY,仅查询不增加引用计数 - **方案2**:缓存 handle 并添加清理函数,确保引用计数匹配 **建议修复(推荐)**: 1. ✅ Mc2ExceptionImpl 函数添加 args 参数校验(cpp-secure 4.1) 2. ✅ LOG 宏中 dlerror() 返回值判空(cpp-secure 11.1) ### 建议操作: 1. **立即修复 CRITICAL 问题**:优先修复空指针解引用和资源泄露问题 2. **补充单元测试**:测试 dlopen/dlsym 失败场景,验证错误处理逻辑 3. **添加文档说明**:在 README 或代码注释中说明动态加载机制的使用场景和注意事项 4. **代码 Review**:邀请团队成员 Review 修复后的代码 5. **性能测试**:验证动态加载对性能的影响(虽然 static 缓存可避免重复加载) --- **报告生成时间**:2026-05-08 **检视人**:AI Code Reviewer (ascendc-ops-reviewer) **检视模式**:PR检视(C++安全检视) **规范版本**:cpp-secure.md、ascendc-topk.md **检视状态**:已完成,发现2个 See merge request: cann/ops-transformer!507717 天前
修改distributeBarrier和distributeBarrierExtend算子资料 16 天前
修改distributeBarrier和distributeBarrierExtend算子资料 16 天前
修改mc2目录下的arch32为arch22 Co-authored-by: hblnb<huangbolin3@huawei.com> # message auto-generated for no-merge-commit merge: !4314 merge change_A2A3_arch into master 修改mc2目录下的arch32为arch22 Created-by: hblnb Commit-by: hblnb Merged-by: cann-robot Description: ## 描述 修改mc2目录下的arch32为arch22 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!43141 个月前
revert:对mc2的tilingKey进行宏编译处理 Co-authored-by: hblnb<huangbolin3@huawei.com> # message auto-generated for no-merge-commit merge: !5025 merge revert-mr-4332-1778221340412-auto into master revert:对mc2的tilingKey进行宏编译处理 Created-by: hblnb Commit-by: hblnb Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!502521 天前
gmmalltoallv增加通信引擎说明 Co-authored-by: huangshuai<huangshuai59@huawei.com> # message auto-generated for no-merge-commit merge: !5075 merge dts into master gmmalltoallv增加通信引擎说明 Created-by: huangshuai59 Commit-by: huangshuai Merged-by: cann-robot Description: ## 描述 gmmalltoallv增加通信引擎说明 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/2315 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 https://gitcode.com/cann/ops-transformer/blob/master/mc2/quant_grouped_mat_mul_allto_allv/README.md https://gitcode.com/cann/ops-transformer/blob/master/mc2/quant_grouped_mat_mul_allto_allv/docs/aclnnQuantGroupedMatMulAlltoAllv.md https://gitcode.com/cann/ops-transformer/blob/master/mc2/grouped_mat_mul_allto_allv/README.md https://gitcode.com/cann/ops-transformer/blob/master/mc2/grouped_mat_mul_allto_allv/docs/aclnnGroupedMatMulAlltoAllv.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!507517 天前
revert:对mc2的tilingKey进行宏编译处理 Co-authored-by: hblnb<huangbolin3@huawei.com> # message auto-generated for no-merge-commit merge: !5025 merge revert-mr-4332-1778221340412-auto into master revert:对mc2的tilingKey进行宏编译处理 Created-by: hblnb Commit-by: hblnb Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!502521 天前
修复ut失败用例 Co-authored-by: chenyifan<chenyifan66@h-partners.com> # message auto-generated for no-merge-commit merge: !4954 merge fix_ut_case into master 修复ut失败用例 Created-by: mutex_lock Commit-by: chenyifan Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 修复全量ut中失败用例 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-transformer/issues/2206 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!495422 天前
revert:对mc2的tilingKey进行宏编译处理 Co-authored-by: hblnb<huangbolin3@huawei.com> # message auto-generated for no-merge-commit merge: !5025 merge revert-mr-4332-1778221340412-auto into master revert:对mc2的tilingKey进行宏编译处理 Created-by: hblnb Commit-by: hblnb Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!502521 天前
修复A2A3环境下EsTranspose和aclrtGetArgsFromExceptionInfo符号未定义问题 Co-authored-by: y00951989<yangshengjun3@huawei.com> # message auto-generated for no-merge-commit merge: !5077 merge A2A3_pr into master 修复A2A3环境下EsTranspose和aclrtGetArgsFromExceptionInfo符号未定义问题 Created-by: yangshengjun703 Commit-by: y00951989 Merged-by: cann-robot Description: ## 描述 解决A2A3环境下EsTranspose和aclrtGetArgsFromExceptionInfo符号未定义问题 ## 关联Issue 关联的Issue [https://gitcode.com/cann/ops-transformer/issues/2334](url) ## 测试 完成线上A5 A2 A3 rdv 及 本地问题单复现场景A2A3的用例测试,精度通过 # Ascend C 算子代码检视报告 ## 1. 检视概要 **检视文件**:C:\y00951989\5077.diff(171行) **检视模式**:PR 检视(C++安全检视) **检视范围**: - **文件1**:mc2/common/utils/mc2_exception_dump.h - 异常处理动态库加载改造 - **文件2**:mc2/matmul_allto_all/op_graph/fusion_pass/matmul_all_to_all_transpose_a5_fusion_pass.cpp - fusion pass 动态库加载 **核心变更**: - 使用 dlopen/dlsym 动态加载 API 函数,替代直接调用 - 目的:解决符号依赖问题,提升版本兼容性 **问题统计**: - **CRITICAL级别**:2个(空指针解引用、资源泄露) - **MEDIUM级别**:2个(外部输入校验、LOG安全) - **LOW级别**:0个 **检视结论**:该PR引入动态库加载机制解决版本兼容性问题,但存在**2个CRITICAL级别安全风险**,必须在合并前修复。 --- ## 2. 问题详情(按严重级别排序) ### CRITICAL-1:空指针解引用风险(cpp-secure 3.5) **严重级别**:CRITICAL(高) **假设检验过程**: | 步骤 | 假设与证据 | 自信值 | |------|-----------|-------| | **H0** | func 指针在使用前已判空 | 0% | | **证据1** | 行152:static EsTransposeFunc func = GetEsTransposeFunc(); 从 GetEsTransposeFunc() 获取指针 | +40% | | **证据2** | GetEsTransposeFunc() 可能返回 nullptr(dlopen 或 dlsym 失败时,第139、145行) | +30% | | **证据3** | TransposeDL 函数中第154行直接调用 func(...),未进行判空检查 | +30% | | **H1** | **func 指针可能为 nullptr,直接调用会导致程序崩溃** | **100%** | **关联条款**:cpp-secure 3.5(指针使用前判空)、TOPK-1(必须校验函数返回值) **代码路径**:mc2/matmul_allto_all/op_graph/fusion_pass/matmul_all_to_all_transpose_a5_fusion_pass.cpp(diff行152-154) **问题类型**:内存安全 - 空指针解引用 **问题代码片段**: ```cpp // 行150-157(TransposeDL 函数) ge::es::EsTensorHolder TransposeDL(const ge::es::EsTensorLike& x, const ge::es::EsTensorLike& perm) { static EsTransposeFunc func = GetEsTransposeFunc(); // ❌ 可能返回 nullptr auto* builder = ge::es::ResolveBuilder(x, perm); auto result = func(x.ToTensorHolder(builder).GetCTensorHolder(), // ❌ 直接调用,未判空 perm.ToTensorHolder(builder).GetCTensorHolder()); return result; } ``` **修改建议**: ```cpp // ✅ 正确:添加判空检查 ge::es::EsTensorHolder TransposeDL(const ge::es::EsTensorLike& x, const ge::es::EsTensorLike& perm) { static EsTransposeFunc func = GetEsTransposeFunc(); if (func == nullptr) { OPS_LOG_E("MatmulAllToAllTransposeA5FusionPass", "EsTranspose function not loaded"); return ge::es::EsTensorHolder(); // 返回空对象或抛出异常 } auto* builder = ge::es::ResolveBuilder(x, perm); auto result = func(x.ToTensorHolder(builder).GetCTensorHolder(), perm.ToTensorHolder(builder).GetCTensorHolder()); return result; } ``` --- ### CRITICAL-2:资源泄露风险(cpp-secure 5.2) **严重级别**:CRITICAL(高) **假设检验过程**: | 步骤 | 假设与证据 | 自信值 | |------|-----------|-------| | **H0** | dlopen handle 资源正确释放 | 0% | | **证据1** | 行136:dlopen("libes_math.so", RTLD_LAZY | RTLD_GLOBAL) 使用 RTLD_LAZY | RTLD_GLOBAL 标志 | +40% | | **证据2** | RTLD_LAZY | RTLD_GLOBAL 标志会增加动态库的引用计数 | +30% | | **证据3** | 整个函数作用域内无 dlclose 调用(第136-148行) | +30% | | **证据4** | handle 为局部变量,函数返回后丢失,无法后续释放 | +20% | | **H1** | **dlopen 增加了引用计数,但未配对 dlclose,导致资源泄露** | **100%** | **关联条款**:cpp-secure 5.2(资源申请和释放必须匹配) **代码路径**:mc2/matmul_allto_all/op_graph/fusion_pass/matmul_all_to_all_transpose_a5_fusion_pass.cpp(diff行136-148) **问题类型**:资源泄露 - dlopen未配对dlclose **问题分析**: - RTLD_LAZY | RTLD_GLOBAL 标志会加载库并增加引用计数 - 函数返回后 handle 局部变量丢失,无法后续调用 dlclose - 如果库被多次加载(虽然 static func 缓存了结果,但每次检查都会执行 dlopen),会导致库无法被正常卸载 **修改建议**: **方案1:使用 RTLD_NOLOAD,仅查询不增加引用计数**(推荐) ```cpp // ✅ 正确:使用 RTLD_NOLOAD,不增加引用计数 EsTransposeFunc GetEsTransposeFunc() { void* handle = dlopen("libes_math.so", RTLD_NOLOAD | RTLD_LAZY); // 仅查询 if (!handle) { OPS_LOG_E("MatmulAllToAllTransposeA5FusionPass", "dlopen failed: %s", dlerror()); return nullptr; } dlerror(); auto func = reinterpret_cast<EsTransposeFunc>(dlsym(handle, "EsTranspose")); if (dlerror() != nullptr) { OPS_LOG_E("MatmulAllToAllTransposeA5FusionPass", "dlsym EsTranspose failed"); return nullptr; } return func; // RTLD_NOLOAD 不增加引用计数,无需 dlclose } ``` --- ### MEDIUM-1:外部输入参数未判空(cpp-secure 4.1) **严重级别**:MEDIUM(中) **假设检验过程**: | 步骤 | 假设与证据 | 自信值 | |------|-----------|-------| | **H0** | args 参数正确校验 | 0% | | **证据1** | args 参数作为 aclrtExceptionInfo 指针,属于外部输入(来自异常回调) | +40% | | **证据2** | diff 第81行直接使用 args 参数调用函数,未显示判空检查 | +30% | | **证据3** | 虽然理论上异常回调不应传入 nullptr,但规范要求对外部输入必须校验 | +20% | | **H1** | **args 参数作为外部输入,建议添加判空检查** | **70%** | **关联条款**:cpp-secure 4.1(外部输入数据合法性校验) **代码路径**:mc2/common/utils/mc2_exception_dump.h(diff行81) **问题类型**:外部输入校验 - 参数未判空 **问题代码片段**: ```cpp // 行81(Mc2ExceptionImpl 函数) auto ret = aclrtGetArgsFromExceptionInfoFunc(args, &devArgsPtr, &devArgsLen); // args 未判空 ``` **修改建议**: ```cpp // ✅ 正确:添加参数校验 inline void Mc2ExceptionImpl(aclrtExceptionInfo *args, void *userdata, const char *op) { // 添加外部输入校验 if (args == nullptr) { OP_LOGE(OP_NAME, "args is nullptr, invalid exception info"); return; } // Get addr of hccl context from ExceptionInfo void* devArgsPtr = nullptr; uint32_t devArgsLen = 0; ... } ``` --- ### MEDIUM-2:LOG API 潜在空指针风险(cpp-secure 11.1) **严重级别**:MEDIUM(中) **假设检验过程**: | 步骤 | 假设与证据 | 自信值 | |------|-----------|-------| | **H0** | dlerror() 返回值作为 LOG 参数安全 | 0% | | **证据1** | dlerror() 函数在无错误时返回 nullptr | +40% | | **证据2** | 代码中直接将 dlerror() 作为 %s 参数传入 OP_LOGE(第34、37、55、60行) | +30% | | **证据3** | 虽然在错误分支调用理论上应返回错误字符串,但不同平台行为可能有差异 | +20% | | **H1** | **dlerror() 可能返回 nullptr,作为 %s 参数可能导致段错误** | **50%** | **结论**:自信值 **50%** < 60%,无法推翻原假设H0,但存在**需关注**风险点。 **关联条款**:cpp-secure 11.1(LOG API 禁止传入空指针作为字符串参数) **代码路径**:mc2/common/utils/mc2_exception_dump.h(diff行34、37、55、60) **问题类型**:LOG安全 - 潜在空指针风险 **问题代码片段**: ```cpp // 行34、37、55、60 OP_LOGE(OP_NAME, "dlsym aclrtGetArgsFromExceptionInfo failed: %s", dlerror()); // ❌ dlerror() 可能为 nullptr OP_LOGE(OP_NAME, "dlopen failed: %s", dlerror()); // ❌ dlerror() 可能为 nullptr ``` **修改建议**: ```cpp // ✅ 正确:判空或使用安全格式 // 方案1:判空 const char* errMsg = dlerror(); OP_LOGE(OP_NAME, "dlopen failed: %s", errMsg ? errMsg : "unknown error"); // 方案2:使用安全格式 OP_LOGE(OP_NAME, "dlopen failed, error code: %p", dlerror()); // 打印指针地址 ``` --- ## 3. 通过条款 以下条款经检视后确认代码符合规范: ### TOPK-13:禁止 thread_local 变量 - ✅ **通过**:代码中使用 static 变量,未使用 thread_local 关键字 ### TOPK-1:必须校验函数返回值 - ✅ **通过**:dlopen、dlsym、aclrtGetArgsFromExceptionInfo、acldumpGetPath 等关键函数均有返回值校验 ### cpp-secure 3.1:禁止使用未初始化的变量 - ✅ **通过**:所有 static 变量均显式初始化(func = nullptrinitialized = false) ### cpp-secure 11.3:LOG API 参数类型必须与格式化说明符匹配 - ✅ **通过**:%s 对应 dlerror() 返回值(char*),%d 对应 aclError 类型(整型),类型匹配 ### mc2_exception_dump.h 中的 RTLD_NOLOAD 使用 - ✅ **合理**:GetAclrtGetArgsFromExceptionInfoFunc() 和 GetAcldumpGetPathFunc() 使用 RTLD_NOLOAD | RTLD_LAZY,仅查询库是否已加载,不增加引用计数,无需 dlclose --- ## 4. 整体评价 ### 优点总结: 1. **架构设计合理**:使用动态加载机制解决版本兼容性问题,避免硬编码符号依赖 2. **函数指针管理规范**:使用 static 变量缓存函数指针,避免重复加载开销 3. **错误处理完善**:dlopen/dlsym 失败时记录日志,提供错误信息 4. **返回值校验完整**:关键函数调用均有返回值校验和错误处理 5. **RTLD_NOLOAD 使用正确**:mc2_exception_dump.h 中使用 RTLD_NOLOAD 避免增加引用计数 ### 需改进项总结: **必须修改(CRITICAL)**: 1. ✅ TransposeDL 函数添加 func 指针判空检查(防止空指针解引用崩溃) 2. ✅ GetEsTransposeFunc() 修改为 RTLD_NOLOAD 或添加 dlclose(防止资源泄露) **建议修改(MEDIUM)**: 1. ✅ Mc2ExceptionImpl 函数添加 args 参数判空检查(外部输入校验) 2. ✅ LOG 宏中的 dlerror() 返回值判空或使用安全格式(防止段错误) ### 综合评分: | 维度 | 评分 | 说明 | |------|------|------| | **安全编码** | 60/100 | 2个CRITICAL安全问题需立即修复 | | **API使用** | 75/100 | dlopen/dlsym 使用基本规范,但存在资源泄露风险 | | **性能优化** | 90/100 | static 缓存设计合理,避免重复加载 | | **代码规范** | 85/100 | 注释清晰,格式规范 | | **版本兼容性** | 95/100 | 动态加载机制解决符号依赖问题 | **总分**:**81/100** --- ## 5. 结论与建议 ### 检视结论: 该PR引入动态库加载机制(dlopen/dlsym)解决版本兼容性问题,架构设计合理。但存在**2个CRITICAL级别的安全风险**(空指针解引用、资源泄露),必须在合并前修复。 ### 修改要求: **必须修复(阻塞合并)**: 1. ✅ **TransposeDL 函数添加判空检查**(cpp-secure 3.5) - 添加 if (func == nullptr) 检查,防止空指针解引用崩溃 - 返回空对象或抛出异常作为错误处理 2. ✅ **GetEsTransposeFunc() 资源泄露修复**(cpp-secure 5.2) - **方案1(推荐)**:改用 RTLD_NOLOAD | RTLD_LAZY,仅查询不增加引用计数 - **方案2**:缓存 handle 并添加清理函数,确保引用计数匹配 **建议修复(推荐)**: 1. ✅ Mc2ExceptionImpl 函数添加 args 参数校验(cpp-secure 4.1) 2. ✅ LOG 宏中 dlerror() 返回值判空(cpp-secure 11.1) ### 建议操作: 1. **立即修复 CRITICAL 问题**:优先修复空指针解引用和资源泄露问题 2. **补充单元测试**:测试 dlopen/dlsym 失败场景,验证错误处理逻辑 3. **添加文档说明**:在 README 或代码注释中说明动态加载机制的使用场景和注意事项 4. **代码 Review**:邀请团队成员 Review 修复后的代码 5. **性能测试**:验证动态加载对性能的影响(虽然 static 缓存可避免重复加载) --- **报告生成时间**:2026-05-08 **检视人**:AI Code Reviewer (ascendc-ops-reviewer) **检视模式**:PR检视(C++安全检视) **规范版本**:cpp-secure.md、ascendc-topk.md **检视状态**:已完成,发现2个 See merge request: cann/ops-transformer!507717 天前
[修复] MRS算子日志双空格问题 - 移除OP_LOGD消息字符串中的多余前导空格 Co-authored-by: libohao6<libohao3@huawei.com> # message auto-generated for no-merge-commit merge: !5045 merge fix_mmrs_bias_issue into master [修复] MRS算子日志双空格问题 - 移除OP_LOGD消息字符串中的多余前导空格 Created-by: libohao6 Commit-by: libohao6 Merged-by: cann-robot Description: ## 描述 [修复] MRS算子日志双空格问题 - 移除OP_LOGD消息字符串中的多余前导空格 ## 关联的Issue [Bug-Report|缺陷反馈]: MRS算子日志双空格问题 #2291 ## 测试 不涉及逻辑改动。 ## 文档更新 不涉及。 ## 类型标签 <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: # 代码检视报告 **项目名称**:MRS算子日志格式修复检视报告 **检视模块**: - mc2/common/utils/mc2_log.cpp - mc2/matmul_reduce_scatter/op_host/op_tiling/matmul_reduce_scatter_tiling.cpp - mc2/matmul_reduce_scatter_v2/op_host/op_tiling/arch22/matmul_reduce_scatter_v2_aiv_mode_tiling.cpp - mc2/matmul_reduce_scatter_v2/op_host/op_tiling/arch35/matmul_reduce_scatter_v2_tiling.cpp - mc2/matmul_reduce_scatter_v2/op_host/op_tiling/arch35/quant_bmm_reduce_scatter_tiling.cpp - mc2/matmul_reduce_scatter_v2/op_host/op_tiling/matmul_reduce_scatter_tiling_base.cpp **检视人**:Sisyphus **检视日期**:2026-05-09 ## 🔍 检视概览 | 统计项 | 数值 | | ---- | ---- | | 检视文件数 | 6 个 | | 变更行数 | 314行删除 + 315行新增 | | 发现问题总数 | 0 个 | | 严重级(CRITICAL)问题 | 0 个 | | 中等级(MEDIUM)问题 | 0 个 | | 轻微级(LOW)问题 | 1 个(预存问题,非本次修改引入) | | 误报数量 | 0 个 | **核心结论**:本次修改为纯格式修复,移除OP_LOGD格式字符串中的多余前导空格,消除日志输出中的双空格问题。修改范围明确,不涉及任何逻辑变更,不引入新的安全风险。**通过检视,无阻塞问题。** ## ✅ 合规确认 ### 1. 修改类型分析 | 分类 | 说明 | | ---- | ---- | | 修改类型 | 纯格式修复(日志格式字符串空格移除) | | 修改模式 | OP_LOGD(opName, " xxx")OP_LOGD(opName, "xxx") | | 影响范围 | 仅影响日志输出格式,不影响任何计算逻辑 | | 风险等级 | 低(仅日志可见性变更) | ### 2. 各文件变更统计 | 文件 | 变更行数 | 说明 | | ---- | -------- | ---- | | mc2/common/utils/mc2_log.cpp | 169行 | 公共Tiling日志打印函数 | | matmul_reduce_scatter_tiling.cpp(V1) | 67行 | V1 MRS tiling日志 | | matmul_reduce_scatter_v2_aiv_mode_tiling.cpp | 23行 | V2 AIV模式tiling日志 | | matmul_reduce_scatter_v2_tiling.cpp(arch35) | 9行 | V2 arch35 tiling日志 | | quant_bmm_reduce_scatter_tiling.cpp | 33行 | 量化BMM MRS tiling日志 | | matmul_reduce_scatter_tiling_base.cpp(V2) | 2行 | V2 MRS tiling基类日志 | ### 3. 格式字符串安全性检查 对所有OP_LOGD调用进行逐一核对: | 检查项 | 结果 | 说明 | | ------ | ---- | ---- | | 格式说明符与参数类型匹配 | ✅ 通过 | %dint%uunsigned%luunsigned long%s→字符串,均正确匹配 | | 格式字符串完整性 | ✅ 通过 | 移除的仅为前导空格字符,未破坏任何格式说明符 | | 参数数量与格式说明符一致 | ✅ 通过 | 未修改任何参数传递,仅修改格式字符串前缀 | | 新增格式化漏洞 | ✅ 无风险 | 无用户输入拼接到格式字符串,均为固定的tiling字段名 | ### 4. C++ 通用编码规范合规性(条款对照) | 规范编号 | 规范名称 | 适用性 | 合规性 | | -------- | -------- | ------ | ------ | | 1.1 | 外部数据合法性检查 | 不涉及 | N/A(无外部数据输入变更) | | 4.2 | 禁止使用魔鬼数字/字符串 | ✅ 合规 | 修改未引入魔鬼数字/字符串 | | 11.1 | 字符串存储确保有'\\0'结束符 | ✅ 合规 | 格式字符串为编译期常量,自动以'\\0'结尾 | | 1.3 | 删除无效冗余代码 | ✅ 合规 | 移除多余空格属于代码清理 | ### 5. 日志输出影响分析 **修改前日志示例**: ``` [opName] tiling.usedCoreNum 32 [opName] tiling.M 1024 ``` (注意opName]后的双空格) **修改后日志示例**: ``` [opName] tiling.usedCoreNum 32 [opName] tiling.M 1024 ``` (正常单空格分隔) **OP_LOGD宏展开分析**:OP_LOGD实现中,opName与格式字符串之间已有分隔符(通常为空格或]),格式字符串内的前导空格导致日志输出出现双空格[opName] message,移除后为标准单空格[opName] message。 ## ⚠️ 预存问题(非本次修改引入) ### 预存问题ID:PREEXIST-001 | 严重级别:LOW(代码风格) **代码路径**:matmul_reduce_scatter_tiling.cpp:152(修改后行号) **问题描述**:该行使用TAB缩进而其他行使用空格缩进,存在缩进不一致。 **代码片段**: ```cpp OP_LOGD("MatmulReduceScatter", "rcsTiling.storageGather %d", rcsTiling.storageGather); ``` **说明**:此问题为原代码预存问题,本次修改仅移除了前导空格,未改变缩进字符。不影响功能,仅影响代码风格一致性。建议在后续专项代码风格修复中统一处理。 ## 📊 检视结论 | 结论 | 说明 | | ---- | ---- | | 安全性 | **通过** - 无安全风险引入 | | 功能正确性 | **通过** - 仅修改日志格式字符串,不影响计算逻辑 | | 格式字符串安全 | **通过** - 所有格式说明符与参数类型正确匹配 | | 编码规范合规 | **通过** - 符合C++通用编码规范要求 | | 预存问题 | 1个LOW级代码风格问题(缩进不一致),非本次修改引入 | **检视结果:✅ 通过,无阻塞问题。** ## 报告生成时间 2026-05-09 09:44:00 ## 报告状态 已完成检视,通过 See merge request: cann/ops-transformer!504520 天前
[修复] MRS算子日志双空格问题 - 移除OP_LOGD消息字符串中的多余前导空格 Co-authored-by: libohao6<libohao3@huawei.com> # message auto-generated for no-merge-commit merge: !5045 merge fix_mmrs_bias_issue into master [修复] MRS算子日志双空格问题 - 移除OP_LOGD消息字符串中的多余前导空格 Created-by: libohao6 Commit-by: libohao6 Merged-by: cann-robot Description: ## 描述 [修复] MRS算子日志双空格问题 - 移除OP_LOGD消息字符串中的多余前导空格 ## 关联的Issue [Bug-Report|缺陷反馈]: MRS算子日志双空格问题 #2291 ## 测试 不涉及逻辑改动。 ## 文档更新 不涉及。 ## 类型标签 <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: # 代码检视报告 **项目名称**:MRS算子日志格式修复检视报告 **检视模块**: - mc2/common/utils/mc2_log.cpp - mc2/matmul_reduce_scatter/op_host/op_tiling/matmul_reduce_scatter_tiling.cpp - mc2/matmul_reduce_scatter_v2/op_host/op_tiling/arch22/matmul_reduce_scatter_v2_aiv_mode_tiling.cpp - mc2/matmul_reduce_scatter_v2/op_host/op_tiling/arch35/matmul_reduce_scatter_v2_tiling.cpp - mc2/matmul_reduce_scatter_v2/op_host/op_tiling/arch35/quant_bmm_reduce_scatter_tiling.cpp - mc2/matmul_reduce_scatter_v2/op_host/op_tiling/matmul_reduce_scatter_tiling_base.cpp **检视人**:Sisyphus **检视日期**:2026-05-09 ## 🔍 检视概览 | 统计项 | 数值 | | ---- | ---- | | 检视文件数 | 6 个 | | 变更行数 | 314行删除 + 315行新增 | | 发现问题总数 | 0 个 | | 严重级(CRITICAL)问题 | 0 个 | | 中等级(MEDIUM)问题 | 0 个 | | 轻微级(LOW)问题 | 1 个(预存问题,非本次修改引入) | | 误报数量 | 0 个 | **核心结论**:本次修改为纯格式修复,移除OP_LOGD格式字符串中的多余前导空格,消除日志输出中的双空格问题。修改范围明确,不涉及任何逻辑变更,不引入新的安全风险。**通过检视,无阻塞问题。** ## ✅ 合规确认 ### 1. 修改类型分析 | 分类 | 说明 | | ---- | ---- | | 修改类型 | 纯格式修复(日志格式字符串空格移除) | | 修改模式 | OP_LOGD(opName, " xxx")OP_LOGD(opName, "xxx") | | 影响范围 | 仅影响日志输出格式,不影响任何计算逻辑 | | 风险等级 | 低(仅日志可见性变更) | ### 2. 各文件变更统计 | 文件 | 变更行数 | 说明 | | ---- | -------- | ---- | | mc2/common/utils/mc2_log.cpp | 169行 | 公共Tiling日志打印函数 | | matmul_reduce_scatter_tiling.cpp(V1) | 67行 | V1 MRS tiling日志 | | matmul_reduce_scatter_v2_aiv_mode_tiling.cpp | 23行 | V2 AIV模式tiling日志 | | matmul_reduce_scatter_v2_tiling.cpp(arch35) | 9行 | V2 arch35 tiling日志 | | quant_bmm_reduce_scatter_tiling.cpp | 33行 | 量化BMM MRS tiling日志 | | matmul_reduce_scatter_tiling_base.cpp(V2) | 2行 | V2 MRS tiling基类日志 | ### 3. 格式字符串安全性检查 对所有OP_LOGD调用进行逐一核对: | 检查项 | 结果 | 说明 | | ------ | ---- | ---- | | 格式说明符与参数类型匹配 | ✅ 通过 | %dint%uunsigned%luunsigned long%s→字符串,均正确匹配 | | 格式字符串完整性 | ✅ 通过 | 移除的仅为前导空格字符,未破坏任何格式说明符 | | 参数数量与格式说明符一致 | ✅ 通过 | 未修改任何参数传递,仅修改格式字符串前缀 | | 新增格式化漏洞 | ✅ 无风险 | 无用户输入拼接到格式字符串,均为固定的tiling字段名 | ### 4. C++ 通用编码规范合规性(条款对照) | 规范编号 | 规范名称 | 适用性 | 合规性 | | -------- | -------- | ------ | ------ | | 1.1 | 外部数据合法性检查 | 不涉及 | N/A(无外部数据输入变更) | | 4.2 | 禁止使用魔鬼数字/字符串 | ✅ 合规 | 修改未引入魔鬼数字/字符串 | | 11.1 | 字符串存储确保有'\\0'结束符 | ✅ 合规 | 格式字符串为编译期常量,自动以'\\0'结尾 | | 1.3 | 删除无效冗余代码 | ✅ 合规 | 移除多余空格属于代码清理 | ### 5. 日志输出影响分析 **修改前日志示例**: ``` [opName] tiling.usedCoreNum 32 [opName] tiling.M 1024 ``` (注意opName]后的双空格) **修改后日志示例**: ``` [opName] tiling.usedCoreNum 32 [opName] tiling.M 1024 ``` (正常单空格分隔) **OP_LOGD宏展开分析**:OP_LOGD实现中,opName与格式字符串之间已有分隔符(通常为空格或]),格式字符串内的前导空格导致日志输出出现双空格[opName] message,移除后为标准单空格[opName] message。 ## ⚠️ 预存问题(非本次修改引入) ### 预存问题ID:PREEXIST-001 | 严重级别:LOW(代码风格) **代码路径**:matmul_reduce_scatter_tiling.cpp:152(修改后行号) **问题描述**:该行使用TAB缩进而其他行使用空格缩进,存在缩进不一致。 **代码片段**: ```cpp OP_LOGD("MatmulReduceScatter", "rcsTiling.storageGather %d", rcsTiling.storageGather); ``` **说明**:此问题为原代码预存问题,本次修改仅移除了前导空格,未改变缩进字符。不影响功能,仅影响代码风格一致性。建议在后续专项代码风格修复中统一处理。 ## 📊 检视结论 | 结论 | 说明 | | ---- | ---- | | 安全性 | **通过** - 无安全风险引入 | | 功能正确性 | **通过** - 仅修改日志格式字符串,不影响计算逻辑 | | 格式字符串安全 | **通过** - 所有格式说明符与参数类型正确匹配 | | 编码规范合规 | **通过** - 符合C++通用编码规范要求 | | 预存问题 | 1个LOW级代码风格问题(缩进不一致),非本次修改引入 | **检视结果:✅ 通过,无阻塞问题。** ## 报告生成时间 2026-05-09 09:44:00 ## 报告状态 已完成检视,通过 See merge request: cann/ops-transformer!504520 天前
mega_moe tiling refine Co-authored-by: lcttie<luchentao@huawei.com> # message auto-generated for no-merge-commit merge: !4941 merge master into master mega_moe tiling refine Created-by: lcttie Commit-by: lcttie Merged-by: cann-robot Description: ## 描述 1、调整 MegaMoeTilingData 部分属性的命名,提升可读性。 2、增加 cclBufferSize 和 Output 的校验 3、调整 ut 参数(cclBufferSize) 4、torch npu cclBufferSize 接口计算公式调整 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/2376 ## 测试 本地编译/验证、黄区编译 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [x] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!494117 天前
清理cmake多余依赖 Co-authored-by: gitee_lijd<lijiandong20@huawei.com> # message auto-generated for no-merge-commit merge: !4985 merge fix into master 清理cmake多余依赖 Created-by: gitcode_lijd Commit-by: gitee_lijd Merged-by: cann-robot Description: ## 描述 moe_distribute_combine、moe_distribute_dispatch等算子Host侧的CMakeLists.txt文件存在冗余依赖 影响编译效率及真实依赖识别 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/2319 <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 编译、二级冒烟 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: # 代码检视报告 ## 检视对象 - **规范**: C++ 通用编码规范(cpp-general.md) --- ## 检视结论 **✅ 可以提交** - 所有修改符合规范 1.3(删除冗余代码) --- ## 风险点 ### 1. API命名混乱(中等风险) **位置**: mc2/moe_distribute_combine_v2/op_api/aclnn_moe_distribute_combine_v3.h:10 **问题**: v3 API 位于 v2 目录,版本号与目录不匹配 **建议**: 后续重构命名规范或添加文档说明 --- ### 2. 移除依赖验证(低风险) **修改文件**: 5个 CMakeLists.txt **验证结果**: 所有移除的依赖均无代码引用,符合规范 | 文件 | 移除依赖 | 验证 | |------|---------|------| | moe_distribute_combine | dispatch, v3 | ✓ 无引用 | | moe_distribute_combine_add_rms_norm | dispatch, combine, v3 | ✓ 仅引用v2 | | moe_distribute_combine_v2 | dispatch_v3 | ✓ 无引用 | | moe_distribute_dispatch | dispatch_v3 | ✓ 无引用 | | moe_distribute_dispatch_setup | dispatch_v3 | ✓ 无引用 | --- ## 建议 1. 当前修改可保留 2. 后续优化 API 版本命名 3. 建议: ./build.sh && ./run_tests.sh 验证编译和测试 --- **规范引用**: 规则 1.3 删除无效、冗余或永不执行的代码 [适用: All] See merge request: cann/ops-transformer!498518 天前
清理cmake多余依赖 Co-authored-by: gitee_lijd<lijiandong20@huawei.com> # message auto-generated for no-merge-commit merge: !4985 merge fix into master 清理cmake多余依赖 Created-by: gitcode_lijd Commit-by: gitee_lijd Merged-by: cann-robot Description: ## 描述 moe_distribute_combine、moe_distribute_dispatch等算子Host侧的CMakeLists.txt文件存在冗余依赖 影响编译效率及真实依赖识别 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/2319 <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 编译、二级冒烟 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: # 代码检视报告 ## 检视对象 - **规范**: C++ 通用编码规范(cpp-general.md) --- ## 检视结论 **✅ 可以提交** - 所有修改符合规范 1.3(删除冗余代码) --- ## 风险点 ### 1. API命名混乱(中等风险) **位置**: mc2/moe_distribute_combine_v2/op_api/aclnn_moe_distribute_combine_v3.h:10 **问题**: v3 API 位于 v2 目录,版本号与目录不匹配 **建议**: 后续重构命名规范或添加文档说明 --- ### 2. 移除依赖验证(低风险) **修改文件**: 5个 CMakeLists.txt **验证结果**: 所有移除的依赖均无代码引用,符合规范 | 文件 | 移除依赖 | 验证 | |------|---------|------| | moe_distribute_combine | dispatch, v3 | ✓ 无引用 | | moe_distribute_combine_add_rms_norm | dispatch, combine, v3 | ✓ 仅引用v2 | | moe_distribute_combine_v2 | dispatch_v3 | ✓ 无引用 | | moe_distribute_dispatch | dispatch_v3 | ✓ 无引用 | | moe_distribute_dispatch_setup | dispatch_v3 | ✓ 无引用 | --- ## 建议 1. 当前修改可保留 2. 后续优化 API 版本命名 3. 建议: ./build.sh && ./run_tests.sh 验证编译和测试 --- **规范引用**: 规则 1.3 删除无效、冗余或永不执行的代码 [适用: All] See merge request: cann/ops-transformer!498518 天前
common目录整改 Co-authored-by: hello_simida<wangyi206@huawei.com> # message auto-generated for no-merge-commit merge: !4870 merge feature/common_dir_fix_v2 into master common目录整改 Created-by: hello_simida Commit-by: hello_simida Merged-by: cann-robot Description: ## 描述 本次修改对 common/ 目录进行整理,分为两个阶段: - **Phase 1**: 将 common/include/kernel/ 重命名为 common/include/op_kernel/ - **Phase 2**: 将 common/include/tiling_base/common/src/tiling_base/ 合并到 common/include/op_host/common/src/op_host/ 相应的 CMake 配置和所有 #include 路径引用已同步更新。 影响范围: - 351 个文件修改(include 路径更新) - 8 个文件重命名(tiling_base → op_host) - 2 个 CMakeLists.txt 修改 + 多个 tests 目录 CMakeLists.txt 更新 ## 关联的Issue Closes #2246 ## 测试 - 编译验证通过:bash build.sh --pkg --soc=ascend910b --ops=all_gather_matmul_v2 -j16 - 编译产物成功生成 .run 包 ## 文档更新 无 ## 类型标签 - [x] ♻️ 重构 - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!487022 天前
common目录整改 Co-authored-by: hello_simida<wangyi206@huawei.com> # message auto-generated for no-merge-commit merge: !4870 merge feature/common_dir_fix_v2 into master common目录整改 Created-by: hello_simida Commit-by: hello_simida Merged-by: cann-robot Description: ## 描述 本次修改对 common/ 目录进行整理,分为两个阶段: - **Phase 1**: 将 common/include/kernel/ 重命名为 common/include/op_kernel/ - **Phase 2**: 将 common/include/tiling_base/common/src/tiling_base/ 合并到 common/include/op_host/common/src/op_host/ 相应的 CMake 配置和所有 #include 路径引用已同步更新。 影响范围: - 351 个文件修改(include 路径更新) - 8 个文件重命名(tiling_base → op_host) - 2 个 CMakeLists.txt 修改 + 多个 tests 目录 CMakeLists.txt 更新 ## 关联的Issue Closes #2246 ## 测试 - 编译验证通过:bash build.sh --pkg --soc=ascend910b --ops=all_gather_matmul_v2 -j16 - 编译产物成功生成 .run 包 ## 文档更新 无 ## 类型标签 - [x] ♻️ 重构 - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!487022 天前
combine support 10240 hidden size and 1024 moe expert num Co-authored-by: ryan_li<liyang843@h-partners.com> # message auto-generated for no-merge-commit merge: !2402 merge combine_h10240 into master combine support 10240 hidden size and 1024 moe expert num Created-by: ryan_li Commit-by: ryan_li Merged-by: cann-robot Description: ## 描述 combine support 10240 hidden size and 1024 moe expert num ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-transformer!240217 天前
MC2 exception dump fit beta cann version Co-authored-by: lcttie<luchentao@huawei.com> # message auto-generated for no-merge-commit merge: !4827 merge master into master MC2 exception dump fit beta cann version Created-by: lcttie Commit-by: lcttie Merged-by: cann-robot Description: ## 描述 1、当使用社区版本(如 alpha, beta)的 cann 9.0.0 时,接口 aclsysGetVersionNum 会获取到一个小于 90000000 的版本号(依据 RTS 描述,该设计是为了通过版本号识别发布的先后顺序,因此 beta 的版本号是 90000000 减去一个小的值而不是加一个小的值)。 2、版本号判断后日志级别修正,由 ERROR 级别转为 WARNING 级别。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> DTS2604280014971 ## 测试 本地编译/验证、黄区编译、二级冒烟 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!482723 天前
清理cmake多余依赖 Co-authored-by: gitee_lijd<lijiandong20@huawei.com> # message auto-generated for no-merge-commit merge: !4985 merge fix into master 清理cmake多余依赖 Created-by: gitcode_lijd Commit-by: gitee_lijd Merged-by: cann-robot Description: ## 描述 moe_distribute_combine、moe_distribute_dispatch等算子Host侧的CMakeLists.txt文件存在冗余依赖 影响编译效率及真实依赖识别 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/2319 <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 编译、二级冒烟 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: # 代码检视报告 ## 检视对象 - **规范**: C++ 通用编码规范(cpp-general.md) --- ## 检视结论 **✅ 可以提交** - 所有修改符合规范 1.3(删除冗余代码) --- ## 风险点 ### 1. API命名混乱(中等风险) **位置**: mc2/moe_distribute_combine_v2/op_api/aclnn_moe_distribute_combine_v3.h:10 **问题**: v3 API 位于 v2 目录,版本号与目录不匹配 **建议**: 后续重构命名规范或添加文档说明 --- ### 2. 移除依赖验证(低风险) **修改文件**: 5个 CMakeLists.txt **验证结果**: 所有移除的依赖均无代码引用,符合规范 | 文件 | 移除依赖 | 验证 | |------|---------|------| | moe_distribute_combine | dispatch, v3 | ✓ 无引用 | | moe_distribute_combine_add_rms_norm | dispatch, combine, v3 | ✓ 仅引用v2 | | moe_distribute_combine_v2 | dispatch_v3 | ✓ 无引用 | | moe_distribute_dispatch | dispatch_v3 | ✓ 无引用 | | moe_distribute_dispatch_setup | dispatch_v3 | ✓ 无引用 | --- ## 建议 1. 当前修改可保留 2. 后续优化 API 版本命名 3. 建议: ./build.sh && ./run_tests.sh 验证编译和测试 --- **规范引用**: 规则 1.3 删除无效、冗余或永不执行的代码 [适用: All] See merge request: cann/ops-transformer!498518 天前
[AICPU] 算子根据环境变量选择commMode通信引擎 Co-authored-by: libohao6<libohao3@huawei.com> # message auto-generated for no-merge-commit merge: !4961 merge aicpu_only into master [AICPU] 算子根据环境变量选择commMode通信引擎 Created-by: libohao6 Commit-by: libohao6 Merged-by: cann-robot Description: ## 描述 [AICPU] 算子根据环境变量选择commMode通信引擎 #4961 ## 关联的Issue [Requirement|需求建议]: [AICPU] 算子根据环境变量选择commMode通信引擎 #4961 #2354 ## 测试 level0测试。 ## 文档更新 不涉及。 ## 类型标签 <!-- [x] 表示选中 --> - [.] 🐛 Bug 修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: # MC2代码检视报告 - MR#4961 ## 基本信息 | 项目 | 内容 | |------|------| | MR编号 | #4961 | | 分支 | aicpu_only | | Commit | c3c02630a | | 检视时间 | 2026-05-11 | | 检视人 | AI Code Reviewer | ## 修改概述 支持ENV_MC2_COMM_MODE_AICPU环境变量切换CCU/AICPU通信模式: 1. 新增Mc2Comm::GetCommModeFromEnv()统一环境变量读取入口(header-only) 2. 全层级环境变量判断: aclnn + gen_task + tiling + kernel 3. gen_task结合平台判断(A5→CCU, 非A5→AICPU) + 环境变量覆盖 4. Kernel层HcclTypeSelector模板选择HCCL服务器类型 5. tilingKey删除D_T_MM和TILINGKEY_MM维度,模板实例数减少67% ## 检视范围 - mc2/common/utils/mc2_comm_utils.h - mc2/allto_allv_quant_grouped_mat_mul/op_kernel/mc2_templates/communication/hccl_a2av_op.h - mc2/allto_allv_grouped_mat_mul/op_kernel/allto_allv_grouped_mat_mul_coarse_grained.h - mc2/allto_allv_quant_grouped_mat_mul/op_host/op_tiling/arch35/allto_allv_quant_grouped_mat_mul_tiling_common.cpp - mc2/allto_allv_grouped_mat_mul/op_host/op_tiling/allto_allv_grouped_mat_mul_tiling.cpp --- ## MC2领域规则检视 ### 规则对照分析 | 规则ID | 规则名称 | 检视结果 | 说明 | |--------|----------|----------|------| | MC2-01 | 核间同步必要性 | ✅ 合规 | 本次修改未新增循环结构调用通信API | | MC2-02 | 流同步正确性 | ✅ 合规 | 未涉及SetFlag/WaitFlag修改 | | MC2-03 | SyncAll同步生效 | ✅ 合规 | 未涉及SyncAll修改 | | MC2-04 | 全局操作一致性 | ✅ 合规 | 环境变量全局生效,所有rank参数一致 | | MC2-16 | 编译规范 | ✅ 合规 | 正确使用ASC_DEVKIT_MAJOR宏隔离 | --- ## 潜在风险点分析 ### 1. 环境变量线程安全性(低风险) **代码位置**: mc2/common/utils/mc2_comm_utils.h **代码片段**: ```cpp inline uint8_t GetCommModeFromEnv() { auto commModeEnv = getenv(COMM_MODE_ENV); // getenv非线程安全 if (commModeEnv != nullptr) { return COMM_MODE_AICPU; } return COMM_MODE_CCU; } ``` **假设检验**: - 原假设H0:代码线程安全 - 证据:getenv()是非线程安全的POSIX函数(C标准) - 自信值:30%(低风险) **结论**: 低风险,算子执行前环境变量已稳定,无需修改。 --- ### 2. HcclTypeSelector模板默认值一致性(无风险) **代码位置**: - mc2/allto_allv_quant_grouped_mat_mul/op_kernel/mc2_templates/communication/hccl_a2av_op.h - mc2/allto_allv_grouped_mat_mul/op_kernel/allto_allv_grouped_mat_mul_coarse_grained.h **代码片段**: ```cpp // 量化算子 template<int commMode = TILINGKEY_TPL_CCU> struct HcclTypeSelector { using type = Hccl<HcclServerType::HCCL_SERVER_TYPE_CCU>; // 默认CCU }; // 非量化算子 template<int commMode = CCU_COMM_MODE> struct HcclTypeSelector { using type = Hccl<HcclServerType::HCCL_SERVER_TYPE_CCU>; // 默认CCU }; ``` **假设检验**: - 原假设H0:两个算子默认值一致 - 证据:两者默认值都为CCU(0),一致 - 自信值:0%(无风险) **结论**: ✅ 合规,默认行为一致。 --- ## 环境变量逻辑验证 ### 默认行为(无环境变量) | 层级 | 平台 | 默认行为 | |------|------|----------| | mc2_comm_utils.h | - | 返回CCU(0) | | gen_task | A5 | CCU server/stream | | gen_task | 非A5 | AICPU server/stream | | aclnn | - | NnopbaseSetHcclServerType(CCU) | | tiling | - | SetCommEngine(CCU_ENGINE) | | kernel | - | HCCL_SERVER_TYPE_CCU | ### 强制AICPU行为(设置ENV_MC2_COMM_MODE_AICPU) | 层级 | 行为 | |------|------| | mc2_comm_utils.h | 返回AICPU(1) | | gen_task | 强制aicpu kfc server | | aclnn | NnopbaseSetHcclServerType(AICPU) | | tiling | SetCommEngine(AICPU_ENGINE) | | kernel | HCCL_SERVER_TYPE_AICPU | --- ## 总体结论 **✅ 代码检视通过** 本次修改符合MC2领域规则: - 无新增同步风险点 - HCCL模板选择正确 - 编译规范合规 - 全局参数一致性保证 - 环境变量逻辑清晰,默认行为与原代码一致 --- ## 附录 ### MR链接 https://gitcode.com/cann/ops-transformer/merge_requests/4961 ### Commit链接 https://gitcode.com/cann/ops-transformer/commit/c3c02630a See merge request: cann/ops-transformer!496117 天前
revert:对mc2的tilingKey进行宏编译处理 Co-authored-by: hblnb<huangbolin3@huawei.com> # message auto-generated for no-merge-commit merge: !5025 merge revert-mr-4332-1778221340412-auto into master revert:对mc2的tilingKey进行宏编译处理 Created-by: hblnb Commit-by: hblnb Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!502521 天前
combine support 10240 hidden size and 1024 moe expert num Co-authored-by: ryan_li<liyang843@h-partners.com> # message auto-generated for no-merge-commit merge: !2402 merge combine_h10240 into master combine support 10240 hidden size and 1024 moe expert num Created-by: ryan_li Commit-by: ryan_li Merged-by: cann-robot Description: ## 描述 combine support 10240 hidden size and 1024 moe expert num ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-transformer!240217 天前
提升moe_distribue_dispatch_setup,moe_distribue_dispatch_teardown算子以及相关依赖ut覆盖率 Co-authored-by: chenyifan<chenyifan66@h-partners.com> # message auto-generated for no-merge-commit merge: !5162 merge mdd_v2_ut into master 提升moe_distribue_dispatch_setup,moe_distribue_dispatch_teardown算子以及相关依赖ut覆盖率 Created-by: mutex_lock Commit-by: chenyifan Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 提升moe_distribue_dispatch_setup,moe_distribue_dispatch_teardown算子以及相关依赖ut覆盖率 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-transformer/issues/2341 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [x] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!516217 天前
修改mc2目录下的arch32为arch22 Co-authored-by: hblnb<huangbolin3@huawei.com> # message auto-generated for no-merge-commit merge: !4314 merge change_A2A3_arch into master 修改mc2目录下的arch32为arch22 Created-by: hblnb Commit-by: hblnb Merged-by: cann-robot Description: ## 描述 修改mc2目录下的arch32为arch22 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!43141 个月前
quant_all_reduce/quant_reduce_scatter 动态分块性能优化 Co-authored-by: mmh<miaominghao@huawei.com> # message auto-generated for no-merge-commit merge: !5147 merge perf_write_status_leader_v2 into master quant_all_reduce/quant_reduce_scatter 动态分块性能优化 Created-by: andingfangt Commit-by: mmh Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-transformer/issues/2391 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: # 代码检视报告 **检视对象**:QAR/QRS 算子代码优化整改(commit 2610fdae7+) **检视范围**:9 个文件(4 Kernel + 2 Tiling + 1 Utils + 1 MTE Comm + 1 UT) **检视规范**:C++ 安全编码规范、C++ 代码风格规范、Ascend C API 最佳实践、TOPK 问题清单 --- ## 检视总结 | 类别 | 问题数 | |------|--------| | 安全问题 | 0 | | API 规范违反 | 0 | | 风格问题 | 0 | | 潜在关注 | 0 | --- ## 逐项检视结果 ### 1. 数值安全(cpp-secure 2.1/2.2/2.3) **代码段**:FracDiv(remainingSpace, baseDynamic, 32U, 3U) **H0**:计算安全,无溢出/回绕/除零 - **2.1/2.2 溢出检查**:remainingSpace * 32 最坏约 8MB(UB=256KB),远小于 uint64_t 上限;baseDynamic * 32 + 3 最坏约 770,均安全 - **2.3 除零检查**:分母 baseDynamic * num + den,baseDynamic 最小为 sizeof 表达式(≥ 12),num ≥ 4,den ≥ 1,永不为零 **自信值**:0%(工具验证:GCC 数值测试均无溢出) → **PASS** --- ### 2. API 使用安全(ascendc-api) **AllocTensor/FreeTensor 配对(API-6)**:两个 kernel 文件各 2:2 精确配对 **PASS** **Cast RoundMode(API-9)**:全部使用 CAST_NONE,均为向上 cast(fp4/int8→fp32),无需舍入 **PASS** **DataCopy blockLen(API-10)**:所有 blockLen = scaleNum * sizeof(T) 均为字节单位,配合 DataCopyPad 使用,正确 **PASS** --- ### 3. 结构体兼容性(cpp-secure 10.4/10.5) **TilingInfo 新增字段**:xPerBlock(uint32_t)和 alignBlock(uint32_t)均添加在结构体末尾,符合"对外结构体新增字段必须在最后"规范 **PASS** **UT 同步更新**:expectTilingData 已更新,测试 108/108 PASS **PASS** --- ### 4. 未使用变量/死代码(cpp-secure 3.1) - alignedXSize_ 已删除 **PASS** - xSliceSize_ 已改为局部变量 **PASS** - VectorCompute 新增 scaleNumsPerBlock_{0}SetScaleNums()vecComp_.InitBuffer() 前调用 **PASS** --- ### 5. 风格规范(cpp-style) - 行宽 120 字符:ReadDataBlockReduceSum 声明已换行修复 **PASS** - 成员变量命名:scaleInQue_ 统一加下划线后缀 **PASS** - if 大括号:全部满足 **PASS** --- ### 6. TOPK 问题清单 - **TOPK-8(GM 偏移用 int64)**:xOffset_/scaleOffset_ 等偏移变量均为 uint64_t **PASS** - **TOPK-12(宏临时变量)**:FracDiv 为内联函数,非宏 **PASS** --- ## 潜在关注 无。上一版报告的 scaleNumsPerBlcok_ 拼写已修复为 scaleNumsPerBlock_。 --- ## 最终判定 **无安全问题、无 API 规范违反、无风格问题。108 个 UT 全部通过,精度 100% PASS,性能无回退。代码质量达标。** See merge request: cann/ops-transformer!514716 天前
gmmalltoallv增加通信引擎说明 Co-authored-by: huangshuai<huangshuai59@huawei.com> # message auto-generated for no-merge-commit merge: !5075 merge dts into master gmmalltoallv增加通信引擎说明 Created-by: huangshuai59 Commit-by: huangshuai Merged-by: cann-robot Description: ## 描述 gmmalltoallv增加通信引擎说明 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/2315 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 https://gitcode.com/cann/ops-transformer/blob/master/mc2/quant_grouped_mat_mul_allto_allv/README.md https://gitcode.com/cann/ops-transformer/blob/master/mc2/quant_grouped_mat_mul_allto_allv/docs/aclnnQuantGroupedMatMulAlltoAllv.md https://gitcode.com/cann/ops-transformer/blob/master/mc2/grouped_mat_mul_allto_allv/README.md https://gitcode.com/cann/ops-transformer/blob/master/mc2/grouped_mat_mul_allto_allv/docs/aclnnGroupedMatMulAlltoAllv.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!507517 天前
quant_all_reduce/quant_reduce_scatter 动态分块性能优化 Co-authored-by: mmh<miaominghao@huawei.com> # message auto-generated for no-merge-commit merge: !5147 merge perf_write_status_leader_v2 into master quant_all_reduce/quant_reduce_scatter 动态分块性能优化 Created-by: andingfangt Commit-by: mmh Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-transformer/issues/2391 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: # 代码检视报告 **检视对象**:QAR/QRS 算子代码优化整改(commit 2610fdae7+) **检视范围**:9 个文件(4 Kernel + 2 Tiling + 1 Utils + 1 MTE Comm + 1 UT) **检视规范**:C++ 安全编码规范、C++ 代码风格规范、Ascend C API 最佳实践、TOPK 问题清单 --- ## 检视总结 | 类别 | 问题数 | |------|--------| | 安全问题 | 0 | | API 规范违反 | 0 | | 风格问题 | 0 | | 潜在关注 | 0 | --- ## 逐项检视结果 ### 1. 数值安全(cpp-secure 2.1/2.2/2.3) **代码段**:FracDiv(remainingSpace, baseDynamic, 32U, 3U) **H0**:计算安全,无溢出/回绕/除零 - **2.1/2.2 溢出检查**:remainingSpace * 32 最坏约 8MB(UB=256KB),远小于 uint64_t 上限;baseDynamic * 32 + 3 最坏约 770,均安全 - **2.3 除零检查**:分母 baseDynamic * num + den,baseDynamic 最小为 sizeof 表达式(≥ 12),num ≥ 4,den ≥ 1,永不为零 **自信值**:0%(工具验证:GCC 数值测试均无溢出) → **PASS** --- ### 2. API 使用安全(ascendc-api) **AllocTensor/FreeTensor 配对(API-6)**:两个 kernel 文件各 2:2 精确配对 **PASS** **Cast RoundMode(API-9)**:全部使用 CAST_NONE,均为向上 cast(fp4/int8→fp32),无需舍入 **PASS** **DataCopy blockLen(API-10)**:所有 blockLen = scaleNum * sizeof(T) 均为字节单位,配合 DataCopyPad 使用,正确 **PASS** --- ### 3. 结构体兼容性(cpp-secure 10.4/10.5) **TilingInfo 新增字段**:xPerBlock(uint32_t)和 alignBlock(uint32_t)均添加在结构体末尾,符合"对外结构体新增字段必须在最后"规范 **PASS** **UT 同步更新**:expectTilingData 已更新,测试 108/108 PASS **PASS** --- ### 4. 未使用变量/死代码(cpp-secure 3.1) - alignedXSize_ 已删除 **PASS** - xSliceSize_ 已改为局部变量 **PASS** - VectorCompute 新增 scaleNumsPerBlock_{0}SetScaleNums()vecComp_.InitBuffer() 前调用 **PASS** --- ### 5. 风格规范(cpp-style) - 行宽 120 字符:ReadDataBlockReduceSum 声明已换行修复 **PASS** - 成员变量命名:scaleInQue_ 统一加下划线后缀 **PASS** - if 大括号:全部满足 **PASS** --- ### 6. TOPK 问题清单 - **TOPK-8(GM 偏移用 int64)**:xOffset_/scaleOffset_ 等偏移变量均为 uint64_t **PASS** - **TOPK-12(宏临时变量)**:FracDiv 为内联函数,非宏 **PASS** --- ## 潜在关注 无。上一版报告的 scaleNumsPerBlcok_ 拼写已修复为 scaleNumsPerBlock_。 --- ## 最终判定 **无安全问题、无 API 规范违反、无风格问题。108 个 UT 全部通过,精度 100% PASS,性能无回退。代码质量达标。** See merge request: cann/ops-transformer!514716 天前
书写错误修改 Co-authored-by: lu-zhirui<luzhirui2@h-partners.com> # message auto-generated for no-merge-commit merge: !4987 merge moe一站式维护工具打屏错别字修复 into master 书写错误修改 Created-by: lu-zhirui Commit-by: lu-zhirui Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!498722 天前
mc2新特性开发 Co-authored-by: xutianze<xutianze2@huawei.com> # message auto-generated for no-merge-commit merge: !500 merge feature_mc2 into master mc2新特性开发 Created-by: xutianze Commit-by: xutianze Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-transformer!5005 个月前