本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
恢复--tiling_key入参编译&&适配Hcomm路径&&优化pr类型标签样式 Co-authored-by: lidongsheng<lidongsheng43@huawei.com> # message auto-generated for no-merge-commit merge: !2340 merge cmake into master 恢复--tiling_key入参编译&&适配Hcomm路径&&优化pr类型标签样式 Created-by: qq_46353993 Commit-by: lidongsheng Merged-by: cann-robot Description: ## 描述 本次修改共涉及三个内容,描述如下: 1. 恢复--tiling_key入参,支持部分还未模板化整改的算子使用。 2. 适配Hcomm路径。HCCL老仓下线,原${TOP_DIR}/ace/comop路径已废弃,需要整改为新路径${TOP_DIR}/hcomm、${TOP_DIR}/hccl。 3. 优化pr的类型标签样式。 ## 关联的Issue [--tiling_key参数未支持,部分未模板化算子还需要使用](https://gitcode.com/cann/ops-transformer/issues/1086) [适配Hcomm路径](https://gitcode.com/cann/ops-transformer/issues/1108) [扩充和美化PR的类型标签](https://gitcode.com/cann/ops-transformer/issues/932) ## 测试 编译触发、二级冒烟、--tiling_key入参编译与用例执行、--kernel_template_input入参编译与用例执行 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-transformer!2340 | 5 个月前 | |
通过gitmodules引入third_party/catlass Co-authored-by: longjihui<longjihui@huawei.com> # message auto-generated for no-merge-commit merge: !1765 merge master into master 通过gitmodules引入third_party/catlass Created-by: longjihui Commit-by: longjihui Merged-by: cann-robot Description: ## 描述 新增.gitmodules文件,引入第三方库catlass,分支为v1.3.1-notla ## 关联的Issue 不涉及 ## 测试 仅引入三方仓,使用方式暂不确定,无需测试 ## 文档更新 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:新引入三方仓catlass See merge request: cann/ops-transformer!1765 | 4 个月前 | |
tiling拦截修改 Co-authored-by: liujiawei-21<liujiawei56@huawei.com> # message auto-generated for no-merge-commit merge: !4313 merge master into master tiling拦截修改 Created-by: liujiawei-21 Commit-by: liujiawei-21 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 本次PR旨在增强fused_infer_attention_score算子的输入校验逻辑,提升其健壮性和可靠性。主要解决了三个问题:优化了query与output形状不匹配时的错误信息清晰度;新增了对value张量与输出张量在head维度上的一致性检查,并扩展了对NTD布局下key张量head维度的支持;修复了RoPE(旋转位置编码)拆分模式下仅检查query而忽略key张量维度的问题,确保两者维度一致。 修改方案描述 修改方案主要包括三部分核心内容:首先,在CheckQueryOutConsistency函数中调整错误日志格式,使维度信息更易读。其次,新增CheckValueOutDConsistency函数,用于校验value与output在head维度的一致性,并扩展CheckKeyNHVaild函数以支持NTD布局。最后,在FiaInfoParser::GetRopeHeadDim函数中,为拆分RoPE模式新增了对key张量维度的解析与相等性检查。所有新增和修改的检查均已集成到主校验流程中,完善了算子在不同布局和配置下的防御性校验。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> [#1928](https://gitcode.com/cann/ops-transformer/issues/1928) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!4313 | 4 个月前 | |
删除level2里面重复安装的新算子 Co-authored-by: qzzzy1<qiziyu2@huawei.com> # message auto-generated for no-merge-commit merge: !4234 merge master into master 删除level2里面重复安装的新算子 Created-by: qzzzy1 Commit-by: qzzzy1 Merged-by: cann-robot Description: ## 描述 删除level2里面重复安装的m2新算子 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> 1894 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 在aclnnop目录下进行查找新算子,看一下会出现几次 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!4234 | 4 个月前 | |
matmul alltoall fusion pass from canndev to transformer Co-authored-by: liusixia_gitcode<liusixia@h-partners.com> # message auto-generated for no-merge-commit merge: !3241 merge master into master matmul alltoall fusion pass from canndev to transformer Created-by: liusixia_gitcode Commit-by: liusixia_gitcode Merged-by: cann-robot Description: ## 描述 以matmul alltoall算子为例,使能transformer仓fusion pass文件。新fusion pass文件使用GE ES APIs,基于Pattern方式构图。 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/1803 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [x] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!3241 | 4 个月前 | |
项目readme大纲结构调整 Co-authored-by: huang-chuhong<huangchuhong1@h-partners.com> # message auto-generated for no-merge-commit merge: !4195 merge master into master 项目readme大纲结构调整 Created-by: huang-chuhong Commit-by: huang-chuhong Merged-by: cann-robot Description: ## 描述 项目readme大纲结构调整 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/1883 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!4195 | 4 个月前 | |
incre_flash_attention_metadata添加参数校验防御 Co-authored-by: ChengjiaWu<wuchengjia1@h-partners.com> # message auto-generated for no-merge-commit merge: !4091 merge master into master incre_flash_attention_metadata添加参数校验防御 Created-by: ChengjiaWu Commit-by: ChengjiaWu Merged-by: cann-robot Description: ## 描述 incre_flash_attention_metadata添加参数校验防御 ## 关联的Issue [Bug-Report|缺陷反馈]: IncreFlashAttentionMeta算子接口防御增强 [#1835](https://gitcode.com/cann/ops-transformer/issues/1835) ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [x] ❓ 其他,请描述:添加防御 See merge request: cann/ops-transformer!4091 | 4 个月前 | |
删除experimental仓中dispatch、combine_shmem示例代码 Co-authored-by: yangzeheng<yangzeheng@huawei.com> # message auto-generated for no-merge-commit merge: !4218 merge master into master 删除experimental仓中dispatch、combine_shmem示例代码 Created-by: yangzeheng Commit-by: yangzeheng Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [x] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!4218 | 4 个月前 | |
修改swin_attention_ffn/swin_transformer_ln_qkv算子文档 Co-authored-by: yolic<chenyuning1@huawei.com> # message auto-generated for no-merge-commit merge: !4203 merge 0415readme into master 修改swin_attention_ffn/swin_transformer_ln_qkv算子文档 Created-by: yolic Commit-by: yolic Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 修改swin_attention_ffn/swin_transformer_ln_qkv算子文档 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> 关联Issue [#1520](https://gitcode.com/cann/ops-transformer/issues/1520) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 更新了swin_attention_ffn/swin_transformer_ln_qkv算子文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!4203 | 4 个月前 | |
quantGroupedMatmulDeuqant move opapi to parent dir Co-authored-by: guijianwei<guijianwei@huawei.com> # message auto-generated for no-merge-commit merge: !3634 merge master into master quantGroupedMatmulDeuqant move opapi to parent dir Created-by: guijianwei Commit-by: guijianwei Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 【重构】quantGroupedMatmulDeuqant opapi 迁移到父目录同级目录下 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> Issue #1843 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 泛化测试OK ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [x] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!3634 | 4 个月前 | |
sc debug Co-authored-by: zdy1205<zhaodeyang@hisilicon.com> # message auto-generated for no-merge-commit merge: !3900 merge master into master sc debug Created-by: zdy1205 Commit-by: zdy1205 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-transformer/issues/1811 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!3900 | 4 个月前 | |
mhc_post_backward A2/A3支持 | 4 个月前 | |
moeGatingTopK支持renorm=1场景 Co-authored-by: ZhouChuping<zhouchuping1@huawei.com> # message auto-generated for no-merge-commit merge: !3673 merge master-topk-renorm into master moeGatingTopK支持renorm=1场景 Created-by: ZhouChuping Commit-by: ZhouChuping Merged-by: cann-robot Description: ## 描述 MoeGatingTopK需要支持renorm=1场景 ## 关联的Issue [#1920](https://gitcode.com/cann/ops-transformer/issues/1920) ## 测试 已通过ttk用例验证 已通过冒烟测试 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!3673 | 4 个月前 | |
修改了文档表述错误与相关的示例代码 Co-authored-by: Christina_YU<xiangzhiping1@h-partners.com> # message auto-generated for no-merge-commit merge: !4279 merge local into master 修改了文档表述错误与相关的示例代码 Created-by: Christina_YU Commit-by: Christina_YU Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 修改了aclnnNormRopeConcatBackward.md 和aclnnNormRopeConcat.md中的变量名和部分中文表达的错误。 修改了相关联的example代码中的变量名称错误。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> Issue [#1912](https://gitcode.com/cann/ops-transformer/issues/1912) <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 更新了aclnnNormRopeConcatBackward.md 和aclnnNormRopeConcat.md文件。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!4279 | 4 个月前 | |
ci 子包编译动态从def文件获取,静态配置算子分组 Co-authored-by: huang-chuhong<huangchuhong1@h-partners.com> # message auto-generated for no-merge-commit merge: !4079 merge master into master ci 子包编译动态从def文件获取,静态配置算子分组 Created-by: huang-chuhong Commit-by: huang-chuhong Merged-by: cann-robot Description: ## 描述 ci 子包编译动态从def文件获取,静态配置算子分组 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/1924 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!4079 | 4 个月前 | |
aiv_dpu context结构体切换 Co-authored-by: zzg_code<zengzhiguo1@huawei.com> Co-authored-by: y00951989<yangshengjun3@huawei.com> # message auto-generated for no-merge-commit merge: !3665 merge dpu_pr into master aiv_dpu context结构体切换 Created-by: yangshengjun703 Commit-by: y00951989;zzg_code Merged-by: cann-robot Description: ## 描述 dispatch/combine算子实现aiv dpu直驱下A5 context结构体切换 ## 关联Issue 关联的Issue [https://gitcode.com/cann/ops-transformer/issues/1880](url) ## 测试 完成本地、线上 rdv 及 8p pod 环境用例测试,精度通过 # NPU算子代码检视报告 **项目名称**:MoE算子代码修改检视 **PR链接**:https://gitcode.com/cann/ops-transformer/pull/3665 **检视文件**:3665.diff **检视人**:Turing Team **检视日期**:2026-04-14 --- ## 检视概览 | 统计项 | 数值 | |-------|------| | 发现问题总数 | 6 个 | | 严重级(CRITICAL)问题 | 2 个 | | 中等级(MEDIUM)问题 | 2 个 | | 轻微级(LOW)问题 | 2 个 | **核心结论**:本次修改涉及 MoE 算子的 V2 到 V3 版本迁移、新增 Mc2Context 通信上下文管理类、build.sh 自动编译配置等,发现 6 处需要关注的问题,其中 2 处严重问题需要优先修复。 --- ## 问题详情及修改建议 ### 问题ID:ISSUE-001 | 严重级别:CRITICAL **关联红线条款**:cpp-secure 3.6 / cpp-general 4.2 **代码路径**:build.sh:1408-1413 **问题类型**:字符串存储越界 **问题描述**:build.sh 中使用字符串拼接将 V3 版本算子名添加到编译列表时,未检查 ascend_op_name 变量的长度是否足以容纳新增内容。若原始 ascend_op_name 长度接近变量容量,可能导致字符串截断或行为异常。 **修改建议**: bash # bash 变量赋值在大多数情况下会自动扩展,风险较低 # 建议在赋值前检查原始字符串长度,或使用更安全的方式 if [[ "${ascend_op_name}" == *"moe_distribute_combine_v2"* ]] && [[ "${ascend_op_name}" != *"moe_distribute_combine_v3"* ]]; then ascend_op_name="${ascend_op_name};moe_distribute_combine_v3" fi # 同样处理 dispatch --- ### 问题ID:ISSUE-002 | 严重级别:CRITICAL **关联红线条款**:cpp-secure 5.1 / cpp-secure 5.2 / cpp-secure 3.5 **代码路径**:mc2_context.h - Mc2Context 类 **问题类型**:空指针未保护 / 资源泄露 **问题描述**:使用 dlopen/dlsym 动态加载 HCCL 库时,dlopen 返回的句柄和 dlsym 获取的函数指针均未进行空值检查。若库文件不存在、版本不匹配或符号导出问题,可能导致后续调用空指针引发程序崩溃。此外,dlclose 的调用路径需要与 dlopen 配对。 **修改建议**: cpp void* handle = dlopen(libPath.c_str(), RTLD_NOW | RTLD_GLOBAL); if (handle == nullptr) { OP_LOGE(ACLNN_ERR_INNER, "dlopen HCCL library failed: %s, error: %s", libPath.c_str(), dlerror()); return ACLNN_ERR_INNER; } void* func = dlsym(handle, "HcclRankGraphGetLinks"); if (func == nullptr) { OP_LOGE(ACLNN_ERR_INNER, "Load func=%s error=%s in lib hccl failed.", funcName.c_str(), dlerror()); dlclose(handle); return ACLNN_ERR_INNER; } **修改说明**:遵循 cpp-secure 5.1 资源申请后必须判断是否成功的要求,dlopen 和 dlsym 调用后必须进行返回值检查,失败时进行错误处理并释放已申请的资源。 --- ### 问题ID:ISSUE-003 | 严重级别:MEDIUM **关联红线条款**:cpp-secure 10.11 / cpp-secure 10.12 **代码路径**:mc2_moe_context.h - epRankId 字段类型 **问题类型**:结构体 ABI 兼容性 **问题描述**:将 epRankId 从 uint64_t 改为 uint32_t,这会导致结构体大小变化,可能与原有的二进制布局不兼容。若有存量设备上的旧版本结构体数据,可能导致解析错误。新增 rankSizePerServer 字段也需要确保在结构体末尾添加。 **修改建议**: 1. 若用于进程间通信(IPC)或持久化存储,需要版本号管理 2. 若仅用于同一进程内的运行时传递,需确认所有调用方已同步更新 3. 建议添加版本号字段或使用更安全的序列化方式 --- ### 问题ID:ISSUE-004 | 严重级别:MEDIUM **关联红线条款**:ascendc-topk 1 / cpp-secure 4.1 **代码路径**:moe_distribute_combine_v2_base.cpp - Mc2Context 调用 **问题类型**:函数返回值未校验 **问题描述**:新增的 Mc2Context 相关调用(如获取通信句柄、资源等)需要检查返回值。若通信初始化失败或资源获取失败,可能导致后续操作访问无效数据。 **修改建议**: cpp auto ret = Mc2Aclnn::Mc2Context::GetMc2ContextTensor(groupEp, opName, hcclBuffSize, mc2Context); if (ret != ACLNN_SUCCESS) { OP_LOGE(ACLNN_ERR_INNER, "Get Mc2Context Tensor failed"); return ret; } --- ### 问题ID:ISSUE-005 | 严重级别:LOW **代码路径**:CMakeLists.txt **问题类型**:依赖配置 **问题描述**:CMakeLists.txt 新增 mc2_context.cpp 编译,依赖项已正确配置。 --- ### 问题ID:ISSUE-006 | 严重级别:LOW **代码路径**:多个 cpp 文件 **问题类型**:代码风格 **问题描述**:接口调用从 aclnnInnerMoeDistributeCombineV2 改为 aclnnMoeDistributeCombineBase,逻辑正确。建议确认 V3 版本接口的兼容性。 --- ## 修改汇总 | 问题ID | 严重级别 | 状态 | 修复建议 | |--------|---------|------|---------| | ISSUE-001 | CRITICAL | 待处理 | bash 字符串拼接风险较低,建议监控 | | ISSUE-002 | CRITICAL | **需修复** | 必须增加 dlopen/dlsym 返回值检查 | | ISSUE-003 | MEDIUM | 需确认 | 确认结构体使用场景,确保 ABI 兼容 | | ISSUE-004 | MEDIUM | 建议修复 | 增加 Mc2Context 调用返回值检查 | | ISSUE-005 | LOW | 已正确 | 无需修改 | | ISSUE-006 | LOW | 已正确 | 无需修改 | --- ## 核心建议 1. **优先修复**: CRITICAL-002 - 动态库加载必须增加空值检查 2. **关注**: MEDIUM-003 - 结构体 ABI 兼容性需确认使用场景 3. **建议**: 所有 Mc2Context 调用处增加错误处理 --- ## 涉及文件清单 - build.sh - mc2/common/CMakeLists.txt - mc2/common/op_api/mc2_context.cpp (新增) - mc2/common/op_api/mc2_context.h (新增) - mc2/common/op_kernel/mc2_moe_context.h - mc2/moe_distribute_combine_v2/op_api/aclnn_moe_distribute_combine_v2.cpp - mc2/moe_distribute_combine_v2/op_api/aclnn_moe_distribute_combine_v3.cpp - mc2/moe_distribute_combine_v2/op_api/aclnn_moe_distribute_combine_v4.cpp - mc2/moe_distribute_combine_v2/op_api/moe_distribute_combine_v2_base.cpp - mc2/moe_distribute_combine_v2/op_api/moe_distribute_combine_v2_base.h - mc2/moe_distribute_combine_v2/op_host/CMakeLists.txt --- *报告生成时间:2026-04-14* See merge request: cann/ops-transformer!3665 | 4 个月前 | |
aiv_dpu context结构体切换 Co-authored-by: zzg_code<zengzhiguo1@huawei.com> Co-authored-by: y00951989<yangshengjun3@huawei.com> # message auto-generated for no-merge-commit merge: !3665 merge dpu_pr into master aiv_dpu context结构体切换 Created-by: yangshengjun703 Commit-by: y00951989;zzg_code Merged-by: cann-robot Description: ## 描述 dispatch/combine算子实现aiv dpu直驱下A5 context结构体切换 ## 关联Issue 关联的Issue [https://gitcode.com/cann/ops-transformer/issues/1880](url) ## 测试 完成本地、线上 rdv 及 8p pod 环境用例测试,精度通过 # NPU算子代码检视报告 **项目名称**:MoE算子代码修改检视 **PR链接**:https://gitcode.com/cann/ops-transformer/pull/3665 **检视文件**:3665.diff **检视人**:Turing Team **检视日期**:2026-04-14 --- ## 检视概览 | 统计项 | 数值 | |-------|------| | 发现问题总数 | 6 个 | | 严重级(CRITICAL)问题 | 2 个 | | 中等级(MEDIUM)问题 | 2 个 | | 轻微级(LOW)问题 | 2 个 | **核心结论**:本次修改涉及 MoE 算子的 V2 到 V3 版本迁移、新增 Mc2Context 通信上下文管理类、build.sh 自动编译配置等,发现 6 处需要关注的问题,其中 2 处严重问题需要优先修复。 --- ## 问题详情及修改建议 ### 问题ID:ISSUE-001 | 严重级别:CRITICAL **关联红线条款**:cpp-secure 3.6 / cpp-general 4.2 **代码路径**:build.sh:1408-1413 **问题类型**:字符串存储越界 **问题描述**:build.sh 中使用字符串拼接将 V3 版本算子名添加到编译列表时,未检查 ascend_op_name 变量的长度是否足以容纳新增内容。若原始 ascend_op_name 长度接近变量容量,可能导致字符串截断或行为异常。 **修改建议**: bash # bash 变量赋值在大多数情况下会自动扩展,风险较低 # 建议在赋值前检查原始字符串长度,或使用更安全的方式 if [[ "${ascend_op_name}" == *"moe_distribute_combine_v2"* ]] && [[ "${ascend_op_name}" != *"moe_distribute_combine_v3"* ]]; then ascend_op_name="${ascend_op_name};moe_distribute_combine_v3" fi # 同样处理 dispatch --- ### 问题ID:ISSUE-002 | 严重级别:CRITICAL **关联红线条款**:cpp-secure 5.1 / cpp-secure 5.2 / cpp-secure 3.5 **代码路径**:mc2_context.h - Mc2Context 类 **问题类型**:空指针未保护 / 资源泄露 **问题描述**:使用 dlopen/dlsym 动态加载 HCCL 库时,dlopen 返回的句柄和 dlsym 获取的函数指针均未进行空值检查。若库文件不存在、版本不匹配或符号导出问题,可能导致后续调用空指针引发程序崩溃。此外,dlclose 的调用路径需要与 dlopen 配对。 **修改建议**: cpp void* handle = dlopen(libPath.c_str(), RTLD_NOW | RTLD_GLOBAL); if (handle == nullptr) { OP_LOGE(ACLNN_ERR_INNER, "dlopen HCCL library failed: %s, error: %s", libPath.c_str(), dlerror()); return ACLNN_ERR_INNER; } void* func = dlsym(handle, "HcclRankGraphGetLinks"); if (func == nullptr) { OP_LOGE(ACLNN_ERR_INNER, "Load func=%s error=%s in lib hccl failed.", funcName.c_str(), dlerror()); dlclose(handle); return ACLNN_ERR_INNER; } **修改说明**:遵循 cpp-secure 5.1 资源申请后必须判断是否成功的要求,dlopen 和 dlsym 调用后必须进行返回值检查,失败时进行错误处理并释放已申请的资源。 --- ### 问题ID:ISSUE-003 | 严重级别:MEDIUM **关联红线条款**:cpp-secure 10.11 / cpp-secure 10.12 **代码路径**:mc2_moe_context.h - epRankId 字段类型 **问题类型**:结构体 ABI 兼容性 **问题描述**:将 epRankId 从 uint64_t 改为 uint32_t,这会导致结构体大小变化,可能与原有的二进制布局不兼容。若有存量设备上的旧版本结构体数据,可能导致解析错误。新增 rankSizePerServer 字段也需要确保在结构体末尾添加。 **修改建议**: 1. 若用于进程间通信(IPC)或持久化存储,需要版本号管理 2. 若仅用于同一进程内的运行时传递,需确认所有调用方已同步更新 3. 建议添加版本号字段或使用更安全的序列化方式 --- ### 问题ID:ISSUE-004 | 严重级别:MEDIUM **关联红线条款**:ascendc-topk 1 / cpp-secure 4.1 **代码路径**:moe_distribute_combine_v2_base.cpp - Mc2Context 调用 **问题类型**:函数返回值未校验 **问题描述**:新增的 Mc2Context 相关调用(如获取通信句柄、资源等)需要检查返回值。若通信初始化失败或资源获取失败,可能导致后续操作访问无效数据。 **修改建议**: cpp auto ret = Mc2Aclnn::Mc2Context::GetMc2ContextTensor(groupEp, opName, hcclBuffSize, mc2Context); if (ret != ACLNN_SUCCESS) { OP_LOGE(ACLNN_ERR_INNER, "Get Mc2Context Tensor failed"); return ret; } --- ### 问题ID:ISSUE-005 | 严重级别:LOW **代码路径**:CMakeLists.txt **问题类型**:依赖配置 **问题描述**:CMakeLists.txt 新增 mc2_context.cpp 编译,依赖项已正确配置。 --- ### 问题ID:ISSUE-006 | 严重级别:LOW **代码路径**:多个 cpp 文件 **问题类型**:代码风格 **问题描述**:接口调用从 aclnnInnerMoeDistributeCombineV2 改为 aclnnMoeDistributeCombineBase,逻辑正确。建议确认 V3 版本接口的兼容性。 --- ## 修改汇总 | 问题ID | 严重级别 | 状态 | 修复建议 | |--------|---------|------|---------| | ISSUE-001 | CRITICAL | 待处理 | bash 字符串拼接风险较低,建议监控 | | ISSUE-002 | CRITICAL | **需修复** | 必须增加 dlopen/dlsym 返回值检查 | | ISSUE-003 | MEDIUM | 需确认 | 确认结构体使用场景,确保 ABI 兼容 | | ISSUE-004 | MEDIUM | 建议修复 | 增加 Mc2Context 调用返回值检查 | | ISSUE-005 | LOW | 已正确 | 无需修改 | | ISSUE-006 | LOW | 已正确 | 无需修改 | --- ## 核心建议 1. **优先修复**: CRITICAL-002 - 动态库加载必须增加空值检查 2. **关注**: MEDIUM-003 - 结构体 ABI 兼容性需确认使用场景 3. **建议**: 所有 Mc2Context 调用处增加错误处理 --- ## 涉及文件清单 - build.sh - mc2/common/CMakeLists.txt - mc2/common/op_api/mc2_context.cpp (新增) - mc2/common/op_api/mc2_context.h (新增) - mc2/common/op_kernel/mc2_moe_context.h - mc2/moe_distribute_combine_v2/op_api/aclnn_moe_distribute_combine_v2.cpp - mc2/moe_distribute_combine_v2/op_api/aclnn_moe_distribute_combine_v3.cpp - mc2/moe_distribute_combine_v2/op_api/aclnn_moe_distribute_combine_v4.cpp - mc2/moe_distribute_combine_v2/op_api/moe_distribute_combine_v2_base.cpp - mc2/moe_distribute_combine_v2/op_api/moe_distribute_combine_v2_base.h - mc2/moe_distribute_combine_v2/op_host/CMakeLists.txt --- *报告生成时间:2026-04-14* See merge request: cann/ops-transformer!3665 | 4 个月前 | |
更新license Co-authored-by: PerrySkywalker<wangmingkang1@huawei.com> # message auto-generated for no-merge-commit merge: !568 merge lic into master 更新license Created-by: PerrySkywalker Commit-by: PerrySkywalker Merged-by: cann-robot Description: ## 描述 更新license <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-transformer!568 | 8 个月前 | |
增加pre-commit配置,commit代码时完成代码格式化及OAT扫描 Co-authored-by: hello_simida<wangyi206@huawei.com> # message auto-generated for no-merge-commit merge: !3578 merge master_precommit into master 增加pre-commit配置,commit代码时完成代码格式化及OAT扫描 Created-by: hello_simida Commit-by: hello_simida Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!3578 | 5 个月前 | |
通过gitmodules引入third_party/catlass Co-authored-by: longjihui<longjihui@huawei.com> # message auto-generated for no-merge-commit merge: !1765 merge master into master 通过gitmodules引入third_party/catlass Created-by: longjihui Commit-by: longjihui Merged-by: cann-robot Description: ## 描述 新增.gitmodules文件,引入第三方库catlass,分支为v1.3.1-notla ## 关联的Issue 不涉及 ## 测试 仅引入三方仓,使用方式暂不确定,无需测试 ## 文档更新 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:新引入三方仓catlass See merge request: cann/ops-transformer!1765 | 4 个月前 | |
增加pre-commit配置,commit代码时完成代码格式化及OAT扫描 Co-authored-by: hello_simida<wangyi206@huawei.com> # message auto-generated for no-merge-commit merge: !3578 merge master_precommit into master 增加pre-commit配置,commit代码时完成代码格式化及OAT扫描 Created-by: hello_simida Commit-by: hello_simida Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!3578 | 5 个月前 | |
Transformer 更新Latest News Co-authored-by: lidongsheng<lidongsheng43@huawei.com> # message auto-generated for no-merge-commit merge: !771 merge docs into master Transformer 更新Latest News Created-by: qq_46353993 Commit-by: lidongsheng Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-transformer!771 | 7 个月前 | |
apply_rotary_pos_emb 算子适配 Co-authored-by: lu-yukun<luyukun4@h-partners.com> # message auto-generated for no-merge-commit merge: !4017 merge cmake into master apply_rotary_pos_emb 算子适配 Created-by: xufeng12121 Commit-by: lu-yukun Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 之前为了修复apply_rotary_pos_emb算子找不到arch35目录的报错,改动CMakeList arch38 --> arch35, (apply_rotary_pos_emb 算子信息库适配),导致fa 算子报错,找不到arch38 目录。为了兼容两者,需要CMakeList 改回成arch38适配fa算子,同时在cmake中规避,当算子是apply_rotary_pos_emb时, 将arch35目录 编到算子包里。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-transformer/issues/1836 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!4017 | 4 个月前 | |
增加pre-commit配置,commit代码时完成代码格式化及OAT扫描 Co-authored-by: hello_simida<wangyi206@huawei.com> # message auto-generated for no-merge-commit merge: !3578 merge master_precommit into master 增加pre-commit配置,commit代码时完成代码格式化及OAT扫描 Created-by: hello_simida Commit-by: hello_simida Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!3578 | 5 个月前 | |
init | 11 个月前 | |
规范化OAT.xml中许可证声明形式 Co-authored-by: chenyx2012<975102023@qq.com> # message auto-generated for no-merge-commit merge: !3571 merge master into master 规范化OAT.xml中许可证声明形式 Created-by: chenyx_2012 Commit-by: chenyx2012 Merged-by: cann-robot Description: ## 描述 规范化OAT.xml中许可证声明形式 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!3571 | 5 个月前 | |
项目readme大纲结构调整 Co-authored-by: huang-chuhong<huangchuhong1@h-partners.com> # message auto-generated for no-merge-commit merge: !4195 merge master into master 项目readme大纲结构调整 Created-by: huang-chuhong Commit-by: huang-chuhong Merged-by: cann-robot Description: ## 描述 项目readme大纲结构调整 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/1883 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!4195 | 4 个月前 | |
doc Tools工具扫描问题修改 Co-authored-by: gitee-yanglulu<yanglulul@h-partners.com> # message auto-generated for no-merge-commit merge: !3432 merge master into master doc Tools工具扫描问题修改 Created-by: gitee-yanglulu Commit-by: gitee-yanglulu Merged-by: cann-robot Description: doc Tools工具扫描问题修改 See merge request: cann/ops-transformer!3432 | 5 个月前 | |
支持按模板参数编译算子kernel、支持编译入参调试异常与调优参数 Co-authored-by: lidongsheng<lidongsheng43@huawei.com> Co-authored-by: 吴剑飞<wujianfei15@huawei.com> # message auto-generated for no-merge-commit merge: !2170 merge 910_lds into master 支持按模板参数编译算子kernel、支持编译入参调试异常与调优参数 Created-by: qq_46353993 Commit-by: 吴剑飞;lidongsheng Merged-by: cann-robot Description: ## 描述 本次修改支持用户通过build.sh的编译入口传入模板参数--kernel_template_input后按tilingkey编译、传入--bisheng_flags进行调试异常 ## 关联的Issue [支持按模板参数指定编译kernel](https://gitcode.com/cann/ops-transformer/issues/1036) [支持编译入参新增调试异常和调优参数](https://gitcode.com/cann/ops-transformer/issues/1044) ## 测试 二级冒烟、指定模板参数编译并执行测试用例 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-transformer!2170 | 6 个月前 | |
更新protobuf版本 Co-authored-by: PerrySkywalker<wangmingkang1@huawei.com> # message auto-generated for no-merge-commit merge: !522 merge prof into master 更新protobuf版本 Created-by: PerrySkywalker Commit-by: PerrySkywalker Merged-by: cann-robot Description: ## 描述 更新protobuf版本 ## 关联的Issue 关联Issue [#316](https://gitcode.com/cann/ops-transformer/issues/316) <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-transformer!522 | 8 个月前 | |
aiv_dpu context结构体切换 Co-authored-by: zzg_code<zengzhiguo1@huawei.com> Co-authored-by: y00951989<yangshengjun3@huawei.com> # message auto-generated for no-merge-commit merge: !3665 merge dpu_pr into master aiv_dpu context结构体切换 Created-by: yangshengjun703 Commit-by: y00951989;zzg_code Merged-by: cann-robot Description: ## 描述 dispatch/combine算子实现aiv dpu直驱下A5 context结构体切换 ## 关联Issue 关联的Issue [https://gitcode.com/cann/ops-transformer/issues/1880](url) ## 测试 完成本地、线上 rdv 及 8p pod 环境用例测试,精度通过 # NPU算子代码检视报告 **项目名称**:MoE算子代码修改检视 **PR链接**:https://gitcode.com/cann/ops-transformer/pull/3665 **检视文件**:3665.diff **检视人**:Turing Team **检视日期**:2026-04-14 --- ## 检视概览 | 统计项 | 数值 | |-------|------| | 发现问题总数 | 6 个 | | 严重级(CRITICAL)问题 | 2 个 | | 中等级(MEDIUM)问题 | 2 个 | | 轻微级(LOW)问题 | 2 个 | **核心结论**:本次修改涉及 MoE 算子的 V2 到 V3 版本迁移、新增 Mc2Context 通信上下文管理类、build.sh 自动编译配置等,发现 6 处需要关注的问题,其中 2 处严重问题需要优先修复。 --- ## 问题详情及修改建议 ### 问题ID:ISSUE-001 | 严重级别:CRITICAL **关联红线条款**:cpp-secure 3.6 / cpp-general 4.2 **代码路径**:build.sh:1408-1413 **问题类型**:字符串存储越界 **问题描述**:build.sh 中使用字符串拼接将 V3 版本算子名添加到编译列表时,未检查 ascend_op_name 变量的长度是否足以容纳新增内容。若原始 ascend_op_name 长度接近变量容量,可能导致字符串截断或行为异常。 **修改建议**: bash # bash 变量赋值在大多数情况下会自动扩展,风险较低 # 建议在赋值前检查原始字符串长度,或使用更安全的方式 if [[ "${ascend_op_name}" == *"moe_distribute_combine_v2"* ]] && [[ "${ascend_op_name}" != *"moe_distribute_combine_v3"* ]]; then ascend_op_name="${ascend_op_name};moe_distribute_combine_v3" fi # 同样处理 dispatch --- ### 问题ID:ISSUE-002 | 严重级别:CRITICAL **关联红线条款**:cpp-secure 5.1 / cpp-secure 5.2 / cpp-secure 3.5 **代码路径**:mc2_context.h - Mc2Context 类 **问题类型**:空指针未保护 / 资源泄露 **问题描述**:使用 dlopen/dlsym 动态加载 HCCL 库时,dlopen 返回的句柄和 dlsym 获取的函数指针均未进行空值检查。若库文件不存在、版本不匹配或符号导出问题,可能导致后续调用空指针引发程序崩溃。此外,dlclose 的调用路径需要与 dlopen 配对。 **修改建议**: cpp void* handle = dlopen(libPath.c_str(), RTLD_NOW | RTLD_GLOBAL); if (handle == nullptr) { OP_LOGE(ACLNN_ERR_INNER, "dlopen HCCL library failed: %s, error: %s", libPath.c_str(), dlerror()); return ACLNN_ERR_INNER; } void* func = dlsym(handle, "HcclRankGraphGetLinks"); if (func == nullptr) { OP_LOGE(ACLNN_ERR_INNER, "Load func=%s error=%s in lib hccl failed.", funcName.c_str(), dlerror()); dlclose(handle); return ACLNN_ERR_INNER; } **修改说明**:遵循 cpp-secure 5.1 资源申请后必须判断是否成功的要求,dlopen 和 dlsym 调用后必须进行返回值检查,失败时进行错误处理并释放已申请的资源。 --- ### 问题ID:ISSUE-003 | 严重级别:MEDIUM **关联红线条款**:cpp-secure 10.11 / cpp-secure 10.12 **代码路径**:mc2_moe_context.h - epRankId 字段类型 **问题类型**:结构体 ABI 兼容性 **问题描述**:将 epRankId 从 uint64_t 改为 uint32_t,这会导致结构体大小变化,可能与原有的二进制布局不兼容。若有存量设备上的旧版本结构体数据,可能导致解析错误。新增 rankSizePerServer 字段也需要确保在结构体末尾添加。 **修改建议**: 1. 若用于进程间通信(IPC)或持久化存储,需要版本号管理 2. 若仅用于同一进程内的运行时传递,需确认所有调用方已同步更新 3. 建议添加版本号字段或使用更安全的序列化方式 --- ### 问题ID:ISSUE-004 | 严重级别:MEDIUM **关联红线条款**:ascendc-topk 1 / cpp-secure 4.1 **代码路径**:moe_distribute_combine_v2_base.cpp - Mc2Context 调用 **问题类型**:函数返回值未校验 **问题描述**:新增的 Mc2Context 相关调用(如获取通信句柄、资源等)需要检查返回值。若通信初始化失败或资源获取失败,可能导致后续操作访问无效数据。 **修改建议**: cpp auto ret = Mc2Aclnn::Mc2Context::GetMc2ContextTensor(groupEp, opName, hcclBuffSize, mc2Context); if (ret != ACLNN_SUCCESS) { OP_LOGE(ACLNN_ERR_INNER, "Get Mc2Context Tensor failed"); return ret; } --- ### 问题ID:ISSUE-005 | 严重级别:LOW **代码路径**:CMakeLists.txt **问题类型**:依赖配置 **问题描述**:CMakeLists.txt 新增 mc2_context.cpp 编译,依赖项已正确配置。 --- ### 问题ID:ISSUE-006 | 严重级别:LOW **代码路径**:多个 cpp 文件 **问题类型**:代码风格 **问题描述**:接口调用从 aclnnInnerMoeDistributeCombineV2 改为 aclnnMoeDistributeCombineBase,逻辑正确。建议确认 V3 版本接口的兼容性。 --- ## 修改汇总 | 问题ID | 严重级别 | 状态 | 修复建议 | |--------|---------|------|---------| | ISSUE-001 | CRITICAL | 待处理 | bash 字符串拼接风险较低,建议监控 | | ISSUE-002 | CRITICAL | **需修复** | 必须增加 dlopen/dlsym 返回值检查 | | ISSUE-003 | MEDIUM | 需确认 | 确认结构体使用场景,确保 ABI 兼容 | | ISSUE-004 | MEDIUM | 建议修复 | 增加 Mc2Context 调用返回值检查 | | ISSUE-005 | LOW | 已正确 | 无需修改 | | ISSUE-006 | LOW | 已正确 | 无需修改 | --- ## 核心建议 1. **优先修复**: CRITICAL-002 - 动态库加载必须增加空值检查 2. **关注**: MEDIUM-003 - 结构体 ABI 兼容性需确认使用场景 3. **建议**: 所有 Mc2Context 调用处增加错误处理 --- ## 涉及文件清单 - build.sh - mc2/common/CMakeLists.txt - mc2/common/op_api/mc2_context.cpp (新增) - mc2/common/op_api/mc2_context.h (新增) - mc2/common/op_kernel/mc2_moe_context.h - mc2/moe_distribute_combine_v2/op_api/aclnn_moe_distribute_combine_v2.cpp - mc2/moe_distribute_combine_v2/op_api/aclnn_moe_distribute_combine_v3.cpp - mc2/moe_distribute_combine_v2/op_api/aclnn_moe_distribute_combine_v4.cpp - mc2/moe_distribute_combine_v2/op_api/moe_distribute_combine_v2_base.cpp - mc2/moe_distribute_combine_v2/op_api/moe_distribute_combine_v2_base.h - mc2/moe_distribute_combine_v2/op_host/CMakeLists.txt --- *报告生成时间:2026-04-14* See merge request: cann/ops-transformer!3665 | 4 个月前 | |
FIA host 文件责任田整理 Co-authored-by: sunhao<sunhao104@huawei.com> # message auto-generated for no-merge-commit merge: !3914 merge FIA_blue_compile_0212 into master FIA host 文件责任田整理 Created-by: Bugslover Commit-by: sunhao Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> tiling重构后,FIA责任田刷新,涉及伪量化和全量化的tiling代码 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> 关联Issue [#1736](https://gitcode.com/cann/ops-transformer/issues/1736) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 手动核对过路径在 PR 分支上确实存在 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [x] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!3914 | 4 个月前 | |
add setuptools requirement Co-authored-by: liusixia<liusixia@h-partners.com> # message auto-generated for no-merge-commit merge: !4149 merge master into master add setuptools requirement Created-by: liusixia_gitcode Commit-by: liusixia Merged-by: cann-robot Description: ## 描述 transformer仓使能ES API 后,对setuptools 有依赖。常规流程下,会在触发编包时检查python环境是否配置,如不配置会联网下载;但在某些配网后的环境下会出现下载失败,编包流程退出。故在requirements中添加要求,显式要求用户配置setuptools。 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/1861 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!4149 | 4 个月前 | |
add setuptools requirement Co-authored-by: liusixia<liusixia@h-partners.com> # message auto-generated for no-merge-commit merge: !4149 merge master into master add setuptools requirement Created-by: liusixia_gitcode Commit-by: liusixia Merged-by: cann-robot Description: ## 描述 transformer仓使能ES API 后,对setuptools 有依赖。常规流程下,会在触发编包时检查python环境是否配置,如不配置会联网下载;但在某些配网后的环境下会出现下载失败,编包流程退出。故在requirements中添加要求,显式要求用户配置setuptools。 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/1861 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!4149 | 4 个月前 | |
修复CANN 8.5.2 补丁版本的兼容性问题 Co-authored-by: hblnb<huangbolin3@huawei.com> # message auto-generated for no-merge-commit merge: !2959 merge version_cmake into master 修复CANN 8.5.2 补丁版本的兼容性问题 Created-by: hblnb Commit-by: hblnb Merged-by: cann-robot Description: ## 描述 安装8.5.2的ops包和toolkit包后,单独升级9.0.0的transformer包,再安装hccl的8.5.2的包会报错要求hccl版本大于9.0 现在修改这个限制为8.5 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!2959 | 5 个月前 | |
check_compile_version Co-authored-by: 吴剑飞<wujianfei15@huawei.com> # message auto-generated for no-merge-commit merge: !2085 merge check_version into master check_compile_version Created-by: hid81635372 Commit-by: 吴剑飞 Merged-by: cann-robot Description: ## 描述 工程上支持在编译时对子包版本进行校验 ## 关联的Issue https://gitcode.com/cann/ops-transformer/pull/2085 ## 测试 功能上可以在子包版本低于构建依赖时进行告警,RDV已通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述: 工程能力增加编译时版本校验功能 See merge request: cann/ops-transformer!2085 | 6 个月前 |
ops-transformer
🔥Latest News
- [2026/02] 新支持算子mhc_post、mhc_pre、mhc_res。
- [2026/01] 新支持算子grouped_matmul<<<>>>调用示例,方便用户自定义使用。
- [2026/01] 新支持算子fused_floyd_attention、fused_floyd_attention_grad、matmul_allto_all。
- [2025/12] 新增QuickStart,指导新手零基础入门算子项目部署(支持Docker环境)、算子开发和贡献流程。
- [2025/12] 优化指南类文档,聚焦算子开发指南,明确最小交付件和关键示例代码,针对Ascend/samples仓算子提供迁移本项目的指导。
- [2025/12] 支持transformer类onnx算子插件,包括NPUFlashAttention、NPUMultiHeadAttention、NPUMoeComputeExpertTokens等。
- [2025/12] 新支持算子kv_rms_norm_rope_cache、attention_update、attention_worker_scheduler、gather_pa_kv_cache、kv_quant_sparse_flash_attention、lightning_indexer_grad、mla_preprocess、mla_preprocess_v2、grouped_matmul_swiglu_quant_v2、attention_to_ffn、ffn_to_attention。
- [2025/12] 开源算子支持CANN Simulator仿真工具开发调试。
- [2025/12] 开源算子支持Ascend 950PR/Ascend 950DT/KirinX90系列产品。
- [2025/11] 新支持算子kv_quant_sparse_flash_attention、lightning_indexer、quant_lightning_indexer、sparse_flash_attention。
- [2025/11] 新支持示例算子rope_matrix和all_gather_add。
- [2025/11] 新增算子开发工程模板NpuOpsTransformerExt,无缝集成PyTorch张量操作,支持自动微分和GPU/NPU统一接口。
- [2025/10] 新增experimental目录,完善贡献指南,支持开发者调试并贡献自定义算子。
- [2025/09] ops-transformer项目首次上线,开源算子支持Atlas A2/A3系列产品。
🚀概述
ops-transformer是CANN (Compute Architecture for Neural Networks)算子库中提供transformer类大模型计算的进阶算子库,包括attention类、moe类、mc2类等,覆盖各类attention、MoE计算、通算融合等场景,算子库在架构图中的位置如下。

📌版本配套
本项目源码会跟随CANN软件版本发布,关于CANN软件版本与本项目标签的对应关系请参阅release仓库中的相应版本说明 。 请注意,为确保您的源码定制开发顺利进行,请选择配套的CANN版本与Gitcode标签源码,使用master分支可能存在版本不匹配的风险。
🛠️环境准备
环境部署是体验本项目能力的前提,请先完成NPU驱动、CANN包安装等,确保环境正常。
⬇️源码下载
环境准备好后,根据环境中CANN版本下载与之配套的分支源码,${tag_version}替换为配套的分支标签名。
git clone -b ${tag_version} https://gitcode.com/cann/ops-transformer.git
说明:对于WebIDE环境,已默认提供最新商发CANN版本配套的源码,如需获取其他版本源码,参考上述命令获取。
📖学习教程
💬相关信息
PS:本项目功能和文档正在持续更新和完善中,欢迎您关注最新版本。