本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
aciton增加增量逻辑 Co-authored-by: cui_jiahao<cuijiahao5@h-partners.com> # message auto-generated for no-merge-commit merge: !10199 merge master into master aciton增加增量逻辑 Created-by: cui_jiahao Commit-by: cui_jiahao Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!10199 | 2 个月前 | |
通过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 | 6 个月前 | |
QFA算子存在冗余的tillingkey,对应冗余tillingkey删除 Co-authored-by: fengzixiao<fengzixiao1@huawei.com> # message auto-generated for no-merge-commit merge: !11396 merge 9.2.0-beta.2 into 9.2.0-beta.2 QFA算子存在冗余的tillingkey,对应冗余tillingkey删除 Created-by: fengzixiao Commit-by: fengzixiao Merged-by: cann-robot Description: ## 描述 QFA算子存在冗余的tillingkey,Config_S1Aligned128_S2Aligned512_DAligned72_DVAligned72且KvLayoutType_PA_NZ的情况不支持,对应tillingkey删除 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/5024 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!11396 | 1 个月前 | |
【Feature】新增aclnn_mla_prolog_v4_weightNz接口,用于使能算子中的RoPE计算操作 Co-authored-by: zhengyuhao3<zhengyuhao3@huawei.com> # message auto-generated for no-merge-commit merge: !10312 merge mla_prolog-9.2.0 into 9.2.0-beta.2 【Feature】新增aclnn_mla_prolog_v4_weightNz接口,用于使能算子中的RoPE计算操作 Created-by: zhengyuhao3 Commit-by: zhengyuhao3 Merged-by: cann-robot Description: ## 描述 kimi-k3模型需求特性,新增aclnn_mla_prolog_v4_weightNz接口,较V3接口新增doRope参数,用于开关算子中的RoPE计算操作 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 RDV测试不影响现有mla_prolog_v3功能 atk精度泛化测试用例通过 300/300 ## 文档更新 新增了aclnnMlaPrologV4WeightNz.md文件 ## 类型标签 <!-- [x] 表示选中 --> - [x] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!10312 | 2 个月前 | |
update cmake minimum required to 3.18.4 Co-authored-by: poorwill<wangbing110@huawei.com> # message auto-generated for no-merge-commit merge: !9634 merge master into master update cmake minimum required to 3.18.4 Created-by: wangbing110 Commit-by: poorwill Merged-by: cann-robot Description: update cmake minimum required to 3.18.4 See merge request: cann/ops-transformer!9634 | 2 个月前 | |
delete quant_all_reduce & quant_reduce_scatter aclnn Co-authored-by: wangliangpei<wangliangpei@huawei.com> # message auto-generated for no-merge-commit merge: !12003 merge pr_920_beta2 into 9.2.0-beta.2 delete quant_all_reduce & quant_reduce_scatter aclnn Created-by: xiongyifu Commit-by: wangliangpei Merged-by: cann-robot Description: ## 描述 删除quant_all_reduce和quant_reduce_scatter算子aclnn接口实现 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/3782 ## 测试 不涉及 ## 文档更新 更新了README.md文件 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!12003 | 1 个月前 | |
打标签检测 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !10044 merge master into master 打标签检测 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ### 描述 打标签的检测补充 ## 关联的Issue 关联Issue [#4040](https://gitcode.com/cann/ops-transformer/issues/4040) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-transformer!10044 | 2 个月前 | |
提升si ut函数覆盖率 Co-authored-by: qq_46353993<lidongsheng43@huawei.com> # message auto-generated for no-merge-commit merge: !10214 merge si_ut into master 提升si ut函数覆盖率 Created-by: qq_46353993 Commit-by: qq_46353993 Merged-by: cann-robot Description: ## 描述 本 PR 旨在提升 stem_indexer 算子(experimental/attention/stem_indexer)host 侧 tiling 代码的单元测试(UT)函数覆盖率,主要改动集中在 stem_indexer_tiling.cpp 与 stem_indexer_tiling.h 两个文件。核心手段是给 StemIndexerInfoParser 的三个辅助校验函数(IsFloatEqual、IsSupportedQHeadNum、IsSupportedKvHeadNum)的声明和定义加上 __attribute__((noinline)),避免编译器内联导致这些函数无法被 UT 单独覆盖;其余改动为大量 OP_CHECK_IF 宏调用与常量表达式、构造函数等的代码折行/格式重排,未改变校验逻辑本身。 **主要改动** - **禁用内联提升 UT 覆盖率**: 在 StemIndexerInfoParser::IsFloatEqual、IsSupportedQHeadNum、IsSupportedKvHeadNum 的 .cpp 定义与 .h 私有成员声明上均添加 __attribute__((noinline)),防止函数被内联,从而使其可被单元测试直接覆盖。 - **stem_indexer_tiling.cpp 格式重排**: 对 GetAndCheckAttrParaInfo、CheckRequiredInOutExistence、CheckRequiredAttrExistence、GetAndCheckInOutDataType、CheckShapeDim、GetBaseShapeInfo、ValidateInputShapesMatch 等函数中的多处 OP_CHECK_IF 宏调用重新折行(调整宏参数与 return ge::GRAPH_FAILED 的排版),属纯格式调整,校验逻辑保持不变。 - **stem_indexer_tiling.h 格式重排**: 对常量函数 CalcStemIndexerMetadataCapacity 的计算表达式以及 StemIndexerInfoParser、StemIndexerTiling 的构造函数初始化列表进行换行排版调整,不影响行为。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [x] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!10214 | 2 个月前 | |
仓内重名(ffn / torch_extension / mhc / posembedding)整改 Co-authored-by: chenyifan<chenyifan66@h-partners.com> # message auto-generated for no-merge-commit merge: !10083 merge clear_pr1_small into master 仓内重名(ffn / torch_extension / mhc / posembedding)整改 Created-by: mutex_lock Commit-by: chenyifan Merged-by: cann-robot Description: ## 描述 按仓内重名头文件规范,完成( ffn / torch_extension / mhc / posembedding)整改,消除单仓内同名头冲突。 **原因**:上述组件存在同名头文件,违反「单仓内原则上不允许重名头文件」;易导致 include 误解析、维护成本上升。 ### 仓内分类规则 对每个重名头文件,先判断 **内容是否相同**、**是否对外/包间头文件**,再套用: | # | 场景 | 是否整改 | 处置 | |---|------|---------|------| | 1.1 | 内容不同,均为内部头文件 | 是 | 建议加模块前缀改名 | | 1.2 | 内容相同,均为内部头文件 | 是 | 只保留一份;**改 include 路径,禁止软链接** | | 1.3 | 部分内部、部分对外/包间 | 是 | **只改内部** 那份 | | 1.4 | 内容相同,均为对外/包间 | 否(兼容期) | 可用软链接保留多路径 | | 1.5 | 内容不同,均为对外/包间 | 兼容期内可暂缓 | 兼容期结束后改名 | | 1.6 | 其他 | 原则上不允许重名 | 特例需评审 | **原则**:除 1.4 外,单仓内原则上不允许重名头文件。 本 PR 实际用到:**1.1**、**1.3**、**1.4**(另:aclnn_common.h 为 build 产物与源码重复,不套用上表,忽略 build 路径)。 ### 决策一览 | 文件名 | 是否修改 | 规则 | 原因 | 整改方案 | |--------|----------|------|------|----------| | ffn.h | 是 | 1.3 | 对外公开 + 包内,内容不同 | 保留 op_api/ffn.h;op_kernel/ffn.h → ffn_kernel.h | | aclnn_common.h | 否 | — | 源码与 torch_extension/build 产物重复 | 忽略 build 路径,不改源码 | | aclnn_rotary_position_embedding.h | 否 | 1.4 | 均为对外公开且内容相同 | 兼容期维持,不改名 | | mhc_post.h | 是 | 1.3 | 对外公开 + 包内(arch22/35),内容不同 | 保留 op_api;内部 → mhc_post_arch22.h / mhc_post_arch35.h | | mhc_post_backward.h | 是 | 1.3 | 对外公开 + 包内,内容不同 | 保留 op_api;内部 → mhc_post_backward_arch22.h | | mhc_sinkhorn.h | 是 | 1.3 | 对外公开 + 包内,内容不同 | 保留 op_api;内部 → mhc_sinkhorn_arch35.h | | norm_rope_concat_grad.h | 是 | 1.3 | 对外公开 + 包内,内容不同 | 保留 op_api;kernel → norm_rope_concat_grad_kernel.h | | apply_rotary_pos_emb_common.h | 是 | 1.1 | 两算子包内内容不同 | 保留 apply 侧原名;inplace 侧 → inplace_partial_rotary_mul_arpe_common.h(避免与已有 inplace_partial_rotary_mul_common.h 冲突) | | norm_rope_concat_base.h | 是 | 1.1 | host / kernel 内容不同 | → *_host.h / *_kernel.h | | norm_rope_concat_grad_base.h | 是 | 1.1 | host / kernel 内容不同 | → *_host.h / *_kernel.h | | rope_with_sin_cos_cache_base.h | 是 | 1.1 | arch35 ≠ root | arch35 → *_arch35.h;root 保留 | | rope_with_sin_cos_cache_f_bf16.h | 是 | 1.1 | arch35 ≠ root | arch35 → *_arch35.h;root 保留 | | rope_with_sin_cos_cache_fp32.h | 是 | 1.1 | arch35 ≠ root | arch35 → *_arch35.h;root 保留 | | rotary_position_embedding_a_and_b.h | 是 | 1.1 | 跨算子包内内容不同 | 保留 rotary_position_embedding 侧;inplace → inplace_partial_rotary_mul_a_and_b.h | | rotary_position_embedding_ab.h | 是 | 1.1 | 跨算子包内内容不同 | 同上 → inplace_partial_rotary_mul_ab.h | | rotary_position_embedding_aba_and_ba.h | 是 | 1.1 | 跨算子包内内容不同 | 同上 → inplace_partial_rotary_mul_aba_and_ba.h | | rotary_position_embedding_bab.h | 是 | 1.1 | 跨算子包内内容不同 | 同上 → inplace_partial_rotary_mul_bab.h | ### 改名映射(旧路径 → 新路径) | 旧路径 | 新路径 | |--------|--------| | ffn/ffn/op_kernel/ffn.h | ffn/ffn/op_kernel/ffn_kernel.h | | mhc/mhc_post/op_kernel/arch22/mhc_post.h | mhc/mhc_post/op_kernel/arch22/mhc_post_arch22.h | | mhc/mhc_post/op_kernel/arch35/mhc_post.h | mhc/mhc_post/op_kernel/arch35/mhc_post_arch35.h | | mhc/mhc_post_backward/op_kernel/arch22/mhc_post_backward.h | mhc/mhc_post_backward/op_kernel/arch22/mhc_post_backward_arch22.h | | mhc/mhc_sinkhorn/op_kernel/arch35/mhc_sinkhorn.h | mhc/mhc_sinkhorn/op_kernel/arch35/mhc_sinkhorn_arch35.h | | posembedding/norm_rope_concat_grad/op_kernel/norm_rope_concat_grad.h | posembedding/norm_rope_concat_grad/op_kernel/norm_rope_concat_grad_kernel.h | | posembedding/inplace_partial_rotary_mul/op_kernel/arch35/apply_rotary_pos_emb_common.h | posembedding/inplace_partial_rotary_mul/op_kernel/arch35/inplace_partial_rotary_mul_arpe_common.h | | posembedding/norm_rope_concat/op_host/norm_rope_concat_base.h | posembedding/norm_rope_concat/op_host/norm_rope_concat_base_host.h | | posembedding/norm_rope_concat/op_kernel/norm_rope_concat_base.h | posembedding/norm_rope_concat/op_kernel/norm_rope_concat_base_kernel.h | | posembedding/norm_rope_concat_grad/op_host/norm_rope_concat_grad_base.h | posembedding/norm_rope_concat_grad/op_host/norm_rope_concat_grad_base_host.h | | posembedding/norm_rope_concat_grad/op_kernel/norm_rope_concat_grad_base.h | posembedding/norm_rope_concat_grad/op_kernel/norm_rope_concat_grad_base_kernel.h | | posembedding/rope_with_sin_cos_cache/op_kernel/arch35/rope_with_sin_cos_cache_base.h | posembedding/rope_with_sin_cos_cache/op_kernel/arch35/rope_with_sin_cos_cache_base_arch35.h | | posembedding/rope_with_sin_cos_cache/op_kernel/arch35/rope_with_sin_cos_cache_f_bf16.h | posembedding/rope_with_sin_cos_cache/op_kernel/arch35/rope_with_sin_cos_cache_f_bf16_arch35.h | | posembedding/rope_with_sin_cos_cache/op_kernel/arch35/rope_with_sin_cos_cache_fp32.h | posembedding/rope_with_sin_cos_cache/op_kernel/arch35/rope_with_sin_cos_cache_fp32_arch35.h | | posembedding/inplace_partial_rotary_mul/op_kernel/arch35/rotary_position_embedding_a_and_b.h | posembedding/inplace_partial_rotary_mul/op_kernel/arch35/inplace_partial_rotary_mul_a_and_b.h | | posembedding/inplace_partial_rotary_mul/op_kernel/arch35/rotary_position_embedding_ab.h | posembedding/inplace_partial_rotary_mul/op_kernel/arch35/inplace_partial_rotary_mul_ab.h | | posembedding/inplace_partial_rotary_mul/op_kernel/arch35/rotary_position_embedding_aba_and_ba.h | posembedding/inplace_partial_rotary_mul/op_kernel/arch35/inplace_partial_rotary_mul_aba_and_ba.h | | posembedding/inplace_partial_rotary_mul/op_kernel/arch35/rotary_position_embedding_bab.h | posembedding/inplace_partial_rotary_mul/op_kernel/arch35/inplace_partial_rotary_mul_bab.h | ### 范围汇总 | 项 | 数量 / 说明 | |----|-------------| | 同名组(PR1_small) | 17 | | 实际改名 | 18 个路径 | | 不改 | 2 组(aclnn_common.h、aclnn_rotary_position_embedding.h) | | 涉及组件 | ffn、mhc、posembedding(torch_extension 仅判定不改) | ## 关联的Issue ## 测试 ## 文档更新 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [x] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [x] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!10083 | 2 个月前 | |
打标签检测 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !10044 merge master into master 打标签检测 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ### 描述 打标签的检测补充 ## 关联的Issue 关联Issue [#4040](https://gitcode.com/cann/ops-transformer/issues/4040) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-transformer!10044 | 2 个月前 | |
causal_conv1d算子修改 Co-authored-by: h1234515<huangzhiyuan21@huawei.com> # message auto-generated for no-merge-commit merge: !9986 merge conv1d_update2 into master causal_conv1d算子修改 Created-by: h1234515 Commit-by: h1234515 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> causal_conv1d算子修改 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-transformer/issues/4310 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!9986 | 2 个月前 | |
delete quant_all_reduce & quant_reduce_scatter aclnn Co-authored-by: wangliangpei<wangliangpei@huawei.com> # message auto-generated for no-merge-commit merge: !12003 merge pr_920_beta2 into 9.2.0-beta.2 delete quant_all_reduce & quant_reduce_scatter aclnn Created-by: xiongyifu Commit-by: wangliangpei Merged-by: cann-robot Description: ## 描述 删除quant_all_reduce和quant_reduce_scatter算子aclnn接口实现 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/3782 ## 测试 不涉及 ## 文档更新 更新了README.md文件 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!12003 | 1 个月前 | |
修复MhcPreSinkhorn启动多余核开销问题 Co-authored-by: taochangmin<taochangmin@huawei.com> # message auto-generated for no-merge-commit merge: !10085 merge master into master 修复MhcPreSinkhorn启动多余核开销问题 Created-by: taochangmin Commit-by: taochangmin Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> SetBlockDim为真实使用的核数,避免没用到的核的启动开销问题 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-transformer/issues/4361 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 泛化测试,冒烟测试 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!10085 | 2 个月前 | |
完成(moe / attention 外围)重名头文件整改 Co-authored-by: chenyifan<chenyifan66@h-partners.com> # message auto-generated for no-merge-commit merge: !10202 merge clear_pr3_pr4 into master 完成(moe / attention 外围)重名头文件整改 Created-by: mutex_lock Commit-by: chenyifan Merged-by: cann-robot Description: ## 描述 按仓内重名头文件规范,完成 **PR3 + PR4**( moe 纯组件 / attention 外围)整改,消除该范围内单仓同名头冲突。 **原因**:清单内 moe 与 attention 外围仍有大量同名头,违反「单仓内原则上不允许重名头文件」;易导致 include 误解析、维护成本上升。 **方法**:优先只改内部/次要副本(保留对外公开名与主路径原名),并同步更新 #include、\file 及必要 include guard。无业务逻辑与格式化变更。 ### 仓内分类规则 对每个重名头文件,先判断 **内容是否相同**、**是否对外/包间头文件**,再套用: | # | 场景 | 是否整改 | 处置 | |---|------|---------|------| | 1.1 | 内容不同,均为内部头文件 | 是 | 建议加模块前缀 / arch 后缀改名 | | 1.2 | 内容相同,均为内部头文件 | 是 | 只保留一份;**改 include 路径,禁止软链接**(本批对 arch 等同内容组改为 *_archXX.h 消歧,不删文件,避免相对 include 误解析) | | 1.3 | 部分内部、部分对外/包间 | 是 | **只改内部** 那份 | | 1.4 | 内容相同,均为对外/包间 | 否(兼容期) | 可用软链接保留多路径 | | 1.5 | 内容不同,均为对外/包间 | 兼容期内可暂缓 | 兼容期结束后改名 | | 1.6 | 其他 | 原则上不允许重名 | 特例需评审 | **原则**:除 1.4 外,单仓内原则上不允许重名头文件。 本分支实际用到:**1.1**、**1.2(同内容改 arch / 算子后缀,不删文件)**、**1.3**。 ### 范围与结果 | PR | 范围 | 组数(计划) | 本分支状态 | |---:|------|-------------:|------------| | 3 | moe 纯组件 | 48 | 完成 | | 4 | attention 外围(indexer / NSA 杂项 / mla-chunk / compressor 等) | 64 | 完成 | ### 命名约定 | 场景 | 约定 | |------|------| | arch 分档 | *_arch22.h / *_arch35.h / *_arch38.h | | 1.3 对外+包内 | 保留 op_api;包内 → *_kernel.h 或 *_archXX.h | | 跨算子同名 | 保留主算子原名;次要副本加算子/场景后缀 | | quant 与 routing 消歧(moe) | quant_v2/inner → *_quant_pkg_inner.h;quant arch35 → *_quant_arch35.h | ### 本分支变更统计 | 项 | 数量 | |----|-----:| | rename | 189 | | 修改(含 include / \file / guard 同步) | 72 | | **合计** | **261** | 主要目录(按变更文件数): | 目录 | 约计 | |------|-----:| | moe/moe_init_routing_quant_v2 | 31 | | attention/mla_prolog、attention/compressor | 各 25 | | moe/moe_init_routing_v3 | 16 | | attention/lightning_indexer_v2、quant_lightning_indexer_v2 | 各 11 | | 其余 moe init/permute、indexer、NSA、chunk、gating 等 | 余量 | ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/4356 ## 测试 ## 文档更新 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [x] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [x] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!10202 | 2 个月前 | |
perf(und_gen_qkv): 重排 tile 流水消除标量核两处阻塞 Co-authored-by: qianzehong<qianzehong@huawei.com> # message auto-generated for no-merge-commit merge: !10200 merge perf/und-gen-qkv-deferred-copyout into master perf(und_gen_qkv): 重排 tile 流水消除标量核两处阻塞 Created-by: qianzehong Commit-by: qianzehong Merged-by: cann-robot Description: ## 描述 UndGenQkvRmsNormRopeCache 的 arch35 kernel 重排 Process 里 tile 循环的流水编排,消除标量核的两处阻塞。改动只在编排层面,不引入任何向量指令或 UB->UB 搬运,计算逻辑、UB 预算与 ubFactor 均不变。 ### 改动前 行序即循环体内的执行顺序: 轮次 序幕 i=0 i=1 i=2 CopyIn T0 T1 T2 -- Compute -- T0 T1 T2 CopyOut -- T0 T1 T2 <- 与 Compute 同拍 两处阻塞(均由 cannsim 指令级 trace 定位,本地仿真跑出的 kernel .o 与上板是同一份 device 二进制): - **CopyOut 紧跟 Compute** —— outQue_.DeQue() 把标量核钉在刚发出、还在跑的那次 VF 上干等,trace 实测空窗 2.58us/tile,期间标量流水一条指令都没有,对应 aiv_mte3_wait_ratio 高达 0.47。 - **CopyIn 排在 Compute 前** —— 一个 tile 要发 num*4 条 DataCopy,远超 MTE2 硬件指令队列深度,标量核先被队列反压住走走停停(单次停顿 0.19~0.51us,期间 MTE2 只放行 1 条指令、耗时低至 1ns),VF 迟迟发不出去,向量单元干等。MTE2↔VEC 的重叠只有 0.117。 ### 改动后 轮次 序幕 i=0 i=1 i=2 收尾 Compute -- T0 T1 T2 -- <- 提到最前,VF 先发出去自己跑 CopyIn T0 T1 T2 -- -- <- 被队列反压时与 VF 并行 CopyOut -- -- T0 T1 T2 <- 延后一拍,其 VF 早已完成 于是 CopyIn 比 Compute 早一拍、CopyOut 晚一拍,三个 tile 错位并行。 两处改动正交、缺一不可:在新顺序基础上把 CopyOut 改回不延后,实测 39.83 -> 42.72us(+7.3%),aiv_mte3_wait_ratio 从 0.05 弹回 0.22~0.28 —— VF 提前发出后仍要跑 2.4us,紧跟的 DeQue 就是在等这段尾巴。 ### 配套改动 - outQue_ 的 depth 取 2(Compute EnQue 时上一拍还挂着未 DeQue)。物理 buffer 数由 BUFFER_NUM_DB 决定,depth 改大不额外占 UB,ubFactor 不受影响。 - 索引滑窗需同时容纳 pend / in-flight / prefetch 三个 tile,kernel 与 host 两侧同名的 static_assert 一并从 2 倍改为 3 倍;EnsureIndexWindow 的 anchor 相应取"最早一个还要读索引的 tile",否则 CopyOut 读 pend 的 slot_mapping 时会被换窗覆盖。 - Process 的三段流水改用 Tile{start, num, maskSlot} 表达,替掉原先 7 个散装标量与两套空值表示法;流水槽位更名 maskSlot,与 CopyOut 里表示 KV Cache 行号的 slot 区分开。 - 空核提前退出移到 Process 开头,省掉白搬权重与配套的 FreeTensor。 ## 关联的Issue #4400 ## 测试 **精度**:A5(Ascend950PR_9579)上板,对 CPU golden 逐元素比对,三个多 tile case 全部 PASS,且 max_abs 与改动前完全一致(逐位相同): | case | 不达标元素 | |---|---| | T=4096(und_len=4095, gen_len=1) | q 0/4194304,k_cache 0/524288,v_cache 0/524288 | | T=4096(und_len=2048, gen_len=2048) | 同上,全 0 | | T=10752(und_len=6652, gen_len=4100,典型 case) | q 0/11010048,k_cache 0/1376256,v_cache 0/1376256 | 注:T 很小时每核只有一个 tile,走不到本 PR 改的多 tile 流水路径,验证用例的每核 token 数必须大于 ubFactor。 **性能**:A5(Ascend950PR_9579,BlockDim 56),T=10752 / heads (8,1,1) / kv_cache [23568,128,1,128] / cat 与 slot 均 shuffled。三方交替各两轮,每轮复核 kernel .o 的 md5 确认运行期包身份: | 口径 | 改前 | 仅 CopyOut 延后 | 两处都改 | 总变化 | |---|---|---|---|---| | msprof Task Duration | 58.99 us | 52.86 us | **39.61 us** | **-32.9%** | | back-to-back(100 次连发) | 54.46 us | 46.51 us | **33.99 us** | **-37.6%** | | steady p50(100 次单发) | 71.59 us | 64.20 us | **50.84 us** | **-29.0%** | | L2 冲脏后 p50 | 91.85 us | 89.99 us | 89.57 us | -2.5% | Task Duration 三档区间完全分离。 流水指标:重叠因子 1.63 → 1.90 → **2.58**;aiv_mte3_wait_ratio 0.47 → 0.06;aiv_mte2_ratio 0.497 → 0.562 → **0.814**(MTE2 已接近饱和,瓶颈从流水编排转为搬运本身)。 **需要说明的口径差异**:L2 被冲脏的场景收益仅 -2.5%。此时每次调用都要从 HBM 重新拉取 qkv 与 cos_sin,MTE2 的绝对搬运量成为主导,流水编排无从发挥。若实际部署中该算子每次调用之间夹着其它算子(L2 已被冲掉),应以这一档为准;连续调用或 L2 尚热的场景则接近上表的其它三档。 ### 全量用例验证 **torch 全用例集**(test_torch_*.py --all-sets --full,典型 17 + 泛化 28 + 白盒 7,含 T=64K): | 版本 | 接口连通性 | 数值精度 | |---|---|---| | 改前 | 52/52 PASS | 52/52 PASS | | 改后 | 52/52 PASS | 52/52 PASS | **TTK kernel 用例集**(tests/st/arch35/ttk_kernel_*.csv,32 例,-b=release + golden.py 插件):两版均为 16 PASS / 16 FAIL,但**失败集合不随版本固定**——用同一个包连跑两次,失败集合就翻转了 4 例(改前 vs 改后翻转 8 例,同一量级)。三次运行中恒定失败 11 例、恒定通过 11 例,其余 10 例在飘。原因是该用例集未固定输入字节(TTK 的 seed 按 worker 播种 + 动态分发),失败集中在 q 通道(q 15 次 / k_cache 5 次 / v_cache 0 次),是 RoPE 输出近零值卡在相对误差判据上,与本 PR 无关。要用 TTK 做可信的精度 A/B,需先用 manual_input_binaries 钉住输入。 附:该环境下 TTK 的性能列全部为 UNKNOWN(perf_status=FAIL),torch_npu profiler 的解析同样失败,msprof op 命令行则正常,故性能数据一律取自 msprof op。 **逐 shape 性能(msprof Task Duration,纯 kernel 时间,交替换包两轮)**: | shape | 改前 | 改后 | 变化 | |---|---|---|---| | T=64 | 5.66 us | 5.59 us | ~0(噪声内) | | T=512 | 7.75 us | 8.25 us | ~0(波动内) | | T=4096 | 25.81 us | 19.47 us | **-24.6%** | | T=10752 | 59.26 us | 38.34 us | **-35.3%** | **小 shape 中性是符合预期的**:ubFactor=13、BlockDim 56,T 小于约 56×13=728 时每核只有一个 tile,本 PR 的三段式流水不参与,收益自然为零;T 更大产生多 tile 后收益才显现。 **逐用例端到端(TYPICAL_CASES 15 例,npu Event 计时,含下发开销)**:14 例提速、1 例(T=2)+2.5%。steady p50 中位 **-14.6%**、最好 -30.3%;back-to-back 中位 **-21.1%**、最好 -38.0%。注意 T ≤ 512 的小用例 wall clock 有 20us 量级的固定下发开销,且实测存在明显的"先跑的更快"顺序效应(同一组用例把两版跑的先后顺序对调,结论会反号),因此小用例只应看上表的 msprof 纯 kernel 口径。 ## 文档更新 无需更新文档。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [x] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!10200 | 2 个月前 | |
静态库编译优化 Co-authored-by: hblnb<huangbolin3@huawei.com> # message auto-generated for no-merge-commit merge: !9616 merge package_static into master 静态库编译优化 Created-by: hblnb Commit-by: hblnb Merged-by: cann-robot Description: ## 描述 本次 PR 主要围绕静态库编译打包流程进行了三方面优化:在构建和打包阶段增加目标存在性检查以避免构建失败;通过 ENABLE_PACKAGE 条件控制安装行为,避免非打包场景下的误操作;新增 merge_static_packages.sh 脚本,支持将多个 cann-ops-transformer-static 包合并为单一静态库包。 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/4348 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [x] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!9616 | 2 个月前 | |
【同步9.2.0-beta.2】fix: FIA MLA decode 支持 BAND sparse_mode 并移除 n1 幂次方与 layout 约束 Co-authored-by: PerrySkywalker<wangmingkang1@huawei.com> # message auto-generated for no-merge-commit merge: !10473 merge fix/fia_mla_decode_sparse_band_920beta2 into 9.2.0-beta.2 【同步9.2.0-beta.2】fix: FIA MLA decode 支持 BAND sparse_mode 并移除 n1 幂次方与 layout 约束 Created-by: PerrySkywalker Commit-by: PerrySkywalker Merged-by: cann-robot Description: ## 修改内容 同步 PR #10064 至 9.2.0-beta.2 分支。 - fia_tiling_nonquant_mla.cpp: IsCapableSparseLayoutCheckMla 新增 SPARSE_MODE_BAND(4) 支持,与 arch22 对齐 - fia_tiling_nonquant_mla.cpp: 移除 query TND / output NTD / KV PA_NZ layout 约束 - fia_tiling_nonquant_mla.cpp: 移除 n1 幂次方早返回逻辑 - common_checker.cpp: 移除 n1 非幂次方时对 learnable_sink / post_quant / atten_mask 的拦截 ## 变更说明 - 基于 9.2.0-beta.2 分支 cherry-pick 原 PR #10064 全部 13 个提交 - 适配分支差异:master 已将 fia_tiling_nonquant_mla.h 改名为 fia_tiling_nonquant_mla_arch35.h,beta2 分支保留旧文件名,相关改动已映射到旧文件名 ## 测试 - [x] pre-commit 检查全部通过 - [x] 与 PR #10064 逐文件 diff 核对一致 Fixes #4329 See merge request: cann/ops-transformer!10473 | 2 个月前 | |
quant_flash_attn_metadata: 删除v_descale参数,新增head_dim_v可选参数 Co-authored-by: lijiaroad<lijialu16@huawei.com> # message auto-generated for no-merge-commit merge: !11025 merge 9.2.0-beta.2 into 9.2.0-beta.2 quant_flash_attn_metadata: 删除v_descale参数,新增head_dim_v可选参数 Created-by: lijiaroad Commit-by: lijiaroad Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> quant_flash_attn_metadata: 删除v_descale参数,新增head_dim_v可选参数 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-transformer/issues/4861 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!11025 | 2 个月前 | |
pre-commit: ColumnLimit 0 改为 120,对齐 C++ 行宽≤120 规范 Co-authored-by: youzhen5418<664699733@qq.com> # message auto-generated for no-merge-commit merge: !9895 merge master into master pre-commit: ColumnLimit 0 改为 120,对齐 C++ 行宽≤120 规范 Created-by: youzhen5418 Commit-by: youzhen5418 Merged-by: cann-robot Description: ## 描述 将 .clang-format 的 ColumnLimit 从 0(不限宽)调整为 120,使 clang-format 主动把超过 120 列的 C/C++ 代码断行,对齐 C++ 编码规范中"行宽不超过 120 字符"的要求(G.FMT.05-CPP)。 ## 关联的Issue 关联Issue https://gitcode.com/cann/ops-transformer/issues/4273 ## 测试 修改配置 ## 文档更新 无(本次仅改配置,未改文档) ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [x] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!9895 | 2 个月前 | |
产品文档png文件名改为英文名 Co-authored-by: gitcode-chenjiao<chenjiao31@huawei.com> # message auto-generated for no-merge-commit merge: !9654 merge master into master 产品文档png文件名改为英文名 Created-by: gitcode-chenjiao Commit-by: gitcode-chenjiao Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 产品文档中的png图片名由中文改为英文 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> [#3899](https://gitcode.com/cann/ops-transformer/issues/3899) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> NA ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> png和相关的link md ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!9654 | 2 个月前 | |
Pre-Commit 规范整改 — 公共 Co-authored-by: gitcode_lijd<lijiandong20@huawei.com> # message auto-generated for no-merge-commit merge: !5305 merge refactor into master Pre-Commit 规范整改 — 公共 Created-by: gitcode_lijd Commit-by: gitcode_lijd Merged-by: cann-robot Description: pre-commit是一个Git Hooks框架,用于在 git commit时自动运行代码检查和格式化工具。: | Hook | 功能 | 说明 | |------|------|------| | **clang-format** | C/C++ 代码格式化 | 自动格式化代码,保持风格一致 | | **OAT Check** | 开源合规检查 | 检测许可证头、禁止二进制文件提交 | 本PR对于公共文件进行了pre-commit检查 See merge request: cann/ops-transformer!5305 | 3 个月前 | |
通过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 | 6 个月前 | |
pre-commit规则适配 Co-authored-by: gitcode_lijd<lijiandong20@huawei.com> # message auto-generated for no-merge-commit merge: !2727 merge test into master pre-commit规则适配 Created-by: gitcode_lijd Commit-by: gitcode_lijd Merged-by: cann-robot Description: # ops-transformer pre-commit 规则适配 对 ops-transformer 仓的 .pre-commit-config.yaml 和 scripts/oat_check.sh 做了以下适配。 ## 改动文件 | 文件 | 说明 | |------|------| | .pre-commit-config.yaml | pre-commit hook 配置 | | scripts/oat_check.sh | OAT 开源合规扫描脚本 | | OAT.xml | OAT 扫描策略配置 | ## .pre-commit-config.yaml 改动明细 ### 1. check-json(第 31 行) 新增排除规则,跳过运行时自动生成的 kernel binary json 文件: diff - id: check-json + exclude: .*_runtime_kb\.json$ ### 2. clang-format(第 38 行) 新增 .asc 汇编文件支持: diff - files: \.(c|h|cpp|hpp|cc|hh|cxx|hxx)$ + files: \.(c|h|cpp|hpp|cc|hh|cxx|hxx|asc)$ ### 3. ruff-check(第 50 行) 忽略仓库中大量存在的 Python lint 问题规则,避免阻塞 commit: diff - args: ["--output-format", "github", "--fix"] + args: ["--output-format", "github", "--fix", "--ignore", "F841,F821,E741,E712,F403,F405,F601,E721,E731,F811,E711,E722,E402,F401"] 忽略的规则及原因: | 规则 | 含义 | 原因 | |------|------|------| | F841 | 变量赋值但未使用 | 测试脚本大量遗留 | | F821 | 使用了未定义的名称 | 测试脚本中引用了外部定义的符号 | | F401 | import 但未使用 | __init__.py 中重导出,ruff 无法识别 | | E402 | import 不在文件顶部 | 部分文件有环境初始化需要在 import 之前执行 | | E741 | 模糊变量名(如 l, O) | 测试脚本中常见 | | E712 | == True/False 比较 | 历史代码风格 | | E711 | != None 应改用 is not None | 历史代码风格 | | E721 | 类型比较方式 | 历史代码风格 | | E722 | 裸 except | 历史代码风格 | | E731 | lambda 赋值 | 历史代码风格 | | F403 | from xxx import * | 测试脚本常见 | | F405 | star import 中的名称 | F403 的伴随规则 | | F601 | 字典 key 重复 | 偶然出现 | | F811 | 重复定义 | 测试脚本中类重定义 | ### 4. codespell(第 61-64 行) #### 4.1 新增忽略词 diff - "CANN,cann,NNAL,nnal,ASCEND,ascend,EnQue,CopyIn,ArchType,AND,ND,tbe,copyin,alog", + "CANN,cann,NNAL,nnal,ASCEND,ascend,EnQue,CopyIn,ArchType,AND,ND,tbe,copyin,alog,wIh,dout,indexs,inH,padD", #### 4.2 扩展跳过文件类型 diff - "*.py,*.cpp,*.hpp,*.c,*.h,*.md", + "*.cc,*.cjs,*.clang-format,*.cmake,*.cpp,*.csv,*.cts,*.gitignore,*.gitkeep,*.gitmodules,*.h,*.hpp,*.in,*.info,*.ini,*.js,*.json,*.log,*.md,*.py,*.sh,*.TAG,*.ts,*.txt,*.xml,*.yaml,*.yml", 屏蔽仓库中所有 27 种文本文件类型,避免 codespell 对 .ini、.json 等配置文件误报(如 build-in → built-in、nd → and)。 ### 5. oat-check(第 76 行) 修复废弃的 stage name: diff - stages: [commit] + stages: [pre-commit] > pre-commit 4.0+ 中 commit 已废弃。 ## scripts/oat_check.sh 改动明细 参考社区最佳实践,核心改进: | 改进点 | 旧版 | 新版 | |--------|------|------| | 报告目录 | $REPO_ROOT/oat_reports/ | /tmp/oat_reports_$$/ | | 报告文件 | 用完后 rm -f 删除 | 临时目录保留不删 | | 并发保护 | 无 | flock 文件锁 | | 重复扫描去重 | 无 | HEAD SHA done-marker | | PR 范围扫描 | 无 | 支持 merge-base 差分扫描 | | report 缺失处理 | exit 1 阻止提交 | oat rc=0 时降级通过 | | grep 安全 | 无保护 | \|\| true 防止 set -e 中断 | 额外优化: - done-marker 命中时静默跳过(去掉 [SKIP] ... echo),避免 pre-commit 批量调用时刷屏。 ## OAT.xml 改动 新增 copyright 检查策略: diff - <policyitem type="copyright" name="xxx" path="abc/.*" .../> + <policyitem type="copyright" name="Huawei Technologies Co., Ltd." path=".*" rule="may" group="defaultGroup" filefilter="copyrightPolicyFilter" desc=""/> ## 验证结果 配置修改后,git commit 时所有 hook 均通过: trim trailing whitespace.........Passed fix end of files.................Passed check yaml.......................Skipped (no files) check for added large files......Passed check for merge conflicts........Passed detect private key...............Passed check json.......................Passed clang-format.....................Passed ruff check.......................Passed ruff format......................Passed codespell........................Passed OAT Compliance Check.............Passed > 注:clang-format 和 ruff 仍需代码侧配合(C++ 格式需手动 git add 修复后的文件,ruff lint 大量规则已忽略),但 hook 配置本身不再阻塞 commit。 See merge request: cann/ops-transformer!2727 | 3 个月前 | |
fix: Modify the AIDD docs issue Co-authored-by: zwj223<zhangwenjing55@h-partners.com> # message auto-generated for no-merge-commit merge: !9326 merge master into master fix: Modify the AIDD docs issue Created-by: zwj223 Commit-by: zwj223 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 修改AIDD扫描的核心资料问题 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> [#3995](https://gitcode.com/cann/ops-transformer/issues/3995) ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> torch_api_list.md op_list.md ascend950_op_list.md aclnn返回码.md 互推导关系.md ... ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!9326 | 2 个月前 | |
支持--pkg-type=deb/rpm包构建 Co-authored-by: chenyifan<chenyifan66@h-partners.com> # message auto-generated for no-merge-commit merge: !9867 merge support_debrpm into master 支持--pkg-type=deb/rpm包构建 Created-by: mutex_lock Commit-by: chenyifan Merged-by: cann-robot Description: ## 描述 支持通过 build.sh --pkg --pkg-type=run|rpm|deb|all 构建 run/rpm/deb 包(默认仍为 run)。 主要改动: 1. **构建入口**:build.sh / CMakeLists.txt 增加 PACKAGE_TYPE;cmake/package.cmake 与空包路径透传该参数到 set_cann_cpack_config。 2. **空包 soc(如 ascend910 / ascend310b / ascend610lite)**:不在 SOC_VERSION_LIST 仍走 cpack_empty_package;为空包设置默认 install component 并透传 PACKAGE_TYPE,使空包也可打出 rpm/deb。空包 run 为 stub 不落盘、deb/rpm 由包管理器解压元数据,**接受该机制差,不强行对齐**。 3. **deb/rpm 安装对齐 run**:新增 scripts/package/ops_transformer/rpm_deb/custom_postinst.sh / custom_prerm.sh(whl 安装与清理、copy_entity 递归赋权、filelist.csv/scene.info 等元数据权限、仓内 opp/built-in 刷权等)。 4. **依赖与兜底**:cann-cmake master-026 → master-046;无 ops-info.ini 时写出空 json,避免编包失败。 5. **文档 / CI**:更新 docs/zh/install/build.md、compile.md;ops_run_repackage.sh 支持可选 --pkg-type 二次生成 rpm/deb。 默认 bash build.sh --pkg 行为保持为打 run 包;run 安装脚本(opp_install.sh / install.sh)未改。 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/4300 ## 测试 A2/A3/A5 RDV ## 文档更新 - 更新 docs/zh/install/build.md、docs/zh/install/compile.md,补充 --pkg-type 说明与示例。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [x] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [x] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!9867 | 2 个月前 | |
产品文档png文件名改为英文名 Co-authored-by: gitcode-chenjiao<chenjiao31@huawei.com> # message auto-generated for no-merge-commit merge: !9654 merge master into master 产品文档png文件名改为英文名 Created-by: gitcode-chenjiao Commit-by: gitcode-chenjiao Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 产品文档中的png图片名由中文改为英文 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> [#3899](https://gitcode.com/cann/ops-transformer/issues/3899) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> NA ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> png和相关的link md ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!9654 | 2 个月前 | |
Pre-Commit 规范整改 — 公共 Co-authored-by: gitcode_lijd<lijiandong20@huawei.com> # message auto-generated for no-merge-commit merge: !5305 merge refactor into master Pre-Commit 规范整改 — 公共 Created-by: gitcode_lijd Commit-by: gitcode_lijd Merged-by: cann-robot Description: pre-commit是一个Git Hooks框架,用于在 git commit时自动运行代码检查和格式化工具。: | Hook | 功能 | 说明 | |------|------|------| | **clang-format** | C/C++ 代码格式化 | 自动格式化代码,保持风格一致 | | **OAT Check** | 开源合规检查 | 检测许可证头、禁止二进制文件提交 | 本PR对于公共文件进行了pre-commit检查 See merge request: cann/ops-transformer!5305 | 3 个月前 | |
pre-commit: 豁免 *.png 文件,支持文档图片上传 Co-authored-by: youzhen5418<664699733@qq.com> # message auto-generated for no-merge-commit merge: !10197 merge png into master pre-commit: 豁免 *.png 文件,支持文档图片上传 Created-by: youzhen5418 Commit-by: youzhen5418 Merged-by: cann-robot Description: ## 描述 在 OAT.xml 的 binaryFileTypePolicyFilter 中新增 *.png 文件豁免,解决提交包含 png 文档配图时被 OAT 判定为"Invalid File Type: binary"而拦截的问题。 改动原因:OAT 合规检查将 png 文件识别为违规二进制文件,导致 pre-commit 失败,无法上传文档配图。png 作为文档图片(非可执行二进制),应在二进制文件检查中豁免。 改动内容:仅 OAT.xml 一个文件,新增一行: <filteritem type="filename" name="*.png" desc="PNG image files for documentation"/> 位于 binaryFileTypePolicyFilter(第 59 行)。 验证:本地用 oat-py 直接扫描 png 文件验证——豁免前 Issues found: 1(Invalid File Type: binary),豁免后 Issues found: 0。许可证头/版权头检查对二进制文件自动跳过,无需额外豁免。 ## 关联的Issue 关联Issue #4382 ## 测试 验证:豁免前报 Invalid File Type: binary,豁免后 Issues found: 0 pre-commit 全部 hook 通过(trailing-whitespace / end-of-file / clang-format / ruff / codespell / OAT) ## 文档更新 无 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ x] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!10197 | 2 个月前 | |
cannsim改名为npusim Co-authored-by: liangbinglong<liangbinglong@huawei.com> # message auto-generated for no-merge-commit merge: !9686 merge master into master cannsim改名为npusim Created-by: liangbinglong Commit-by: liangbinglong Merged-by: cann-robot Description: ## 描述 经TSC评审,cannsim工具正式更名为npusim,相关命令行、资料同步刷新,cannsim作为别名兼容一段时间,需要尽快切换 ## 关联的Issue NA ## 测试 使用最新链接版本测试,相关命令行已经全部更名为npusim ## 文档更新 更新doc下面的调优部分文件 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!9686 | 2 个月前 | |
修复文档链接跳转失效问题 Co-authored-by: weihao18<weihao16@h-partners.com> # message auto-generated for no-merge-commit merge: !8061 merge fix_security_md into master 修复文档链接跳转失效问题 Created-by: weihao18 Commit-by: weihao18 Merged-by: cann-robot Description: ## 描述 修复SECURITY.md文档 [A-文件(夹)各场景权限管控推荐最大值] 链接跳转失效问题 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/3373 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!8061 | 3 个月前 | |
支持按模板参数编译算子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 | 7 个月前 | |
Pre-Commit 规范整改 — 公共 Co-authored-by: gitcode_lijd<lijiandong20@huawei.com> # message auto-generated for no-merge-commit merge: !5305 merge refactor into master Pre-Commit 规范整改 — 公共 Created-by: gitcode_lijd Commit-by: gitcode_lijd Merged-by: cann-robot Description: pre-commit是一个Git Hooks框架,用于在 git commit时自动运行代码检查和格式化工具。: | Hook | 功能 | 说明 | |------|------|------| | **clang-format** | C/C++ 代码格式化 | 自动格式化代码,保持风格一致 | | **OAT Check** | 开源合规检查 | 检测许可证头、禁止二进制文件提交 | 本PR对于公共文件进行了pre-commit检查 See merge request: cann/ops-transformer!5305 | 3 个月前 | |
静态库编译优化 Co-authored-by: hblnb<huangbolin3@huawei.com> # message auto-generated for no-merge-commit merge: !9616 merge package_static into master 静态库编译优化 Created-by: hblnb Commit-by: hblnb Merged-by: cann-robot Description: ## 描述 本次 PR 主要围绕静态库编译打包流程进行了三方面优化:在构建和打包阶段增加目标存在性检查以避免构建失败;通过 ENABLE_PACKAGE 条件控制安装行为,避免非打包场景下的误操作;新增 merge_static_packages.sh 脚本,支持将多个 cann-ops-transformer-static 包合并为单一静态库包。 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/4348 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [x] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!9616 | 2 个月前 | |
修改FIA算子的扫描规则,适配目录内容 Co-authored-by: wangsong96<wangsong109@huawei.com> # message auto-generated for no-merge-commit merge: !9896 merge master into master 修改FIA算子的扫描规则,适配目录内容 Created-by: wangsong96 Commit-by: wangsong96 Merged-by: cann-robot Description: ## 描述 修改classify_rule中的FIA算子相关文件路径与当前目录不符的问题 ## 关联的Issue 关联Issue [#4257](https://gitcode.com/cann/ops-transformer/issues/4257) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!9896 | 2 个月前 | |
update cmake minimum required to 3.18.4 Co-authored-by: poorwill<wangbing110@huawei.com> # message auto-generated for no-merge-commit merge: !9634 merge master into master update cmake minimum required to 3.18.4 Created-by: wangbing110 Commit-by: poorwill Merged-by: cann-robot Description: update cmake minimum required to 3.18.4 See merge request: cann/ops-transformer!9634 | 2 个月前 | |
Pre-Commit 规范整改 — 公共 Co-authored-by: gitcode_lijd<lijiandong20@huawei.com> # message auto-generated for no-merge-commit merge: !5305 merge refactor into master Pre-Commit 规范整改 — 公共 Created-by: gitcode_lijd Commit-by: gitcode_lijd Merged-by: cann-robot Description: pre-commit是一个Git Hooks框架,用于在 git commit时自动运行代码检查和格式化工具。: | Hook | 功能 | 说明 | |------|------|------| | **clang-format** | C/C++ 代码格式化 | 自动格式化代码,保持风格一致 | | **OAT Check** | 开源合规检查 | 检测许可证头、禁止二进制文件提交 | 本PR对于公共文件进行了pre-commit检查 See merge request: cann/ops-transformer!5305 | 3 个月前 | |
Pre-Commit 规范整改 — 公共 Co-authored-by: gitcode_lijd<lijiandong20@huawei.com> # message auto-generated for no-merge-commit merge: !5305 merge refactor into master Pre-Commit 规范整改 — 公共 Created-by: gitcode_lijd Commit-by: gitcode_lijd Merged-by: cann-robot Description: pre-commit是一个Git Hooks框架,用于在 git commit时自动运行代码检查和格式化工具。: | Hook | 功能 | 说明 | |------|------|------| | **clang-format** | C/C++ 代码格式化 | 自动格式化代码,保持风格一致 | | **OAT Check** | 开源合规检查 | 检测许可证头、禁止二进制文件提交 | 本PR对于公共文件进行了pre-commit检查 See merge request: cann/ops-transformer!5305 | 3 个月前 | |
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 | 7 个月前 |
ops-transformer
🔥Latest News
- [2026/07] A5上新支持算子quant_flash_attn,Dense Attention全量化场景专用,以及experimental目录新增同名算子支持A5的MxFP4全量化;chunk_gated_delta_rule算子支持A5;A5新增DSV4 dense训练阶段TopK筛选反向算子dense_lightning_indexer_grad_kl_loss、dense_lightning_indexer_softmax_lse;mc2新支持算子engram_fetch_grad。
- [2026/06] A5上新增支持sparse_flash_mla、mixed_quant_sparse_flash_mla以及对应的metadata算子,用于DSV4场景稀疏Attention计算。新增lightning_indexer_v2、quant_lightning_indexer_v2以及对应的metadata算子,用于DSV4场景TopK筛选。A5新增DSV4 sparse训练阶段Attention反向算子sparse_flash_mla_grad、sparse_lightning_indexer_kl_loss_grad;mc2新支持算子engram_fetch、engram_fetch_wait。
- [2026/05] fused_infer_attention_score算子A5上支持MxFP8全量化;A5上新支持算子flash_attn,Dense Attention非量化场景专用。
- [2026/04] mc2新支持算子mega_moe。
- [2026/03] recurrent_gated_delta_rule算子支持A5。
- [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] 开源算子支持NPU 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}替换为分支标签名。以9.0.0分支源码下载为例:
# 通用命令:git clone -b ${tag_version} https://gitcode.com/cann/ops-transformer.git
git clone -b 9.0.0 https://gitcode.com/cann/ops-transformer.git
说明:若环境中已存在配套分支源码,可跳过本步骤,例如CANNLab默认已提供最新版本CANN对应的源码。
📖学习教程
💬相关信息
PS:本项目功能和文档正在持续更新和完善中,欢迎您关注最新版本。