本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
修改仓上中英文空格 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !6933 merge master into master 修改仓上中英文空格 Created-by: caiwenwen Commit-by: caiwenwen 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!6933 | 26 天前 | |
通过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 | 3 个月前 | |
fix slig docs Co-authored-by: llwy0320<liwenyu23@huawei.com> # message auto-generated for no-merge-commit merge: !8585 merge slig_tiling into master fix slig docs Created-by: llwy0320 Commit-by: llwy0320 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 修复SLIG算子文档支持范围 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> [#3711](https://gitcode.com/cann/ops-transformer/issues/3711) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!8585 | 13 小时前 | |
support pypto-pro kernel auto compile Co-authored-by: poorwill<wangbing110@huawei.com> # message auto-generated for no-merge-commit merge: !8436 merge master into master support pypto-pro kernel auto compile Created-by: wangbing110 Commit-by: poorwill Merged-by: cann-robot Description: support pypto-pro kernel auto compile See merge request: cann/ops-transformer!8436 | 1 天前 | |
fp8 fullquant Co-authored-by: wangke293<wangke293@huawei.com> # message auto-generated for no-merge-commit merge: !6637 merge master into master fp8 fullquant Created-by: wangke293 Commit-by: wangke293 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 新增fp8 fullquant, qk pertoken-head, v perhead ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/3217 <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> pytest下golden脚本 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> attention/fused_infer_attention_score/docs/aclnnFusedInferAttentionScoreV5.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!6637 | 18 天前 | |
add smlag & sliklg metadata docs Co-authored-by: qq_32807861<handongchen2@huawei.com> # message auto-generated for no-merge-commit merge: !8153 merge master into master add smlag & sliklg metadata docs Created-by: qq_32807861 Commit-by: qq_32807861 Merged-by: cann-robot Description: ## 描述 增加训练metadata文档资料 ## 关联的Issue 关联Issue #3605 ## 测试 全量编译触发 ## 文档更新 更新了smlag & sliklg metadata算子的README、aclnn、torch文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!8153 | 2 天前 | |
MC2示例算子文档完善 Co-authored-by: lyt_claire<luyitong1@huawei.com> # message auto-generated for no-merge-commit merge: !8439 merge allgatheradd_issue3497 into master MC2示例算子文档完善 Created-by: lyt_claire Commit-by: lyt_claire Merged-by: cann-robot Description: ## 描述 根据用户issue完善文档。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!8439 | 3 天前 | |
[experimental/ffn] 新增 MatmulSwiglu 算子(gate_up 投影 + SwiGLU 门控激活) Co-authored-by: wuxs68<wuxs68@chinaunicom.cn> # message auto-generated for no-merge-commit merge: !8217 merge feat/matmul-swiglu into master [experimental/ffn] 新增 MatmulSwiglu 算子(gate_up 投影 + SwiGLU 门控激活) Created-by: wuxs68 Commit-by: wuxs68 Merged-by: cann-robot Description: ## 描述 在 experimental/ffn/matmul_swiglu/ 新增算子 MatmulSwiglu,融合「一次线性投影 + SwiGLU 门控激活」: [gate | up] = x @ weight (+ bias) # weight 打包 [K, 2N],前 N 列 gate、后 N 列 up y = SiLU(gate) * up # SiLU(z)=z*sigmoid(z),输出 [M, N] 原因:现有 SwigluGatedMlp 是含 down 投影的完整 MLP,强制输出 FFN 最终结果,无法单独拿到 SwiGLU 后的中间隐藏态。当 down 投影需单独处理(单独量化、跨层复用、down 后另接融合)时,缺少一个只做前半段、直接输出中间态的细粒度算子。本算子只做 gate_up 投影 + SwiGLU、不含 down 投影,二者语义不同、互不替代。 方法(方案一:标准单 matmul → GM 中间态 → 向量 SwiGLU): - op_graph/proto:x, weight, 可选 bias, 属性 transpose_weight, 输出 y。 - op_host:def / tiling / infershape。dtype 由编译期 DTYPE_X 决定(bf16/fp16/fp32 各独立二进制),bias 固定 fp32。 - op_kernel:一次标准 matmul 算完整 [M,2N](fp32 累加)写 GM 中间,SyncAll 跨核同步后向量侧做 SwiGLU 写出 [M,N];向量阶段按 tileN 行内分块(host 依 UB 预算算出),保证大 N(如 11008)下 UB 不溢出。 ## 关联的Issue [Requirement|需求建议]: 新增 MatmulSwiglu 算子(融合 gate_up 投影 + SwiGLU 门控激活)#3574 ## 测试 - 编译/打包:build.sh --pkg --experimental --soc=ascend910b --ops=matmul_swiglu 通过,生成自定义算子包。 - 真机数值(二级冒烟):aclnn example 真机执行,与 host fp32 参考(matmul + SwiGLU)逐元素比对通过,fp16 最大相对误差 ~2e-4。 - 真机泛化:多形状 fp16 跑通,含大 N(M=4096, K=4096, N=11008),无 UB 溢出。 - UT:op_host infershape 用例 + op_kernel golden 交叉比对 + kernel 冒烟。 ## 文档更新 新增 experimental/ffn/matmul_swiglu/README.md 与 docs/aclnnMatmulSwiglu.md(算子说明)。 ## 类型标签 - [ ] 🐛 Bug修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!8217 | 1 天前 | |
add AttentionWorkerCombine and FfnWorkerBatching aclnn docs Co-authored-by: andong_hw<andong2@huawei.com> # message auto-generated for no-merge-commit merge: !8254 merge ffn_d into master add AttentionWorkerCombine and FfnWorkerBatching aclnn docs Created-by: andong_hw Commit-by: andong_hw Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 为AttentionWorkerCombine and FfnWorkerBatching 两个算子增加aclnn文档,并更新op_list.md和op_api_list.md。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-transformer/issues/2380 https://gitcode.com/cann/ops-transformer/issues/2381 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!8254 | 4 天前 | |
[gmm] clean up weight_quant_basic_block code: 消除魔鬼数字、删除未使用变量、修复同步问题 Co-authored-by: shirui17@huawei.com<shirui17@huawei.com> # message auto-generated for no-merge-commit merge: !8031 merge master into master [gmm] clean up weight_quant_basic_block code: 消除魔鬼数字、删除未使用变量、修复同步问题 Created-by: shi-rui Commit-by: shirui17@huawei.com Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 修复GMM伪量化中的魔鬼数字、未使用变量、同步id不配对等问题 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-transformer/issues/3702 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 本地验证算子泛化case ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> NA ## 类型标签 <!-- [x] 表示选中 --> - [x] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [x] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!8031 | 1 天前 | |
fix: fix graph_convert causal_conv1d Co-authored-by: wangrui<wangrui124@huawei.com> # message auto-generated for no-merge-commit merge: !8559 merge br_causal_conv1d into master fix: fix graph_convert causal_conv1d Created-by: wangrui_ Commit-by: wangrui Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 1. fix graph_convert causal_conv1d ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-transformer/issues/3312 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!8559 | 1 天前 | |
megamoe README补充A2、A3资料 Co-authored-by: 李杨<liyang843@h-partners.com> # message auto-generated for no-merge-commit merge: !8612 merge mega_moe_doc_v2 into master megamoe README补充A2、A3资料 Created-by: ryan_li Commit-by: 李杨 Merged-by: cann-robot Description: ## 描述 megamoe README资料更新,补充A2/A3资料 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!8612 | 5 小时前 | |
mhc_post资料修改 Co-authored-by: Qianwen Ye<yeqianwen2@huawei.com> # message auto-generated for no-merge-commit merge: !8602 merge 0710 into master mhc_post资料修改 Created-by: Annyqw Commit-by: Qianwen Ye Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!8602 | 1 天前 | |
moeInitRoutingV3: 性能优化 mxfp8透传场景多buffer+读一次搬多行 mxfp8量化场景双buffer+读一次搬多行 Co-authored-by: cpy_123456<chenpengyi@huawei.com> # message auto-generated for no-merge-commit merge: !8543 merge cpy_m8 into master moeInitRoutingV3: 性能优化 mxfp8透传场景多buffer+读一次搬多行 mxfp8量化场景双buffer+读一次搬多行 Created-by: cpy_123456 Commit-by: cpy_123456 Merged-by: cann-robot Description: ## 描述 ### 1.2 现状问题 1. **MXFP8 透传路径无独立 Tiling**:FP8 透传场景( quantMode == UNQUANT)此前与普通非量化路径共用 Tiling4GatherOutCompute(),未针对 FP8 的 Scale 搬运做 UB 空间规划,多 Buffer 优化未充分利用。 2. **MXFP8 量化路径 Gather 模式效率低**:原 CopyExpandedXandMXQuant 在 GATHER 模式下逐行读取源数据,多个连续输出行可能来自同一源行,存在重复的 GM→UB 搬运。 3. **UB 利用率低**:量化路径所有 Queue 的 buffer depth 固定为 1,无流水重叠;Tiling 计算可用 UB 时未预留多 Buffer 空间。 4. **核间同步缺失**:RowIdxGather 阶段结束后未做 SyncAll(),后续 GatherOut 阶段可能读到未完成写入的 expandedRowIdx。 5. **事件依赖错误**:MoeSortMultiCore::VBSCopyIn 中 ArithProgression 前等待 MTE3_S 事件,实际应为 MTE2_S(数据经 MTE2 搬入后才能被 Scalar 读取)。 6. **expertTotalCount 读取不一致**:量化路径从 sortedExpertIdxAddr 读取 expertTotalCount,透传路径从 workspace 读取,两者地址映射逻辑不统一,且 SCATTER/GATHER 对行数的处理方式不同但未做区分。 ## 2. 需求目标 ### 2.1 功能需求 | 编号 | 需求 | 优先级 | |------|------|--------| | FR-1 | 为 MXFP8 透传场景新增独立 Tiling 函数 Tiling4GatherOutMxFP8NoQuantCompute,与普通非量化路径解耦 | P0 | | FR-2 | MXFP8 量化与透传路径均支持 GATHER/SCATTER 双模式独立优化 | P0 | | FR-3 | GATHER 模式下合并同一源行的多次读取,减少 GM 访问 | P0 | | FR-4 | 修复 RowIdxGather 缺失 SyncAll() 的核间同步问题 | P0 | | FR-5 | 修复 MoeSortMultiCore::VBSCopyIn 事件依赖 MTE3_S → MTE2_S 的错误 | P0 | | FR-6 | 统一量化/透传路径从 workspace 读取 expertTotalCount,并按 SCATTER/GATHER 区分行数计算 | P0 | ### 2.2 性能需求 | 编号 | 需求 | 优先级 | |------|------|--------| | PR-1 | 量化路径 Queue buffer depth 从 1 提升至 GATHER_OUT_BUFFER_NUM(2),实现搬运与计算流水重叠 | P0 | | PR-2 | 透传路径支持可配置 xCopyInQueueBufferNum,UB 允许时最多使用 MAX_QUEUE_BUFFER_NUM(6)个 Buffer | P1 | | PR-3 | 量化路径 Tiling 中 CalcMaxRowIdxPerLoopMxQuant 可用 UB 减半(availUbSize_ / 2`),为多 Buffer 预留空间 | P0 | | PR-4 | GATHER 模式合并同源行读取,减少 GM→UB 搬运次数 | P0 | ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/3722 ## 测试 st david冒烟 ## 文档更新 none ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [x] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!8543 | 7 小时前 | |
fix inplace_partial_rotary_mul_grad tests and doc Co-authored-by: alfengyuan<yyfgdut@gmail.com> # message auto-generated for no-merge-commit merge: !8562 merge master into master fix inplace_partial_rotary_mul_grad tests and doc Created-by: alfengyuan Commit-by: alfengyuan Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> cleancode 告警处理 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-transformer/issues/3700 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 纯cleancode, License规范,文档更新,不涉及业务代码 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> posembedding/inplace_partial_rotary_mul_grad/README.md posembedding/inplace_partial_rotary_mul_grad/docs/aclnnInplacePartialRotaryMulGrad.md torch_extension/cann_ops_transformer/docs/zh/inplace_partial_rotary_mul.md torch_extension/cann_ops_transformer/docs/zh/inplace_partial_rotary_mul_backward.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [x] ❓ 其他,请描述:Liscence cleancode See merge request: cann/ops-transformer!8562 | 1 天前 | |
D&C 和 Barrier系列 代际隔离 Co-authored-by: gitcode_lijd<lijiandong20@huawei.com> # message auto-generated for no-merge-commit merge: !7460 merge isolate into master D&C 和 Barrier系列 代际隔离 Created-by: gitcode_lijd Commit-by: gitcode_lijd Merged-by: cann-robot Description: # PR: D&C 和 Barrier 系列代际隔离——内核入口拆分 > **涉及的 9 个算子** > D&C 家族: moe_distribute_combine_v1、moe_distribute_combine_v2、moe_distribute_combine_v3、moe_distribute_combine_add_rms_norm、 > moe_distribute_dispatch_v1、moe_distribute_dispatch_v2、moe_distribute_dispatch_v3 > Barrier 家族:distribute_barrier、distribute_barrier_extend --- ## 一、背景 MoE distribute/combine 系列算子的 kernel 入口原为**每个算子单一 .cpp**,内部靠 #if __NPU_ARCH__==3510 / #elif __CCE_AICORE__==220 等预编译宏在三代硬件(A5/A3/A2)间切换。随着各代实现持续分化—— - A5(ascend950)新增 mxfp8 量化、data-as-flag 布局、浮点溢出控制寄存器(FLOAT_OVERFLOW_MODE_CTRL)等特性; - A2(ascend910b)和 A3(ascend910_93)虽同为 arch22,但通信模式(MTE/AICPU/layered)、量化路径、tiling 结构均有不同; 混在单一文件中的维护成本越来越高:改 A5 可能带崩 A2/A3 的编译,无法按代际独立编译、裁剪或删除。 **本 PR 的目标**:把每个算子的 kernel 入口按代际拆成独立可编译删除的 .cpp,参照 库上代际隔离结构。 拆分中踩到的坑(均已在 PR 内修复): - AscendC 编译器对 if constexpr 废弃分支处理不彻底,A2 的 CastIntrinsicsImpl/DataCopy 报错——须保留 #if DT_BF16/#elif DT_INT8 预处理守卫,不能用纯 if constexpr 替代。 - 移动头文件时多处漏 #endif(kernel 入口与 ASC_DEVKIT_MAJOR 守卫)。 - GET_TILING_DATA_WITH_STRUCT 须在 TPipe pipe; 之前(barrier 入口顺序曾颠倒)。 - CMake depends 须追加 _a2/_a3/_apt_depends,不能替换 base _depends(后者绑打包安装,丢失则 arch22 源码不进安装包)。 --- ## 二、最终效果 ### 2.1 入口拆分 每个算子 arch22 下放 _a2.cpp + _a3.cpp,arch35 下放 _apt.cpp: op_kernel/ ├── arch22/ │ ├── moe_distribute_combine_v2_a2.cpp (A2=ascend910b) │ ├── moe_distribute_combine_v2_a3.cpp (A3=ascend910_93) │ └── moe_distribute_combine_v2_tiling_key.h (A2+A3 共用) └── arch35/ ├── moe_distribute_combine_v2_apt.cpp (A5=ascend950) └── moe_distribute_combine_v2_apt_tiling_key.h (A5) - A2、A3、A5 各一份 cpp,**不再有任何 #if __NPU_ARCH__ 宏**,各文件只含本代际的 if constexpr(ArchTag==XXX) 分支(A2 仍保留 DTYPE 预处理守卫,见背景)。 - A2/A3 同为 arch22,靠 **opFile 名**区分(构建 _get_src 用 rglob(opFile+.cpp) 按文件名唯一命中)。 - 无 A2 版本的算子(combine_v3、dispatch_v3、combine_add_rms_norm、barrier 系列):只做 _a3 + _apt(或仅 _apt),不做 _a2。 ### 2.2 tiling_key:按 arch 共用,不按 A2/A3 拆 - **arch22 保留一份合并 tiling_key**(含 A2 + A3 全部 ASCENDC_TPL_SEL),同时被 _a2.cpp、_a3.cpp、host arch22 tiling 三者 include。 - 原因: - kernel 设备编译态 ASCENDC_TPL_SEL 展开为**空**(不出现在 kernel body),不会把异构 TilingData struct 拖进编译单元。 - 每 SoC 只选一个 opFile(ascend910b→_a2、ascend910_93→_a3、ascend950→_apt),不共链 → 无重复符号。 - host arch22 tiling 需要 A2+A3 的**并集**,一份 ASCENDC_TPL_SEL 才能同时注册两者(多份会重定义 static g_tilingSelectParams)。 ### 2.3 def / CMake 规范化 **def(算子注册)** 统一为 A2→A3→A5 顺序的三套 config(无 A2 算子则 A3→A5): | 代际 | 变量名 | SoC | opFile | jitCompile | |---|---|---|---|---| | A2 | aicore_config_a2 | ascend910b | ..._a2 | static_false | | A3 | aicore_config_a3 | ascend910_93 | ..._a3 | static_true | | A5 | aicore_config_apt | ascend950 | ..._apt | static_true | **CMake depends**(按 opFile 名,每算子 base + 各后缀一份): | 变量名 | 用途 | |---|---| | base <op>_depends | 依赖子目录注册 + arch22 源码打包安装(不可删) | | _a2_depends / _a3_depends / _apt_depends | kernel 编译 src copy | **构建框架(cmake/func.cmake、custom_build.cmake、顶层 CMakeLists.txt)**:_dir 变量与 .py 安装循环已泛化为支持 _a2/_a3/_a5/_apt 四种后缀,ASCEND_OP_NAME 匹配时自动剥离后缀比对算子名,无需为每个新后缀改框架。 ### 2.4 barrier 家族 | 算子 | ascend910_93(A3) | ascend950(A5) | ascend910b(A2) | |---|---|---|---| | distribute_barrier | arch22/distribute_barrier_a3.cpp | arch35/distribute_barrier_apt.cpp | - | | distribute_barrier_extend | - | arch35/distribute_barrier_extend_apt.cpp | - | 与 dispatch/combine 的差异:无 tiling_key 拆分(tiling 仅结构体);runtime 用 GetSocVersion() 区分 MAX_WORLD_SIZE_A3/A5;distribute_barrier_extend 入口保留 #if __has_include 双路径守卫(jit 编译场景)。 ### 2.5 命名约定(apt ↔ a5 往返最终落定) 入口 cpp / opFile / tiling_key 用 _apt 后缀(A5=ascend950 的 CANN 惯例);arch35 专有实现头用 _a5_*(如 moe_distribute_combine_v2_a5_mte.h、moe_distribute_dispatch_v2_a5_ccu.h)。此前曾出现 _apt→_a5→_apt 的命名往返,最终统一为上述约定:**入口层 _apt,实现头层 _a5**。 ### 2.6 编译验证 **21/21 全部编译通过**(--opkernel,3 SoC × 7 D&C 算子)。 | 算子 | ascend910b(A2) | ascend910_93(A3) | ascend950(A5) | |---|---|---|---| | combine(v1) | ✅ | ✅ | ✅ | | combine_v2 | ✅ | ✅ | ✅ | | combine_v3 | ✅ | ✅ | ✅ | | combine_add_rms_norm | ✅ | ✅ | ✅ | | dispatch(v1) | ✅ | ✅ | ✅ | | dispatch_v2 | ✅ | ✅ | ✅ | | dispatch_v3 | ✅ | ✅ | ✅ | Barrier 家族 2 算子 = 5 项通过、1 项跳过(distribute_barrier_extend def 无 A3 配置)。 > 注:320 核并发 kernel 二进制生成易 OOM(Error 137),建议 -j16 控制并行度。 ### 2.7 对外部算子的影响 | 外部算子 | 依赖方式 | 结论 | |---|---|---| | mega_moe | CMake depends + include dispatch_v2/quantize_functions.h | ✅ 无影响(共享顶层头未动) | | moe_distribute_dispatch_setup | include dispatch_v2/quantize_functions.h | ✅ 无影响 | | tools/bandwidth_test | include dispatch_v2/.../moe_distribute_v2_base.h | ✅ 无影响 | | combine_v3 / add_rms_norm | 复用 combine_v2 arch35 实现头(a5_mte.h 等) | ✅ 无影响(不 include 被改的 combine_arch35.h) | | 其他 consumer | 引用生成的 aclnnop API 头 | ✅ 无影响(算子原型/IO 未改) | 外部队列**零 regression**。内部 op_host UT 走 tiling 框架、不直接 include kernel cpp,不受影响;op_kernel UT 为预留不测,保持原样。 See merge request: cann/ops-transformer!7460 | 1 天前 | |
提升moe_distribute_combine,moe_distribute_dispatch算子ut覆盖率 Co-authored-by: chenyifan<chenyifan66@h-partners.com> # message auto-generated for no-merge-commit merge: !8395 merge moe_d_ut into master 提升moe_distribute_combine,moe_distribute_dispatch算子ut覆盖率 Created-by: mutex_lock Commit-by: chenyifan Merged-by: cann-robot Description: ## 描述 - 提升moe_distribute_combine,moe_distribute_dispatch算子ut覆盖率 - 打开mega_moe算子ut开关 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/3647 ## 测试 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [x] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!8395 | 1 天前 | |
修改torch extension中dispatch、combine接口并入deepep接口 Co-authored-by: yangzeheng<yangzeheng@huawei.com> # message auto-generated for no-merge-commit merge: !8413 merge master into master 修改torch extension中dispatch、combine接口并入deepep接口 Created-by: yangzeheng Commit-by: yangzeheng Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!8413 | 1 天前 | |
更新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 | 6 个月前 | |
.gitignore排除torch_extension编译产物 Co-authored-by: weihao18<weihao16@h-partners.com> # message auto-generated for no-merge-commit merge: !8074 merge fix_ignore into master .gitignore排除torch_extension编译产物 Created-by: weihao18 Commit-by: weihao18 Merged-by: cann-robot Description: ## 描述 .gitignore排除torch_extension编译产物 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/3398 ## 测试 compile ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [x] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!8074 | 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 | 3 个月前 | |
fix: 修复clang-format配置 Co-authored-by: j60100428<jingsong5@h-partners.com> # message auto-generated for no-merge-commit merge: !6029 merge master into master fix: 修复clang-format配置 Created-by: SH_jingsong Commit-by: j60100428 Merged-by: cann-robot Description: ## 描述 fix: 修复clang-format配置 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/2728 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!6029 | 1 个月前 | |
修改仓上中英文空格 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !6933 merge master into master 修改仓上中英文空格 Created-by: caiwenwen Commit-by: caiwenwen 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!6933 | 26 天前 | |
D&C 和 Barrier系列 代际隔离 Co-authored-by: gitcode_lijd<lijiandong20@huawei.com> # message auto-generated for no-merge-commit merge: !7460 merge isolate into master D&C 和 Barrier系列 代际隔离 Created-by: gitcode_lijd Commit-by: gitcode_lijd Merged-by: cann-robot Description: # PR: D&C 和 Barrier 系列代际隔离——内核入口拆分 > **涉及的 9 个算子** > D&C 家族: moe_distribute_combine_v1、moe_distribute_combine_v2、moe_distribute_combine_v3、moe_distribute_combine_add_rms_norm、 > moe_distribute_dispatch_v1、moe_distribute_dispatch_v2、moe_distribute_dispatch_v3 > Barrier 家族:distribute_barrier、distribute_barrier_extend --- ## 一、背景 MoE distribute/combine 系列算子的 kernel 入口原为**每个算子单一 .cpp**,内部靠 #if __NPU_ARCH__==3510 / #elif __CCE_AICORE__==220 等预编译宏在三代硬件(A5/A3/A2)间切换。随着各代实现持续分化—— - A5(ascend950)新增 mxfp8 量化、data-as-flag 布局、浮点溢出控制寄存器(FLOAT_OVERFLOW_MODE_CTRL)等特性; - A2(ascend910b)和 A3(ascend910_93)虽同为 arch22,但通信模式(MTE/AICPU/layered)、量化路径、tiling 结构均有不同; 混在单一文件中的维护成本越来越高:改 A5 可能带崩 A2/A3 的编译,无法按代际独立编译、裁剪或删除。 **本 PR 的目标**:把每个算子的 kernel 入口按代际拆成独立可编译删除的 .cpp,参照 库上代际隔离结构。 拆分中踩到的坑(均已在 PR 内修复): - AscendC 编译器对 if constexpr 废弃分支处理不彻底,A2 的 CastIntrinsicsImpl/DataCopy 报错——须保留 #if DT_BF16/#elif DT_INT8 预处理守卫,不能用纯 if constexpr 替代。 - 移动头文件时多处漏 #endif(kernel 入口与 ASC_DEVKIT_MAJOR 守卫)。 - GET_TILING_DATA_WITH_STRUCT 须在 TPipe pipe; 之前(barrier 入口顺序曾颠倒)。 - CMake depends 须追加 _a2/_a3/_apt_depends,不能替换 base _depends(后者绑打包安装,丢失则 arch22 源码不进安装包)。 --- ## 二、最终效果 ### 2.1 入口拆分 每个算子 arch22 下放 _a2.cpp + _a3.cpp,arch35 下放 _apt.cpp: op_kernel/ ├── arch22/ │ ├── moe_distribute_combine_v2_a2.cpp (A2=ascend910b) │ ├── moe_distribute_combine_v2_a3.cpp (A3=ascend910_93) │ └── moe_distribute_combine_v2_tiling_key.h (A2+A3 共用) └── arch35/ ├── moe_distribute_combine_v2_apt.cpp (A5=ascend950) └── moe_distribute_combine_v2_apt_tiling_key.h (A5) - A2、A3、A5 各一份 cpp,**不再有任何 #if __NPU_ARCH__ 宏**,各文件只含本代际的 if constexpr(ArchTag==XXX) 分支(A2 仍保留 DTYPE 预处理守卫,见背景)。 - A2/A3 同为 arch22,靠 **opFile 名**区分(构建 _get_src 用 rglob(opFile+.cpp) 按文件名唯一命中)。 - 无 A2 版本的算子(combine_v3、dispatch_v3、combine_add_rms_norm、barrier 系列):只做 _a3 + _apt(或仅 _apt),不做 _a2。 ### 2.2 tiling_key:按 arch 共用,不按 A2/A3 拆 - **arch22 保留一份合并 tiling_key**(含 A2 + A3 全部 ASCENDC_TPL_SEL),同时被 _a2.cpp、_a3.cpp、host arch22 tiling 三者 include。 - 原因: - kernel 设备编译态 ASCENDC_TPL_SEL 展开为**空**(不出现在 kernel body),不会把异构 TilingData struct 拖进编译单元。 - 每 SoC 只选一个 opFile(ascend910b→_a2、ascend910_93→_a3、ascend950→_apt),不共链 → 无重复符号。 - host arch22 tiling 需要 A2+A3 的**并集**,一份 ASCENDC_TPL_SEL 才能同时注册两者(多份会重定义 static g_tilingSelectParams)。 ### 2.3 def / CMake 规范化 **def(算子注册)** 统一为 A2→A3→A5 顺序的三套 config(无 A2 算子则 A3→A5): | 代际 | 变量名 | SoC | opFile | jitCompile | |---|---|---|---|---| | A2 | aicore_config_a2 | ascend910b | ..._a2 | static_false | | A3 | aicore_config_a3 | ascend910_93 | ..._a3 | static_true | | A5 | aicore_config_apt | ascend950 | ..._apt | static_true | **CMake depends**(按 opFile 名,每算子 base + 各后缀一份): | 变量名 | 用途 | |---|---| | base <op>_depends | 依赖子目录注册 + arch22 源码打包安装(不可删) | | _a2_depends / _a3_depends / _apt_depends | kernel 编译 src copy | **构建框架(cmake/func.cmake、custom_build.cmake、顶层 CMakeLists.txt)**:_dir 变量与 .py 安装循环已泛化为支持 _a2/_a3/_a5/_apt 四种后缀,ASCEND_OP_NAME 匹配时自动剥离后缀比对算子名,无需为每个新后缀改框架。 ### 2.4 barrier 家族 | 算子 | ascend910_93(A3) | ascend950(A5) | ascend910b(A2) | |---|---|---|---| | distribute_barrier | arch22/distribute_barrier_a3.cpp | arch35/distribute_barrier_apt.cpp | - | | distribute_barrier_extend | - | arch35/distribute_barrier_extend_apt.cpp | - | 与 dispatch/combine 的差异:无 tiling_key 拆分(tiling 仅结构体);runtime 用 GetSocVersion() 区分 MAX_WORLD_SIZE_A3/A5;distribute_barrier_extend 入口保留 #if __has_include 双路径守卫(jit 编译场景)。 ### 2.5 命名约定(apt ↔ a5 往返最终落定) 入口 cpp / opFile / tiling_key 用 _apt 后缀(A5=ascend950 的 CANN 惯例);arch35 专有实现头用 _a5_*(如 moe_distribute_combine_v2_a5_mte.h、moe_distribute_dispatch_v2_a5_ccu.h)。此前曾出现 _apt→_a5→_apt 的命名往返,最终统一为上述约定:**入口层 _apt,实现头层 _a5**。 ### 2.6 编译验证 **21/21 全部编译通过**(--opkernel,3 SoC × 7 D&C 算子)。 | 算子 | ascend910b(A2) | ascend910_93(A3) | ascend950(A5) | |---|---|---|---| | combine(v1) | ✅ | ✅ | ✅ | | combine_v2 | ✅ | ✅ | ✅ | | combine_v3 | ✅ | ✅ | ✅ | | combine_add_rms_norm | ✅ | ✅ | ✅ | | dispatch(v1) | ✅ | ✅ | ✅ | | dispatch_v2 | ✅ | ✅ | ✅ | | dispatch_v3 | ✅ | ✅ | ✅ | Barrier 家族 2 算子 = 5 项通过、1 项跳过(distribute_barrier_extend def 无 A3 配置)。 > 注:320 核并发 kernel 二进制生成易 OOM(Error 137),建议 -j16 控制并行度。 ### 2.7 对外部算子的影响 | 外部算子 | 依赖方式 | 结论 | |---|---|---| | mega_moe | CMake depends + include dispatch_v2/quantize_functions.h | ✅ 无影响(共享顶层头未动) | | moe_distribute_dispatch_setup | include dispatch_v2/quantize_functions.h | ✅ 无影响 | | tools/bandwidth_test | include dispatch_v2/.../moe_distribute_v2_base.h | ✅ 无影响 | | combine_v3 / add_rms_norm | 复用 combine_v2 arch35 实现头(a5_mte.h 等) | ✅ 无影响(不 include 被改的 combine_arch35.h) | | 其他 consumer | 引用生成的 aclnnop API 头 | ✅ 无影响(算子原型/IO 未改) | 外部队列**零 regression**。内部 op_host UT 走 tiling 框架、不直接 include kernel cpp,不受影响;op_kernel UT 为预留不测,保持原样。 See merge request: cann/ops-transformer!7460 | 1 天前 | |
修改仓上中英文空格 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !6933 merge master into master 修改仓上中英文空格 Created-by: caiwenwen Commit-by: caiwenwen 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!6933 | 26 天前 | |
init | 9 个月前 | |
规范化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 | 3 个月前 | |
update: 更新文件 README.md,增加联系方式 Co-authored-by: liudan12<liudan12@huawei.com> # message auto-generated for no-merge-commit merge: !8228 merge test into master update: 更新文件 README.md,增加联系方式 Created-by: liudan12 Commit-by: liudan12 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!8228 | 7 天前 | |
修复文档链接跳转失效问题 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 | 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 | 4 个月前 | |
更新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 | 6 个月前 | |
ops-transformer仓支持指定模块编译 Co-authored-by: hblnb<huangbolin3@huawei.com> # message auto-generated for no-merge-commit merge: !1889 merge test_compile_ut into master ops-transformer仓支持指定模块编译 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!1889 | 15 天前 | |
修改gmm责任田算子文件 Co-authored-by: Crrryyyy<chenruiyu4@huawei.com> # message auto-generated for no-merge-commit merge: !8035 merge adjust_responsibility into master 修改gmm责任田算子文件 Created-by: Crrryyyy Commit-by: Crrryyyy Merged-by: cann-robot Description: ## 描述 本次 PR 调整 classify_rule.yaml 中 gmm@ops-transformer 模块的 release huawei_style 责任田规则,将原先偏粗粒度的 GMM 算子目录级配置,细化为更明确的子目录/文件级路径,便于 Ascend 950 相关代码的责任归属、评审人匹配和后续维护。 ## 主要改动 - grouped_matmul:由整目录路径拆分为 op_api、op_graph、host 侧 def/infershape/checker/util 文件、公共 tiling 文件、op_host/op_tiling/arch35、op_kernel/arch35 以及 kernel 入口/工具文件。 - grouped_matmul_finalize_routing:由整目录路径拆分为 op_api、op_graph、host 侧 base_tiling/def/infershape/tiling 文件、op_host/op_tiling/arch35、op_kernel/arch35 以及 kernel 入口/工具文件。 - grouped_matmul_swiglu_quant_v2:由整目录路径拆分为 op_api、op_graph、host 侧 def/infershape/host_utils、公共 tiling 文件、op_host/op_tiling/arch35、op_kernel/arch35 以及 kernel 入口/工具文件。 - quant_grouped_matmul_inplace_add:当前仍保留原目录级 release 路径,维持该算子现有覆盖范围。 ## 范围说明 - 本次修改仅涉及 classify_rule.yaml 中 GMM 责任田配置,不修改算子实现逻辑。 - 新增路径重点覆盖 arch35 相关实现及其必要的 host/kernel 公共入口、基类和工具文件。 - tests、examples 等 unrelease 路径仍沿用原有 unrelease 配置,不纳入 release huawei_style。 ## 关联的Issue 关联Issue #3512 ## 测试 pipeline 通过。不涉及算子逻辑修改。 ## 文档更新 不涉及。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [x] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!8035 | 9 天前 | |
fix(deps): add packaging>=26.0 to requirements.txt and install_deps.sh Co-authored-by: huang-chuhong<huangchuhong1@h-partners.com> # message auto-generated for no-merge-commit merge: !6194 merge fix/add-packaging-dependency into master fix(deps): add packaging>=26.0 to requirements.txt and install_deps.sh Created-by: huang-chuhong Commit-by: huang-chuhong Merged-by: cann-robot Description: ## 描述 仓库代码依赖了 packaging 包(cmake/scripts/util/const_var.py:15 使用 from packaging import version),但 requirements.txt 和 install_deps.sh 中未声明该依赖,导致全新环境下缺少该包时构建会报 ImportError。 ## 改动 - requirements.txt:添加 packaging>=26.0 - install_deps.sh:在 COMMON_PKGS 数组中添加 "packaging>=26.0" ## 关联的Issue #2812 ## 测试 - 执行 bash install_deps.sh 脚本无报错 - python3 -c "from packaging import version" 验证模块可用 - 不传新参数时原有依赖安装行为不受影响 ## 类型标签 - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [x] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!6194 | 1 个月前 | |
fix(deps): add packaging>=26.0 to requirements.txt and install_deps.sh Co-authored-by: huang-chuhong<huangchuhong1@h-partners.com> # message auto-generated for no-merge-commit merge: !6194 merge fix/add-packaging-dependency into master fix(deps): add packaging>=26.0 to requirements.txt and install_deps.sh Created-by: huang-chuhong Commit-by: huang-chuhong Merged-by: cann-robot Description: ## 描述 仓库代码依赖了 packaging 包(cmake/scripts/util/const_var.py:15 使用 from packaging import version),但 requirements.txt 和 install_deps.sh 中未声明该依赖,导致全新环境下缺少该包时构建会报 ImportError。 ## 改动 - requirements.txt:添加 packaging>=26.0 - install_deps.sh:在 COMMON_PKGS 数组中添加 "packaging>=26.0" ## 关联的Issue #2812 ## 测试 - 执行 bash install_deps.sh 脚本无报错 - python3 -c "from packaging import version" 验证模块可用 - 不传新参数时原有依赖安装行为不受影响 ## 类型标签 - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [x] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!6194 | 1 个月前 | |
chore: upgrade ops-transformer version to 9.1.0 and update opbase tag Co-authored-by: huang-chuhong<huangchuhong1@h-partners.com> # message auto-generated for no-merge-commit merge: !5895 merge chore/version-upgrade-9.1.0 into master chore: upgrade ops-transformer version to 9.1.0 and update opbase tag Created-by: huang-chuhong Commit-by: huang-chuhong Merged-by: cann-robot Description: ## 描述 ops-transformer 版本升级至 9.1.0,同步更新 opbase 依赖 tag,移除不再需要的 asc-tools 构建依赖。 ## 改动 - version.cmake: 版本号从 9.0.0 升级至 9.1.0 - version.cmake: 移除 asc-tools >=8.5 构建依赖 - cmake/third_party/opbase.cmake: opbase tag ID 从 6604d3c 更新为 ee5334d ## 关联的Issue #2662 https://gitcode.com/cann/ops-transformer/issues/2599 ## 测试 - bash build.sh --pkg --jit 编译打包通过 ## 类型标签 - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [x] ❓ 其他,请描述:版本升级 See merge request: cann/ops-transformer!5895 | 1 个月前 | |
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 | 4 个月前 |
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}替换为分支标签名。以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:本项目功能和文档正在持续更新和完善中,欢迎您关注最新版本。
