可用于 Ascend NPU 上开发 Transformer 大模型推理与训练应用。项目是 CANN 进阶算子库,涵盖 Attention、MoE、通算融合等场景,支持全量化、稀疏计算、KV Cache 管理,适配 Atlas A2/A3/A5 及 950 系列,提供 PyTorch 接口和 ONNX 插件。【此简介由AI生成】
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
ci: refresh examples and ut completeness check Co-authored-by: NewCoderChenxi<chenxi116@huawei.com> # message auto-generated for no-merge-commit merge: !15020 merge codex/check-examples-ut-20261031 into master ci: refresh examples and ut completeness check Created-by: mayafei Commit-by: NewCoderChenxi Merged-by: cann-robot Description: ## 描述 原检查 PR 分支已再次落后目标分支较多提交。本 PR 以最新 cann/ops-transformer:master 为基线,重新应用算子 examples / tests/ut 完整性检查能力,避免旧分支基线过期导致合并冲突或覆盖最新 CI 配置。 改动内容: - 新增 scripts/ci/check_examples_ut.py:检查正式算子是否有有效 examples 和非空 tests/ut,并输出 build/check_examples_ut.csv。 - 在 .gitcode/workflows/ops-transformer_action.yml 的 stage2/compile 中新增 JOB_check_examples_ut,读取 pr_filelist.txt 执行检查,并在 always() 下上传报告。 - 保留最新 master 上已有的 workflow 配置,仅新增本检查 Job。 ## 关联的Issue 无。 ## 测试 - 基于最新 master 提交 0758c58f81ec8d5fc86166f64f10640d48da8dba 创建分支。 - Python 脚本通过 py_compile 语法检查。 - git diff --check 通过。 - 变更范围为 2 个文件:CI workflow 和检查脚本。 - 依赖 PR CI 执行完整的增量扫描和报告上传验证。 ## 文档更新 无。 ## 类型标签 - [x] 🧪 测试 - [x] 📦 构建/CI See merge request: cann/ops-transformer!15020 | 9 天前 | |
[QFMLA] BSND/BNSD bugfix & 冗余代码删除 & 文档修正 Co-authored-by: fanzijian<fanzijian3@huawei.com> # message auto-generated for no-merge-commit merge: !15085 merge feature/qfmla-fix-bnsd-perf into master [QFMLA] BSND/BNSD bugfix & 冗余代码删除 & 文档修正 Created-by: fanzijian Commit-by: fanzijian Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> [QFMLA] BSND/BNSD bugfix & 冗余代码删除 & 文档修正 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> [#7019](https://gitcode.com/cann/ops-transformer/issues/7019) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 编译通过,本地验证通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 更正了文档约束:T>0 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!15085 | 6 天前 | |
revert: add A6 support and isolate A5/A6 generations Co-authored-by: gravel1997<shili19@huawei.com> # message auto-generated for no-merge-commit merge: !15076 merge revert-mr-14664-1793439412650-auto into master revert: add A6 support and isolate A5/A6 generations Created-by: gravel1997 Commit-by: gravel1997 Merged-by: cann-robot Description: revert: add A6 support and isolate A5/A6 generations See merge request: cann/ops-transformer!15076 | 8 天前 | |
feat(5162a): RegBase支持DAV_5162,5162A跳过mc2模块 Co-authored-by: wuxuening<wuxuening2@huawei.com> # message auto-generated for no-merge-commit merge: !14033 merge br_5162a_regbase_mc2 into master feat(5162a): RegBase支持DAV_5162,5162A跳过mc2模块 Created-by: wuxuening Commit-by: wuxuening Merged-by: cann-robot Description: ## 描述 Ascend5162A(DAV_5162,端侧 Tiny 类芯片,无 CCU)公共框架适配: 1. common/src/op_host/tiling_util.cpp:IsRegbaseSocVersion 架构集合增加 DAV_5162; 2. common/include/external/aclnn_kernels/aclnn_platform.h:IsRegbase 架构集合增加 DAV_5162; 3. CMakeLists.txt:ascend5162a 下跳过 mc2 子目录(5162A 无 CCU,对齐 kirinx90/kirin9030/mc62 的既有裁剪模式); 4. cmake/func.cmake:CANNDEV mc2 glob 排除列表补充 ascend5162a。 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/6265 ## 测试 - pre-commit 检查通过:clang-format(v18.1.8,按仓内 .clang-format)改动行校验通过(aclnn_platform.h 一处 138 列超限已按规范换行);OAT 合规扫描 0 issues; - g++ 语法校验:tiling_util.cpp(自有 + third_party/opbase 头链)0 error; - 本地 --soc=ascend5162a 构建基线通过(cann-5162a-ops-transformer run 包产出)。 ## 文档更新 无 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-transformer!14033 | 9 天前 | |
fix(lightning_indexer_grad/pool_key_indexer): issue问题修复 Co-authored-by: guijianwei<guijianwei@huawei.com> # message auto-generated for no-merge-commit merge: !15063 merge master into master fix(lightning_indexer_grad/pool_key_indexer): issue问题修复 Created-by: guijianwei Commit-by: guijianwei Merged-by: cann-robot Description: 描述 本 PR 处理 4 个社区缺陷反馈(#6613、#6634、#6635、#6636),含 1 处缺陷修复与 3 处契约澄清: lightning_indexer_grad(#6613,缺陷修复) aclnnLightningIndexerGradGetWorkspaceSize 的 inputLayout 传 nullptr 时,ValidateParams()/CheckParams() 均未校验该指针,随后 ContiguousAndLightningIndexerGrad() 中 op::ToString(params.layout) 以 nullptr 构造 std::string,抛出未捕获的 std::logic_error(basic_string::_S_construct null not valid)导致进程 abort。修复:在 CheckParams() 补 params.layout != nullptr 校验(位于 query 空张量提前返回分支之前),返回 ACLNN_ERR_PARAM_NULLPTR(161001),与同族接口对空 layout 的防御行为对齐。 pool_key_indexer(#6634/#6635/#6636,契约澄清与定位辅助) 经源码定位(golden/kernel/proto/回归测试四处交叉验证): - #6636 非缺陷:poolKey 仅包含完整 pool,不完整尾池不在 poolKey 中,每 batch 有效 token 总数 = 完整 pool 数 × pool_size + poolTailK,sparseIndicesOut 的合法域为 [0, 完整pool数×pool_size+poolTailK) 的原始 KV token 索引(尾 token 由下游按索引从原始 KV 回取),报告中的 32/33 为合法尾 token 索引; - #6635 为文档-实现不一致:实现按设计在 BSND 场景拒绝显式 actual_seq_q/actual_seq_k(tiling 层返回 561002),但文档未声明该限制; - #6634 根因是用例参数构造错误(TND 下 pool_tail_k 元素数必须等于 B,B = actual_seq_q 元素数),TND 路径本身可用,唯报错信息未说明 B 的来源、定位困难。 采取的方法:中英文 4 份文档补充上述语义(尾池归属、索引合法域、-1 填充规则、BSND 下 actualSeq 必须传空指针、poolTailK 元素数 = B);tiling 中 pool_tail_k 元素数校验的报错信息补充 B 的来源说明。 关联的Issue - 关联Issue #6613 - 关联Issue #6634 - 关联Issue #6635 - 关联Issue #6636 测试 1. UT:lightning_indexer_grad op_api UT 新增用例 E4_null_layout_failed(layout=nullptr 期望返回 161001 且不创建 executor),与既有 E1–E3 同口径。 2. pytest 回归:pool_key_indexer 新增 TestTailSemantics::test_tail_index_domain_bsnd(npool=8/ps=4/topk=16,ptk=2 与 ptk=0 双态):校验展开区两态逐比特一致、ptk=2 尾区槽为 [32, 33, -1]、全部索引落在 [0, npool*ps+ptk) 合法域、ptk=0 尾区槽全 -1;套件 TestTailSemantics 7/7 通过(910B3 真机)。 3. 真机端到端验证(Atlas 910B3 / CANN 9.3.0,gjw_pki vendor 包重新构建安装后直调两段式 C 接口): - #6613:合法 BSND layout 第一段返回 0 不回归;inputLayout=nullptr 返回 161001,进程不再 abort,日志命中新增校验 inputLayout must not be nullptr; - #6634:TND + poolTailK 元素数=B(2) 时两段 0/0(证实 TND 可用);元素数不足返回 561002,报错日志含新增的 B 来源说明; - #6635:BSND + nullptr 两段 0/0 不回归;BSND + 显式 actualSeq 维持 561002(文档化限制); - #6636:ptk=2 输出尾区槽 [32,33,-1] 且全部索引 < npool×ps+ptk=34,ptk=0 尾区槽全 -1 且索引 < 32,与 golden/文档契约一致。 4. 流水线检查:clang-format、ruff、OAT 合规、codespell、重复头文件检查等本地与远端钩子全部通过。 文档更新 - attention/pool_key_indexer/docs/aclnnPoolKeyIndexer.md 与 aclnnPoolKeyIndexer_en.md:公式区明确尾池不包含在 poolKey 中;poolTailK 参数补有效 token 总数关系与元素数 = B;sparseIndicesOut 输出补合法域与 -1 填充规则;actual_seq_q/actual_seq_k 补「BSND 必须传空指针」;约束说明区新增 actualSeq 空指针约束与索引合法域约束。 - attention/pool_key_indexer/docs/pool_key_indexer.md 与 pool_key_indexer_en.md:torch 接口文档同步上述语义。 类型标签 - 🐛 Bug修复 - 🧪 测试 - 📝 文档更新 See merge request: cann/ops-transformer!15063 | 7 天前 | |
基于<<<>>>调用的CCU AlltoAll+MXFP8 matmul融合算子 example Co-authored-by: chuguowei<chuguowei@huawei.com> # message auto-generated for no-merge-commit merge: !13259 merge master-0914 into master 基于<<<>>>调用的CCU AlltoAll+MXFP8 matmul融合算子 example Created-by: chuguowei Commit-by: chuguowei Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!13259 | 7 天前 | |
docs(block_sparse_attention_grad): 修正 mask 参数类型和维数说明 Co-authored-by: zzzzzzyf_<zhouyunfei10@huawei.com> # message auto-generated for no-merge-commit merge: !15053 merge docs/issue-5793-mask-types-20261031 into master docs(block_sparse_attention_grad): 修正 mask 参数类型和维数说明 Created-by: zzzzzzyf_ Commit-by: zzzzzzyf_ Merged-by: cann-robot Description: ## 描述 BlockSparseAttentionGrad 参数表的 mask 类型与当前注册定义、接口约束不一致。 将主目录中英文和 experimental 文档的 blockSparseMaskOptional 类型统一为 UINT8;将主目录 attenMaskOptional 的类型、维数改为 INT32、四维。英文说明同步当前 maskType=0 传 nullptr、maskType=1 在 A2/A3 使用 PerBlockSizeMask 的约束。 仅修改三份现有文档的九行内容,不修改算子实现。ACLNN 层对 blockSparseMaskOptional 仍允许 BOOL 或 UINT8,本修改不宣称 BOOL 一定会被拒绝。 ## 关联的Issue 关联 #5793 https://gitcode.com/cann/ops-transformer/issues/5793 ## 测试 - 对照主目录及 experimental 的 OpDef,确认 blockSparseMaskOptional 注册类型为 UINT8。 - 对照 ACLNN 校验,确认 maskType=1 的 attenMaskOptional 要求 INT32、四维,maskType=0 要求 nullptr。 - 核对三份参数表中的类型、维数和 maskType 说明,补丁空白检查通过(保留原有 CRLF)。 - 仅修改文档,未运行 NPU 测试或全量门禁。 ## 文档更新 更新主目录中英文 aclnnBlockSparseAttentionGrad 文档及 experimental 中文副本。 ## 类型标签 - [x] 📝 文档更新 See merge request: cann/ops-transformer!15053 | 7 天前 | |
master英文合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !14969 merge master into master master英文合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 商发的英文文档合入 ## 关联的Issue 关联Issue [#6488](https://gitcode.com/cann/ops-transformer/issues/6488) <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!14969 | 9 天前 | |
fix(gmm): 修复960 WeightNz ACLNN Co-authored-by: cw<chenwei689@huawei.com> # message auto-generated for no-merge-commit merge: !14900 merge codex/fix-960-weightnz-aclnn into master fix(gmm): 修复960 WeightNz ACLNN Created-by: weixin_54263091 Commit-by: cw Merged-by: cann-robot Description: ## 描述 gmm A6 A8HIF4与A16HIF4、A16MXFP4 aclnn回合主线适配 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/7009 ## 测试 二级冒烟 ## 文档更新 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [x ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!14900 | 7 天前 | |
master英文合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !14969 merge master into master master英文合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 商发的英文文档合入 ## 关联的Issue 关联Issue [#6488](https://gitcode.com/cann/ops-transformer/issues/6488) <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!14969 | 9 天前 | |
perf(mega_moe): 并行化 URMA mask 准备并合并整卡发送 Co-authored-by: luobaiqing<luobaiqing1@huawei.com> # message auto-generated for no-merge-commit merge: !14809 merge perf/mega-moe-urma-dispatch into master perf(mega_moe): 并行化 URMA mask 准备并合并整卡发送 Created-by: luobaiqing Commit-by: luobaiqing Merged-by: cann-robot Description: ## 描述 URMA Layered 在 Dispatch 准备阶段按目标卡分配 mask 计算任务,小卡数场景只有少量 AIV 参与,且原来的专家外层循环会重复搬入 topk。发送区和接收区采用专家优先的布局,对同一目标卡的各专家 mask 需要分别提交写请求。 本 PR 将 mask 计算与发送分开,并调整两端布局,减少准备阶段的串行工作和通信请求数。 ### 准备阶段调度 - UB 初始化仅设置地址和容量,将零缓冲的 Duplicate 移入清零阶段。 - 先清理 workspace 和通信状态,再由全部 AIV 均分全局专家范围计算 mask。 - 每轮 topk 只搬入一次,供本核负责的全部专家复用;使用 VF 同时生成位图并累计 count,替代原来仅为统计 count 使用的 GatherMask 废弃输出和标量取数。 - 保留双 mask 缓冲,用独立 mutex 保护 V 计算和 MTE3 搬出的复用;专家 count 保存在每项 32B 的 UB 槽中,计算完成后统一搬出。UB 分轮预算相应更新。 - 所有 AIV 在 MTE3 写回完成后交接给固定 channel owner 提交通信。mask 的 Drain 沿用主线,放在首次跨卡同步之前,与中间的本卡准备工作重叠。 ### mask 布局和通信 每张卡有两块区域:发送暂存区位于本卡 workspace,保存本卡输入针对各目标专家生成的 mask;接收区位于本卡通信窗口,保存各源卡发给本卡专家的 mask。 一个槽对应“一张源卡 → 一个目标专家”。槽内仍为 [mask 位图 | 32B count 区],count 区只有首个 int32 有效;mask 的位序、对齐长度和槽宽均不改变。本次只调整各专家槽的排列顺序。 | 区域 | 修改前 | 修改后 | |---|---|---| | 发送暂存区(固定本源卡) | [卡内专家序号][目标卡][槽] | [目标卡][卡内专家序号][槽] | | 接收区(固定本目标卡) | [本地专家序号][源卡][槽] | [源卡][本地专家序号][槽] | 这里“卡内专家序号”为目标卡内的局部编号,不是全局专家 ID。设通信域卡数为 P、每卡专家数为 E、槽宽为 L 字节,目标卡为 d、源卡为 s、目标卡内专家序号为 e。以下偏移均相对各区域基址,单位为字节: text 发送槽:旧 (e * P + d) * L → 新 (d * E + e) * L 接收槽:旧 (e * P + s) * L → 新 (s * E + e) * L 例如两张卡、每卡两个专家,发送暂存区的槽顺序为: text 修改前:[目标卡0 专家0][目标卡1 专家0][目标卡0 专家1][目标卡1 专家1] 修改后:[目标卡0 专家0][目标卡0 专家1][目标卡1 专家0][目标卡1 专家1] 接收区对应从“同一专家的各源卡槽连续”改成“同一源卡发来的各专家槽连续”。因此,一张源卡发给同一目标卡的 E 个专家槽,在两端都成为连续的 E * L 字节,通常从每个远端 E 次 WriteNbi 合并成 1 次;超出单请求长度限制时自动拆分,通信总字节数不变。 - 本卡专家直接写入接收区的 [本源卡][本地专家] 槽,不走本卡 channel;发送暂存区中对应本卡的范围仍保留预留空间。 - 计算任务按全局专家连续分配,对应发送暂存区的相邻槽也连续。count 可批量搬出,仅在进入、离开本卡专家范围时切换到接收区,最多三段。 - 接收侧一次紧凑搬入全部 count,所得表为 [源卡][本地专家],随后用现有 Transpose 的 TRANSPOSE_ND2ND_021 转成原前缀和使用的 [本地专家][源卡]。转置源区复用后续接收 metadata 已预留的 8KiB UB,目标使用原有 cumsum 区。 - Dispatch 接收 mask 时同步使用新偏移 (srcRank * E + expertIdx) * L。前缀和算法、token 行位置及累加顺序不变。 两块区域都继续按 P × E 个槽预留,GM 容量与 UB 预算不因布局转换而增加;算子外部接口不变,MTE 路径不在本次修改范围内。 ### 超长连续写处理 整卡 mask 发送使用 LayeredComm::WriteNbiChunked。分段循环直接定义在 LayeredUrmaComm 与 LayeredUbxComm 类的 WriteNbiChunked 方法内,由实际 channel 协议选择单请求上限:URMA 严格小于 256 MiB;当前 RoCE 1825 后端严格小于 2 GiB。RoCE 的该阈值依据当前后端实现,通用接口文档仍标注 256 MiB,其他后端不据此泛化。 - 总长度低于协议阈值时仍只提交一次;超长时中间段取“阈值减 512B”,递增源、目标地址,尾段发送剩余字节。 - 每段使用同一 channel 和原默认写配置;不额外 Drain,完成等待沿用首次跨卡同步前的位置。 - 接口返回 void,仅负责按段提交;与现有调用方式一致,不检查或汇总底层提交返回码。 - 普通 WriteNbi 和 batch handle 接口保持单请求语义,本次仅将整卡 mask 发送接入分段接口。 ### 提交划分 分支已 rebase 到主线 aa3eff321;原四笔提交经 range-diff 核对完全一致。 1. 604146305:并行化 mask 准备,分离计算和发送。 2. 2d9a49405:调整 mask 布局,合并整卡发送与 count 搬出。 3. 723ae5141:合并清零为 ResetState。 4. 000a68790:修复 CeilAlign 参数类型不一致。 5. a67370e8e:增加分协议阈值的 WriteNbiChunked,接入整卡 mask 发送。 ## 关联的Issue 无。 ## 测试 - 在 /tmp 中对真实 LayeredComm 策略类进行临时 host 验证,mock Hcomm 后共 171 个场景通过;验证脚本不纳入本 PR,覆盖 URMA/UBX 路由、256 MiB/2 GiB 边界、超过 4 GiB 的总长度、地址连续性、零长度及忽略底层返回码时继续按段提交。测试不申请大 payload,不验证设备通信。 - rebase 无文本冲突,原四笔优化的 range-diff 一致。最新分段提交尚未做设备编译及精度/性能验证。 - git diff --check 通过;提交钩子的格式检查、冲突标记检查和 OAT 检查通过。 - 在 /tmp 中提取本次实际函数体进行 CPU 模拟,并使用 AddressSanitizer / UndefinedBehaviorSanitizer 检查:64 组位图 VF 用例、75 组分核及布局搬运用例通过,覆盖尾批、多轮 count 累计、空 BS、本卡/远端落点、UB 预算、最多三段 count 搬出和每个远端一次写请求。 - 提取本地 asc-devkit 的 950 转置 VF 函数体进行 CPU 模拟,109 组形状通过,覆盖普通 Gather、短行合并、单维退化及尾部边界;另核对算子实际 Transpose 调用的源/目标及形状参数。 - 用户已在服务器测试写模式提交 992d1cae0,并反馈测到性能收益;本文未提供未采集的收益百分比或完整用例覆盖结论。 - 上述 CPU 模拟不验证设备指令语义、真实同步时序或通信性能;本地未做完整设备编译和 NPU 验证。 ## 文档更新 更新了相关代码注释,无外部接口文档变更。 ## 类型标签 - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [x] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!14809 | 6 天前 | |
fix(mhc): hcEps取值范围限制仅限定在Ascend950 Co-authored-by: yifangao<gaoyifan20@huawei.com> # message auto-generated for no-merge-commit merge: !15100 merge mhc_pre_sinkhorn_backward-doc into master fix(mhc): hcEps取值范围限制仅限定在Ascend950 Created-by: yifangao Commit-by: yifangao Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 文档修改hcEps取值范围限制仅限定在Ascend950 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-transformer/issues/6945 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!15100 | 7 天前 | |
补充 MoeTokenPermuteGrad 的 numTopk 取值说明 Co-authored-by: TiMo<zengzhennan2@huawei.com> # message auto-generated for no-merge-commit merge: !14931 merge codex/docs-issue-6672-v2 into master 补充 MoeTokenPermuteGrad 的 numTopk 取值说明 Created-by: gcw_oeok7yxb Commit-by: TiMo Merged-by: cann-robot Description: ## 描述 补充 numTopk 的取值要求,说明 Atlas A2 部分 ACLNN 执行路径中 numTopk=-1 按 1 处理,以及传入小于 -1 的值可能导致执行错误或设备异常。 ## 关联的Issue 关联 Issue [#6672](https://gitcode.com/cann/ops-transformer/issues/6672) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!14931 | 8 天前 | |
feat(qkv_rms_norm_rope_cache等算子): 适配 ascend350(dvlite) Co-authored-by: zoujiamin<zoujiamin1@huawei.com> # message auto-generated for no-merge-commit merge: !13759 merge master into master feat(qkv_rms_norm_rope_cache等算子): 适配 ascend350(dvlite) Created-by: zoujiamin123 Commit-by: zoujiamin Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。-->算子改动: - qkv_rms_norm_rope_cache: def 新增 AICore().AddConfig("ascend350"),350 复用 950 的 regbaseConfig(共用 apt 入口);拷贝 ascend950 配置为 ascend350, bin_filename 后缀 _950 改为 _350;CMakeLists 保持原有无条件 add_ops_compile_options 写法,无需按芯片区分编译选项 - DequantRopeQuantKvcache / MoeTokenPermuteWithEp / MoeTokenPermuteWithEpGrad: def 新增 AddConfig("ascend350"),与 ascend950 同为无参 config - MoeTokenUnpermuteWithEpGrad: 新增 AddConfig("ascend350") 复用 950 的 aicore_config;DequantRopeQuantKvcache 拷贝 ascend950 config 目录为 ascend350(bin_filename 无 soc 后缀,零修改) ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。-->验证: 所有通路验证通过(ophost/opkernel 编译,binary/ascend350 产物齐全, ascend950 对照无回归),冒烟无问题。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [x ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!13759 | 9 天前 | |
revert(ci): 回退 ascend960dt 编译obj分组配置 Co-authored-by: gitcode_lijd<lijiandong20@huawei.com> # message auto-generated for no-merge-commit merge: !15083 merge fix_2 into master revert(ci): 回退 ascend960dt 编译obj分组配置 Created-by: gitcode_lijd Commit-by: gitcode_lijd Merged-by: cann-robot Description: ## 描述 回退 https://gitcode.com/cann/ops-transformer/pull/14790 中 **ascend960dt 档**的 group_op_dict 镜像新增;**ascend950 档的分组配置为实际所需,保留不变**。 ## 改动内容 仅 scripts/ci/gen_ops_soc.py 的 group_op_dict(单文件 -6/+1): - **ascend960dt**:恢复 !14790 合入前配置(fused_infer_attention_score=20、flash_attention_score_grad=5),移除镜像新增的 flash_attention_score/mega_moe/matmul_all_reduce/allto_all_matmul/matmul_reduce_scatter_v2 分组项 - **ascend950**:维持 !14790 合入后状态(mega_moe=40、matmul_all_reduce=40、allto_all_matmul=20、matmul_reduce_scatter_v2=20、flash_attention_score_grad=10、flash_attention_score=5) - 其他 SoC(910b / 910_93 / 350 / 960pr)不受影响 ## 影响面 仅 CI 编译任务的 obj 分组配置,不涉及算子 kernel / host 代码;4810b95dd 之后无其他提交改动该文件,回退干净应用。 ## 验证 - 本地实跑 python3 scripts/ci/gen_ops_soc.py:正常生成、退出码 0 - pre-commit 全钩子 Passed See merge request: cann/ops-transformer!15083 | 7 天前 | |
删除dispatch/combine_setup/teardown aclnn接口,graph文件 Co-authored-by: jiangxiuhan1<jiangxiuhan@huawei.com> # message auto-generated for no-merge-commit merge: !12568 merge issue into master 删除dispatch/combine_setup/teardown aclnn接口,graph文件 Created-by: jiangxiuhan1 Commit-by: jiangxiuhan1 Merged-by: cann-robot Description: ## 描述 moe_distribute_dispatch_setup,moe_distribute_dispatch_teardown,moe_distribute_combine_setup,moe_distribute_combine_teardown算子经评审日落,删除相关算子aclnn接口,graph文件。 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/6943 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [x] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!12568 | 7 天前 | |
fix[QFA]: aclnn_common HIFLOAT4数据类型兼容性修改回退 Co-authored-by: gcw_y7jrbx71<liao28@huawei.com> # message auto-generated for no-merge-commit merge: !14720 merge master into master fix[QFA]: aclnn_common HIFLOAT4数据类型兼容性修改回退 Created-by: gcw_y7jrbx71 Commit-by: gcw_y7jrbx71 Merged-by: cann-robot Description: ## 描述 PR 14417的修改影响了mc2算子,会导致torch-extension编译失败。此PR对该问题进行修复。 ## 关联的Issue 关联Issue [#6805](https://gitcode.com/cann/ops-transformer/issues/6805) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!14720 | 12 天前 | |
feat(pre-commit): 拦截类钩子报告统一落盘 pre-commit_reports + 健壮性与策略对齐 Co-authored-by: gitcode_lijd<lijiandong20@huawei.com> # message auto-generated for no-merge-commit merge: !12834 merge fix_2 into master feat(pre-commit): 拦截类钩子报告统一落盘 pre-commit_reports + 健壮性与策略对齐 Created-by: gitcode_lijd Commit-by: gitcode_lijd Merged-by: cann-robot Description: 关联Issue https://gitcode.com/cann/ops-transformer/issues/5016 ## 描述 #### 🐛 Bug 修复 / ✨ 特性增强 围绕既有 pre-commit 体系的三处完善(8 文件 +38/-12,1 笔提交):**拦截类钩子报告落盘**、**脚本健壮性修复**、**策略与文档对齐**。全部经 --all-files 全量实测校准。 ### 一、拦截类钩子报告统一落盘 pre-commit_reports/(不入 git) | 改动 | 内容 | |---|---| | scripts/run_codespell.sh(新增) | codespell 输出 tee 到 pre-commit_reports/codespell.log(entry 覆写仍跑托管 venv,PIPESTATUS 保退出码) | | .pre-commit-config.yaml | codespell entry 指向包装脚本 | | scripts/oat_check.sh | 报告落点 oat_reports/result.txt → pre-commit_reports/oat_result.txt(单文件与批量两条写路径同步) | | .gitignore | oat_reports/ → pre-commit_reports/ | | docs/zh/develop/pre-commit_guide.md | 失败排查节补报告位置说明 | 自动修类钩子(clang-format/ruff)直接改好文件无需报告;拼写/合规须人工处理,报告落盘便于复查与喂给 agent 修复。 ### 二、健壮性修复(姊妹仓全量实测暴露的同款隐患) | 改动 | 内容 | |---|---| | scripts/oat_check.sh | eval 拼接改数组传参 + -f 加引——文件名含 ()/&/[]/空格时 eval 会打断 shell 致扫描假死/假过(本仓当前 0 此类文件名,防御性修复) | | scripts/format_cpp.sh | 目录不存在时原仅打印提示仍继续执行,改为报错退出(exit 1) | ### 三、策略与文档对齐 | 改动 | 内容 | |---|---| | OAT.xml | 豁免 requirements*.txt(依赖清单,双过滤器)、*.info(cmake help,双过滤器)——全量扫描 250→240,残留均为真实缺头债(增量消化) | | trailing-whitespace | 补 --markdown-linebreak-ext=md(防静默剥掉 md 双空格硬换行语法,实测:双空格保留、三空格收敛、单空格照删) | | .clang-format | PointerAlignment 改 **Left**(int* p 指针随类型,领导确认口径;引用 & 同规则);年份 2025→2026 | ## 测试 - 全量 OAT 16 批真实扫描(无双误退出码);缺头 py 拦截有效、豁免类型放行 - md 双空格保留实测通过;codespell 命中落盘、OAT 报告落盘且目录不被 git 跟踪 - 本提交自身过全部钩子(含 OAT);yaml/xml/bash 语法全过 ## 留作仓主决策(本 PR 不动) - ruff --ignore 现行清单含 F841,F821,F401 等 F 系列——skills-dev 口径为「F 系列全启用抓真 bug」,两仓策略不同,建议仓主确认后另行统一 - third_party/catlass、third_party/opbase 下同名 oat_check.sh 为上游副本,未动 ## 类型标签 - [x] 🐛 Bug 修复 - [x] ✨ 特性增强 See merge request: cann/ops-transformer!12834 | 1 个月前 | |
产品文档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 | 3 个月前 | |
ci(pre-commit): OAT 检查切换为远程 compliance hook Co-authored-by: gitcode_lijd<lijiandong20@huawei.com> # message auto-generated for no-merge-commit merge: !13627 merge moonep_8 into master ci(pre-commit): OAT 检查切换为远程 compliance hook Created-by: gitcode_lijd Commit-by: gitcode_lijd Merged-by: cann-robot Description: 关联Issue https://gitcode.com/cann/ops-transformer/issues/6573 ## 描述 #### 🔧 配置变更 按社区统一接入方式(issue #6573,chenyx_2012)切换:OAT 合规检查由「仓内自维护 oat_check.sh + repo: local」切换为「HiAgent/compliance 远程 Python hook」,业务仓不再维护 OAT 脚本,OAT 版本由 rev 标签(v1.0.6)统一管控。 ## 改动(3 文件) - .pre-commit-config.yaml:repo: local 的 oat-check 块替换为 repo: https://gitcode.com/HiAgent/compliance, rev: v1.0.6(id: oat-check,pass_filenames/stages/verbose 与原配置一致) - 删除 scripts/oat_check.sh(本地脚本退役) - .gitignore 补 oat_reports/(远程 hook 报告目录) ## 行为等价性评估(已读 compliance v1.0.6 源码) 本地脚本的全部修复点均由远程 hook 覆盖,且架构更优: | 本地脚本修复点 | 远程 hook 实现 | |---|---| | 120KB 分批(E2BIG 防护) | **in-process 调用**(import oat 直接跑 pipeline),无 subprocess argv 限制,问题不存在 | | RC=1 无报告阻断 | report_file.is_file() 守卫:无报告且 RC!=0 → return 1 阻断 ✅ | | 跨批次旧报告复用 | state_file 按 HEAD SHA 聚合 + lock,_cleanup_stale_run_state 清理同 HEAD 残留 ✅ | | done-marker 去重 | "one terminal report per HEAD" 终局报告模型 + CI 分批调度取代 ✅ | | OAT.xml 支持 | _resolve_oat_xml 读仓根 OAT.xml ✅ | ## 测试 - YAML 解析通过;pre-commit run oat-check 实测通过(hook 环境自动克隆 compliance 仓并安装 OAT) - 报告目录变化:pre_commit_reports/oat_result.txt → oat_reports/result.txt(已 gitignore) ## 类型标签 - [x] 🔧 配置变更 See merge request: cann/ops-transformer!13627 | 14 天前 | |
master英文合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !14969 merge master into master master英文合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 商发的英文文档合入 ## 关联的Issue 关联Issue [#6488](https://gitcode.com/cann/ops-transformer/issues/6488) <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!14969 | 9 天前 | |
chore: replace gitcode.com links with atomgit.com Co-authored-by: qzzzy1<qiziyu2@huawei.com> # message auto-generated for no-merge-commit merge: !12664 merge master into master chore: replace gitcode.com links with atomgit.com Created-by: qzzzy1 Commit-by: qzzzy1 Merged-by: cann-robot Description: ## 描述 transformer仓gitcode.com改成atomgit.com ## 关联的Issue 关联Issue 5667 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!12664 | 1 个月前 | |
revert: add A6 support and isolate A5/A6 generations Co-authored-by: gravel1997<shili19@huawei.com> # message auto-generated for no-merge-commit merge: !15076 merge revert-mr-14664-1793439412650-auto into master revert: add A6 support and isolate A5/A6 generations Created-by: gravel1997 Commit-by: gravel1997 Merged-by: cann-robot Description: revert: add A6 support and isolate A5/A6 generations See merge request: cann/ops-transformer!15076 | 8 天前 | |
docs: CONTRIBUTING新增算子分类与贡献区别章节,补充生态算子覆盖率与用例上库要求 Co-authored-by: wang-minbo<wangminbo1@hisilicon.com> # message auto-generated for no-merge-commit merge: !14305 merge docs/contributing-builtin-experimental into master docs: CONTRIBUTING新增算子分类与贡献区别章节,补充生态算子覆盖率与用例上库要求 Created-by: wang-minbo Commit-by: wang-minbo Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-transformer/issues/6942 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!14305 | 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 个月前 | |
fix(pre-commit): 全仓OAT合规整改——许可证/版权头存量修复与豁免策略对齐 Co-authored-by: gitcode_lijd<lijiandong20@huawei.com> # message auto-generated for no-merge-commit merge: !13363 merge fix_3 into master fix(pre-commit): 全仓OAT合规整改——许可证/版权头存量修复与豁免策略对齐 Created-by: gitcode_lijd Commit-by: gitcode_lijd Merged-by: cann-robot Description: 关联Issue https://gitcode.com/cann/ops-transformer/issues/5885 ## 描述 全仓 OAT 合规整改( pre-commit run oat-check --all-files 从 200 条问题清零): **1. OAT.xml 豁免策略对齐**(仅新增 6 行 filteritem,零删除): - experimental/.*:孵化目录豁免 license/copyright/binary 三类检查(含 swiglu_gated_mlp 等第三方 Apache-2.0 双版权贡献代码,策略上不归管) - *.jpg:文档图片豁免二进制拦截(与已有 *.png 一致) - LICENSE:许可证正文本身,豁免许可证头检查 - Third_Party_Open_Source_Software_Notice:第三方声明文件,豁免版权头检查 **2. 文件头修复(167 个源文件)**: - 旧版许可证头(redistribute it and/or modify. 句式,2026-03 入库、04-03 OAT 上线前时间差遗留)→ 标准 CANN V2 头 - 变体错别字:Copyend (c)、You can not use、in in compliance、free software; 分号、CANN 1.0 许可证等 - 无头文件补标准头(如 golden.py、executor_aclnnMoeFusedTopk.py) - 版权年保留各文件原有年份;CRLF/混合行尾文件逐字节保持原行尾,diff 仅头部 **3. 历史遗留原因**:存量问题多经网页端合并(不触发本地钩子)或 OAT 上线前入库积累。 ## 验证 - pre-commit run oat-check --all-files:9 个批次全部 0 issue,Passed - git pc HEAD~1 + 显式 pre-commit run --files 复核收敛,第 2 笔为 clang-format/ruff/end-of-files 自动修复 - py/sh 语法、OAT.xml XML 合法性校验通过 基线 master:d9d81a50a See merge request: cann/ops-transformer!13363 | 30 天前 | |
remove README 文件中NPUFlashAttention的失效链接 Co-authored-by: wym_666<wangyumei11@huawei.com> # message auto-generated for no-merge-commit merge: !14157 merge readme into master remove README 文件中NPUFlashAttention的失效链接 Created-by: wym_666 Commit-by: wym_666 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> remove README 文件中NPUFlashAttention的失效链接 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> Issue [#5932](https://gitcode.com/cann/ops-transformer/issues/5932) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 不涉及 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 更新了README.md文件 ## 类型标签 <!-- [x] 表示选中 --> - [x] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!14157 | 20 天前 | |
fix: 修复离线场景三方件下载与在线构建URL不一致问题 Co-authored-by: Leeshoujem<michael.lixiaojie@huawei.com> # message auto-generated for no-merge-commit merge: !14028 merge fix/offline-3rd-party-download into master fix: 修复离线场景三方件下载与在线构建URL不一致问题 Created-by: Leeshoujem Commit-by: Leeshoujem Merged-by: cann-robot Description: ## 描述 fix: 修复离线场景三方件下载与在线构建URL不一致问题 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!14028 | 19 天前 | |
支持按模板参数编译算子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 | 8 个月前 | |
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 个月前 | |
960芯片型号支持 Co-authored-by: yangyajie<yangyajie3@huawei.com> # message auto-generated for no-merge-commit merge: !14638 merge master into master 960芯片型号支持 Created-by: yangyajie Commit-by: yangyajie Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!14638 | 11 天前 | |
删除dispatch/combine_setup/teardown aclnn接口,graph文件 Co-authored-by: jiangxiuhan1<jiangxiuhan@huawei.com> # message auto-generated for no-merge-commit merge: !12568 merge issue into master 删除dispatch/combine_setup/teardown aclnn接口,graph文件 Created-by: jiangxiuhan1 Commit-by: jiangxiuhan1 Merged-by: cann-robot Description: ## 描述 moe_distribute_dispatch_setup,moe_distribute_dispatch_teardown,moe_distribute_combine_setup,moe_distribute_combine_teardown算子经评审日落,删除相关算子aclnn接口,graph文件。 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/6943 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [x] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!12568 | 7 天前 | |
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 | 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 个月前 | |
升级 ops-transformer 版本至 9.2.0 Co-authored-by: wang-minbo<wangminbo1@hisilicon.com> # message auto-generated for no-merge-commit merge: !11465 merge master into master 升级 ops-transformer 版本至 9.2.0 Created-by: wang-minbo Commit-by: wang-minbo Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000-->https://gitcode.com/cann/ops-transformer/issues/5083 <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!11465 | 2 个月前 | |
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 | 8 个月前 |
🔥Latest News
- [2026/08] 仓内集成pre-commit代码检查框架,配置后
git commit时自动检查并修复格式问题,将规范问题拦截在提交阶段、提升代码合入效率,详见pre-commit配置指导书。 - [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算子插件,包括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&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://atomgit.com/cann/ops-transformer.git
git clone -b 9.0.0 https://atomgit.com/cann/ops-transformer.git
说明:若环境中已存在配套分支源码,可跳过本步骤,例如CANNLab默认已提供最新版本CANN对应的源码。
📖学习教程
💬相关信息
PS:本项目功能和文档正在持续更新和完善中,欢迎您关注最新版本。