文件最后提交记录最后更新时间
init 7 个月前
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 个月前
move fallback files to op graph lib Co-authored-by: liusixia<liusixia@h-partners.com> # message auto-generated for no-merge-commit merge: !4133 merge master into master move fallback files to op graph lib Created-by: liusixia_gitcode Commit-by: liusixia Merged-by: cann-robot Description: ## 描述 动态图相关:仓内aclnn回调的fallback文件,在内置工程(built-in pkg)下,由ophost.so 改为编入opgraph.so中;自定义工程(custom pkg)下,保持不变。 其中,mc2算子的fallback文件当前均include了依赖tiling的头文件(mc2_log.h),统一将其与tiling解耦,使用mc2_common_log.h。 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/1844 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [x] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!41331 个月前
gmmalltoallv算子AICPU适配 Co-authored-by: huangshuai<huangshuai59@huawei.com> # message auto-generated for no-merge-commit merge: !4970 merge AICPU_dev into master gmmalltoallv算子AICPU适配 Created-by: huangshuai59 Commit-by: huangshuai Merged-by: cann-robot Description: ## 描述 gmmalltoallv算子AICPU适配 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/2410 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: # PR #4970 代码检视报告 **检视对象**: https://gitcode.com/cann/ops-transformer/pull/4970 **检视时间**: 2026-05-12 **检视模式**: PR检视(重点关注红线和TOPK问题) **检视范围**: Host侧代码(op_api、op_graph、op_host目录) --- ## 一、变更概览 本次PR实现**通信模式可配置化**,允许通过环境变量 ENV_MC2_COMM_MODE_AICPU 在A5平台选择AICPU或CCU通信模式。 **变更文件统计**: - op_api层:2个文件 - op_graph层:2个文件 - op_host层:4个文件 - op_kernel层:4个文件(本次重点检视Host侧) - 测试文件:1个 --- ## 二、红线问题检视结果 ### ✅ 红线1: Host侧除法/求余除零保护 **结论**: PASS **依据**: 本次变更未新增除法或求余运算,无需除零保护。 --- ### ✅ 红线2: Host侧数组访问越界保护 **结论**: PASS **依据**: 本次变更未新增数组访问逻辑,无需越界保护。 --- ### ✅ 红线3: Host侧数值运算溢出保护 **结论**: PASS **依据**: - 新增的 commMode 变量为 uint8_t 类型,取值范围有限(0-255) - 未涉及大数值运算,不存在溢出风险 --- ### ✅ 红线4: Host侧指针操作安全性 **结论**: PASS(附带建议) **分析**: 涉及指针初始化的代码: ```cpp const char* serverType = nullptr; const char* streamType = nullptr; if (commMode == Mc2Comm::COMM_MODE_AICPU) { streamType = "kfc_stream"; serverType = "aicpu kfc server"; } else if (isA5) { streamType = "ccu_stream"; serverType = "ccu server"; } else { streamType = "kfc_stream"; serverType = "aicpu kfc server"; } return Mc2GenTaskOpsUtils::CommonKFCMc2CalcParamFunc(context, serverType, streamType); ``` **安全性验证**: 1. if-else分支覆盖所有情况(commMode-AICPU、A5-CCU、其他),不存在未赋值的路径 2. 赋值为字符串常量,非动态内存,无需释放 3. serverType/streamType 调用时已确保非nullptr **建议**: 虽然逻辑安全,但初始化为nullptr可能引起疑虑。可考虑: ```cpp const char* serverType = "aicpu kfc server"; // 默认值 const char* streamType = "kfc_stream"; ``` --- ### ✅ 红线5: 变量初始化检查 **结论**: PASS **依据**: - 所有新增变量均有初始化:uint8_t commMode = Mc2Comm::GetCommModeFromEnv() - 指针变量显式初始化为nullptr,符合规范 --- ### ✅ 纠线6: 资源申请释放匹配 **结论**: PASS **依据**: 本次变更未新增资源申请(malloc/new等),无需匹配检查。 --- ## 三、TOPK问题检视结果 ### ✅ TOPK-1: 函数返回值校验 **结论**: PASS **分析**: Mc2Comm::GetCommModeFromEnv() 返回 uint8_t 类型,非指针类型,无需判空检查。 **代码示例**: ```cpp uint8_t commMode = Mc2Comm::GetCommModeFromEnv(); if (commMode == Mc2Comm::COMM_MODE_AICPU) { // 直接比较,无指针风险 ... } ``` **建议**: 需确认 mc2_comm_utils.h 中该函数实现有默认返回值,避免环境变量未设置时返回未定义值。 --- ### ✅ TOPK-2: 使用GetInputDesc获取Dtype **结论**: 未涉及 **依据**: 本次变更未涉及Shape/Dtype获取逻辑。 --- ### ✅ TOPK-4: 属性从context获取 **结论**: 未涉及 **依据**: 本次变更未新增属性获取逻辑。 --- ### ✅ TOPK-8: GM内存偏移用int64 **结论**: PASS **依据**: Kernel侧变更未新增GM内存偏移计算,现有代码已符合规范。 --- ### ✅ TOPK-10: 可整数计算不转浮点 **结论**: PASS **依据**: 本次变更未新增数值计算,未涉及浮点转换。 --- ### ✅ TOPK-12: 宏定义变量命名冲突 **结论**: PASS **依据**: 本次变更未新增宏定义。 --- ## 四、其他发现 ### 1. LOG API使用规范性检查 ✅ **分析**: 所有新增日志调用符合规范: - 参数数量与占位符匹配 - 类型匹配正确(commModeuint8_t,使用 %u) - 无空指针传入风险 **示例**: ```cpp OP_LOGD(context->GetNodeName(), "GmmAlltoAllv tiling: commMode=%u", commMode); ``` --- ### 2. 条件编译改为运行时配置 ⚠️(需关注) **变更**: 原Kernel侧使用 #if defined(__NPU_ARCH__) 条件编译选择HCCL类型,现改为模板参数。 **影响**: - 提升灵活性,支持运行时切换 - 需确保 TilingKey 计算正确反映 commMode **代码验证**: ```cpp template<int commMode = CCU_COMM_MODE> struct HcclTypeSelector { using type = Hccl<HcclServerType::HCCL_SERVER_TYPE_CCU>; }; template<> struct HcclTypeSelector<AICPU_COMM_MODE> { using type = Hccl<HcclServerType::HCCL_SERVER_TYPE_AICPU>; }; ``` **建议**: 模板特化实现正确,确保编译期选择符合预期。 --- ## 五、检视总结 | 检视维度 | 结果 | 风险等级 | |---------|------|---------| | **红线问题** | 6项全部PASS | 无高风险 | | **TOPK问题** | 重点项全部PASS | 无高风险 | | **LOG API规范** | 符合规范 | 无风险 | | **架构变更** | 合理,需关注测试 | 中等 | --- ## 六、建议事项 ### 1. 测试覆盖(必做) - 验证环境变量 ENV_MC2_COMM_MODE_AICPU 未设置时的默认行为 - 验证A5平台CCU模式、AICPU模式的正确性 - 验证非A5平台的行为一致性 ### 2. 文档更新(建议) - 补充环境变量配置说明 - 说明通信模式选择的影响范围 ### 3. 代码优化(可选) - 考虑为 serverType/streamType 设置明确的默认值,避免nullptr初始化疑虑 --- ## 七、检视结论 **最终判定**: **PASS WITH NOTES** **依据**: - 红线和TOPK问题全部通过,无阻塞性缺陷 - 代码逻辑清晰,符合安全规范 - 唯一需关注:新增运行时配置逻辑需充分测试验证 **建议后续**: 1. 补充单元测试覆盖通信模式切换 2. 更新测试用例 expectTilingKey 已正确调整(137→1),需验证其他场景 3. 提交前确认环境变量解析函数有默认返回值 --- **检视人**: CANNBot Agent **检视日期**: 2026-05-12 See merge request: cann/ops-transformer!497020 天前
新增AlltoAllvQuantGroupedMatmul、QuantGroupedMatmulAlltoAllv算子 Co-authored-by: libohao6<libohao3@huawei.com> Co-authored-by: huangshuai<huangshuai59@huawei.com> # message auto-generated for no-merge-commit merge: !2548 merge alltoallv_v2 into master 新增AlltoAllvQuantGroupedMatmul、QuantGroupedMatmulAlltoAllv算子 Created-by: libohao6 Commit-by: huangshuai;libohao6 Merged-by: cann-robot Description: ## 描述 新增AlltoAllvQuantGroupedMatmul、QuantGroupedMatmulAlltoAllv算子 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 二级冒烟 ## 文档更新 更新了AlltoAllvQuantGroupedMatmul、QuantGroupedMatmulAlltoAllv的aclnn文档。 ## 类型标签 <!-- [x] 表示选中 --> - [X] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!25482 个月前