本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。
| Files | Last commit | Last update |
|---|---|---|
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 days ago | |
feat(fa): enable DN unmerged routing and centralize arch35 template selection Co-authored-by: linengyao<linengyao@huawei.com> Co-authored-by: XiyueL<lixiyue5@huawei.com> # message auto-generated for no-merge-commit merge: !15010 merge flash_attn/enable-dn-unmerged-20261030 into master feat(fa): enable DN unmerged routing and centralize arch35 template selection Created-by: linengyao Commit-by: XiyueL;linengyao Merged-by: cann-robot Description: ## 描述 启用 arch35/Ascend950 的 DN 不合轴条件路由,并将 DN 不合轴、DN 合轴、ND 三种模板的最终选择统一到公共函数 GetFlashAttnTemplateId。 - DN_UNMERGED_ROUTE_ENABLED 保持开启;满足 V_D<=128、mask_mode 为 0/3、max_seqlen_q>=256 时优先选择 DN 不合轴。 - 未命中时,按原有无 mask、维度及 sOuter=64 条件选择 DN 合轴,其余选择 ND。 - Host 与 metadata AICPU 共用选择函数。Host 保留 UpdateTilingKeyInfo() 中原有模板更新位置;metadata 在乘 CV 比例前传入切块大小。 - 更新两条 Q256 UT 的名称和 tilingKey 期望,补充 metadata → FlashAttn 的可运行 PyTorch example。 基于 upstream/master e53295f159;不修改 arch92/Ascend960 路由。 ## 关联的Issue 无。 ## 测试 - C++11 路由对照:开关开启、关闭各验证 54,000 组输入,共 108,000 组全部一致。 - Host UT 366/366 全部通过。 - pre-commit 及同版本 example/UT 检查通过。 - [线上 compile 全部通过](https://gitcode.com/CANN/ops-transformer/actions/runs/15e2e381acde48a49ae71453b08c093a),对应当前提交 588527bdc9b5e4095df43b45d5412e539445edc8。 - 完整 custom 包已在 Ascend950 实机验证 example 输出、LSE 和 templateId=2;100 条代表用例全部通过。5 万条精度泛化尚未完成。 ## 文档更新 更新路由函数及调用处注释。 ## 类型标签 - [x] ♻️ 重构 - [x] 🔧 配置变更 See merge request: cann/ops-transformer!15010 | 7 days ago | |
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 | 9 days ago | |
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 days ago | |
[Docs]Metadata算子开发指南 Co-authored-by: ChengjiaWu<wuchengjia1@h-partners.com> # message auto-generated for no-merge-commit merge: !14856 merge master into master [Docs]Metadata算子开发指南 Created-by: ChengjiaWu Commit-by: ChengjiaWu Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 添加Metadata算子开发指南,提供原理解释和开发指导 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> Issue [#6912](https://gitcode.com/cann/ops-transformer/issues/6912) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!14856 | 10 days ago | |
基于<<<>>>调用的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 days ago | |
【社区任务】AscendC实现SlidingTileAttention算子功能 Co-authored-by: little_apple_12<020716ljh@gmail.com> # message auto-generated for no-merge-commit merge: !14372 merge feature/sliding-tile-attention into master 【社区任务】AscendC实现SlidingTileAttention算子功能 Created-by: little_apple_12 Commit-by: little_apple_12 Merged-by: cann-robot Description: ## 描述 新增 SlidingTileAttention 算子,面向视频生成模型的三维滑动 tile 注意力,语义与 FastVideo 的 sliding_tile_attention 对齐:图像 token 按 (6, 8, 8) 划分 tile,每个 head 的 query 只访问自己 滑动窗口内的图像 KV;存在文本时,图像 query 额外访问有效文本 KV,文本区 query 访问全部图像 KV 与 有效文本 KV。 本 PR 包含: - MIX kernel(Cube 做 Q·K^T 与 P·V,向量核在 FLOAT32 下做 online softmax 与输出累加), 不生成完整的 S x S 矩阵; - OpDef、InferShape / InferDataType 和 Tiling; - aclnn 两段式接口 aclnnSlidingTileAttentionGetWorkspaceSize / aclnnSlidingTileAttention; - README、ACLNN 接口文档、调用示例和 Host UT。 实现上的两点说明: 1. kernel 不接收 blocks x blocks 的 block mask。host 只下发每个 head 的窗口(单位为 tile)与 tile 网格,向量子核在 Cube 启动前按窗口写出每个 (head, image block) 的 KV 块列表,所有 batch 共用。 内存与预处理开销由 O(blocks^2) 降为 O(选中块数),最大画布 198x200x200(20625 个 tile)可用。 2. 窗口相同的连续 head 合并到一次 launch。两个 kernel 都按位置把一次 launch 的任务分给各核,一次 launch 内混合大小窗口会让拿到小窗口的核空等最大窗口的核:在 910B3 上,逐 head 使用 8 种不同窗口的 场景从 173 ms 降到 94 ms,窗口广播的用例不受影响。 头维按下表路由,补零列不改变 Q·K 的结果: | D | 执行方式 | |---|---| | 1~32 | 本算子的 MIX kernel,补零到 32 | | 33~48 | 本算子的 MIX kernel,补零到 48 | | 49~64 | 补零到 64;序列不超过 892 个 384-token 块时调用 BlockSparseAttention,否则用本算子的 MIX kernel | | 65~128 | 补零到 128,调用 BlockSparseAttention | ## 关联的Issue 关联 issue:https://gitcode.com/cann/ops-transformer/issues/6492 ## 测试 环境:CANN 9.0.0,Atlas A2 / Ascend 910B3。 - Host UT:bash build.sh --ophost_test --experimental --soc=ascend910b --ops=sliding_tile_attention, 覆盖 BNSD 无文本、含文本预留槽、BFLOAT16 的 InferShape 推导,以及 query 非四维时推导失败。 - 社区任务验收用例(随验收交付件提交,不复制进本目录):任务包 50 条官方用例在 FP64 参考下 50/50 通过(标准正态输入与 [-5,5] 均匀输入各一轮),官方 ATK 26.9.7 自测 46/46 通过 (通过率 100%、精度是否达标 Pass);另有泛化用例 61/61 通过(任意画布至 198x200x200、 1<=D<=128、B/N 放大、偶数窗口、参数校验)、文本区边界 8 条通过、确定性逐 bit 一致。 - 性能:按社区任务的平均性能口径,50 条官方用例的算术平均比值 0.878(>= 0.8);任务书两条正式场景 用官方用例标定的 A100 单位成本折算后分别为 1.11~1.32 与 1.15~1.36。 ## 文档更新 新增算子 README 与 docs/aclnnSlidingTileAttention.md。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [X] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!14372 | 9 days ago | |
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 | 10 days ago | |
fix(gmm):修复A6gmm hif4场景k==2拦截逻辑有误 Co-authored-by: weixin_54263091<chenwei689@huawei.com> # message auto-generated for no-merge-commit merge: !14543 merge fix/hif4-dim-value-check-a5 into master fix(gmm):修复A6gmm hif4场景k==2拦截逻辑有误 Created-by: weixin_54263091 Commit-by: cw;weixin_54263091 Merged-by: cann-robot Description: ## 描述 V121已解决的问题单,迁移到主线:修复A6gmm hif4场景k==2拦截逻辑有误 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/6838 ## 测试 二级冒烟 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!14543 | 7 days ago | |
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 | 10 days ago | |
fix(mega_moe): 兼容 CopyConcatGM2L1 带参 traits Co-authored-by: chenkang30<chenkang30@huawei.com> # message auto-generated for no-merge-commit merge: !14985 merge fix/mega-moe-copy-concat-traits-compat into master fix(mega_moe): 兼容 CopyConcatGM2L1 带参 traits Created-by: chenkang30 Commit-by: chenkang30 Merged-by: cann-robot Description: ## 修改内容 将 MegaMoe 的 NZ 权重 asc::te::copy 重载从固定匹配 copy_atom<copy_traits<CopyConcatGM2L1>> 改为泛型匹配 copy_atom<Atom>。 该修改同时兼容: - 当前 ops-tensor:.with(params) 返回单参数 copy_traits; - ops-tensor PR #551:.with(params) 返回带 trait 的双参数 copy_traits。 函数体和 MegaMoe 调用方式不变,继续通过 copy.params 使用完整 N/K,避免 PR #551 合入后 NZ 专用拷贝重载失效。 ## 验证 - pre-commit run --from-ref origin/master --to-ref HEAD:通过。 - MegaMoe kernel 编译:已尝试,但未完整通过。 - Ascend960DT:环境缺少 Ascend960DT_common.ini。 - Ascend950:构建在 tile_trait.h 的 gm_to_l1_trait 初始化及 CANN Hcomm 接口处报错;本次修改的 copy() 签名未出现编译错误。 - 受上述构建问题影响,未执行 NPU 精度测试。 See merge request: cann/ops-transformer!14985 | 7 days ago | |
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 days ago | |
补充 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 | 9 days ago | |
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 days ago | |
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 days ago | |
fix(mhc_pre_sinkhorn): 修复c对齐校验缺失/needBackward=false空指针561103/B=0梯度输出未写 Co-authored-by: renruhai<renruhai1@huawei.com> # message auto-generated for no-merge-commit merge: !14770 merge fix/issue-6619-6654-6694-mhc-pre-sinkhorn into master fix(mhc_pre_sinkhorn): 修复c对齐校验缺失/needBackward=false空指针561103/B=0梯度输出未写 Created-by: renruhai Commit-by: renruhai Merged-by: cann-robot Description: ## 描述 针对 #6619、#6654、#6694 三个缺陷的修复(mhc_pre_sinkhorn 算子族)。 **#6654**:文档规格约束(Atlas A2/A3系列产品)要求尾轴 c 为 128 的倍数,但 CheckShape 未校验,c=130 被静默接受。补充 c % 128 == 0 校验(返回 161002 并带实际 c 值),门控于非 TND 平台(!IsPlatformSupportTnd(),即 A2/A3),950/960DT 的 TND 路径不受影响。 **#6694**:needBackward=false 时 hPre/hcBeforeNorm/invRms/sumOut/normOut 传 nullptr 会流经参数校验进入组图阶段,框架 SelectBin 因空指针无法匹配算子原型定义而选核失败,最终以内部错误码 561103 返回(上报点 mhc_pre_sinkhorn.cpp:47 ADD_TO_LAUNCHER_LIST_AICORE)。内核侧不读 needBackward、无条件写全部 8 个输出,这 5 个输出必须为合法张量。修复:CheckNotNull 对这 5 个输出无条件做非空校验,传 nullptr 返回 ACLNN_ERR_PARAM_NULLPTR(161001),替代 561103。(曾评估过占位张量方案让 nullptr 走通,因会给推理路径增加 Fill 开销且内核本就要写全部输出、显存并无真实节省,未采用。) **#6619 缺陷2(B=0 输出未写)**:backward 空 tensor 早退分支不写任何输出,而 gradPhi/gradAlpha/gradBias 是参数梯度(shape 与 B 无关,B=0 时仍非空),调用方读到未初始化内存。早退路径对非空的 gradX/gradPhi/gradAlpha/gradBias 通过 l0op::Fill + ViewCopy 写零后再返回。 #6619 缺陷1(大 shape 梯度漂移)与缺陷3(并发输出污染)需要报告者提供的 FD 脚本 / 并发 harness / mssanitizer 原始日志复现定位,本 PR 暂不涉及。 ## 关联的Issue - https://gitcode.com/cann/ops-transformer/issues/6654 - https://gitcode.com/cann/ops-transformer/issues/6694 - https://gitcode.com/cann/ops-transformer/issues/6619 **附加修复:op_api UT 编译阻塞(非本 PR 业务代码问题,随 PR 一并合入以解除全仓阻塞)** CI 的 op_api UT 失败根因:UT 框架 stub(tests/ut/framework_normal/op_api/stub/opdev/platform.h)内嵌的 NpuArch/Ops::Base::DAV_* 常量快照缺少 DAV_5162,且该 stub 通过定义 OP_COMMON_OP_HOST_UTIL_OP_CONST_DEF_H guard 宏短路了 third_party 真头文件——导致 aclnn_platform.h(IsRegbase 引用 DAV_5162,!14033 引入)在 op_api UT 构建中编译失败('DAV_5162' is not a member of 'Ops::Base'),阻塞全仓所有 PR。stub 枚举与 constexpr 区各补一行 DAV_5162 对齐真头文件。实机验证:补丁后无任何临时改动情况下 scoped op_api UT 编译通过、mhc 全部 4 用例 PASSED。 ## 测试 Atlas 910B3(A2/DAV_2201),cann/master 未修复版与本分支分别构建(9.3.0 weekly 20261014 toolkit),LD_PRELOAD A/B,issue 原样场景探针(两轮稳定): | 场景 | 未修复 master | 本 PR | 预期 | |---|---|---|---| | #6654 前向 c=130 | 0(放行) | **161002** | 161002 | | #6654 前向 c=128 回归 | 0 | 0 | 0 | | #6694 needBackward=false + 5 出参 nullptr | 561103 | **161001** | 161001 | | #6694 needBackward=false + 5 出参分配(回归) | 0 | 0 | 0 | | #6619 backward B=0(gradPhi 预填 0xAB 金丝雀 49152B) | 全残留 | **全 0** | 全 0 | | #6619 backward 有效路径回归(bs=2,pattern 填充输入) | sync=0 | sync=0,gradPhi checksum 与修复前**逐位一致** | 行为不变 | ## 文档更新 NA(#6694 的"输出无效"措辞与可空规则、#6619 附带的 P3 头文件约束缺口,建议由资料模块随本 PR 合入后单独跟进) ## 类型标签 - [x] 🐛 Bug修复 See merge request: cann/ops-transformer!14770 | 9 days ago | |
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 days ago | |
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 month ago | |
产品文档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 months ago | |
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 days ago | |
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 | 10 days ago | |
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 month ago | |
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 | 9 days ago | |
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 month ago | |
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 months ago | |
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 days ago | |
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 days ago | |
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 | 20 days ago | |
支持按模板参数编译算子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 months ago | |
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 months ago | |
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 days ago | |
feat(mc2): 补齐责任田/UT SOC配置并新增文件覆盖率豁免名单 Co-authored-by: mutex_lock<chenyifan66@h-partners.com> # message auto-generated for no-merge-commit merge: !14317 merge ut_cov into master feat(mc2): 补齐责任田/UT SOC配置并新增文件覆盖率豁免名单 Created-by: mutex_lock Commit-by: mutex_lock Merged-by: cann-robot Description: ## 描述 补齐 mc2 算子看板责任田与 UT SOC 看护,并新增文件覆盖率豁免名单,支撑看板文件覆盖率统计与 CI 按变更触发正确芯片 UT。 ### 1. 责任田(classify_rule.yaml)本次补齐 相对补齐前,以下算子**新写入**责任田(✓ 表示本次写入该组): | 算子 | mc2_training | mc2_moe | mc2_moe_advanced | mc2_inference | |------|:------------:|:-------:|:----------------:|:-------------:| | allto_all_matmul_v2 | ✓ | | | | | all_gather_matmul_v3 | ✓ | | | ✓ | | matmul_all_reduce_add_rms_norm | ✓ | | | ✓ | | inplace_matmul_all_reduce_add_rms_norm | ✓ | | | ✓ | | attention_to_ffn_v2 | | | | ✓ | | ffn_to_attention_v2 | | | | ✓ | 补齐后:磁盘全部 **47** 个 mc2 算子均已在责任田中(含 tools / moe_ep_* / engram_* 等既有条目)。 ### 2. UT SOC(test_soc_config.yaml)本次补齐 / 重铺 **划分规则**(参考 quant_grouped_mat_mul_allto_allv): 1. 优先 op_host/op_tiling:arch35→ascend950,arch22→ascend910b,两边都有→两边都挂 2. 无 tiling arch:回退 op_kernel/arch22|arch35 3. 仍无:回退 op_host/config/<soc>/(ascend910_93 折叠进 ascend910b) 4. 写 mc2/<op>/op_host,若存在再写 tests/ut/op_host **本次新进入 SOC 的算子及对应芯片:** | 算子 | ascend310p | ascend910b | ascend950 | 判定依据(摘要) | |------|:----------:|:----------:|:---------:|------------------| | all_gather_matmul_v3 | | | ✓ | tiling arch35 | | allto_all_matmul_v2 | | | ✓ | tiling arch35 | | quant_grouped_mat_mul_allto_allv | | | ✓ | tiling arch35 | | distribute_barrier_extend | | | ✓ | kernel arch35 | | engram_fetch | | | ✓ | tiling arch35 | | engram_fetch_grad | | | ✓ | tiling arch35 | | engram_fetch_wait | | | ✓ | tiling arch35(暂无 UT) | | moe_distribute_combine_v3 | | ✓ | ✓ | tiling arch22+arch35 | | moe_distribute_dispatch_v3 | | ✓ | ✓ | tiling arch22+arch35 | | attention_to_ffn_v2 | | | ✓ | kernel arch35 | | ffn_to_attention_v2 | | | ✓ | kernel arch35 | **责任田本次补齐、但 SOC 此前已有映射的算子:** | 算子 | 责任田 | 当前 SOC | |------|--------|----------| | matmul_all_reduce_add_rms_norm | training + inference | ascend910b | | inplace_matmul_all_reduce_add_rms_norm | training + inference | ascend910b | **按规则重铺后,SOC 归属调整的既有算子:** | 算子 | 调整前 | 调整后 | |------|--------|--------| | all_gather_matmul | 910b | 910b + 950 | | distribute_barrier | 910b | 910b + 950 | | matmul_reduce_scatter | 910b | 910b + 950 | | moe_distribute_combine_setup / teardown | 950 | 910b + 950 | | moe_distribute_dispatch_setup / teardown | 950 | 910b + 950 | | quant_all_reduce | 910b + 950 | 950 | | quant_reduce_scatter | 910b + 950 | 950 | **未挂 SOC**(无 UT,且无 arch/config 可判定):moe_ep_combine / _epilogue、moe_ep_dispatch / _epilogue、tools。 覆盖汇总:ascend310p **1**、ascend910b **30**、ascend950 **35**;有 UT 的 mc2 算子均已进 SOC。 ### 3. 文件覆盖率豁免(tests/file_cov_exempt.yaml 新增) 按组件配置:dirs 豁免 op_kernel / op_graph,files 豁免纯声明/数据类型头。 仅影响看板文件覆盖率分母;未命中才豁免,命中优先并 WARN。 组件:mc2_training / mc2_moe / mc2_moe_advanced。 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/6725 ## 测试 - 对照磁盘算子清单:classify_rule 47/47;有 UT 算子均在 test_soc_config 中。 - 本地验证文件覆盖率豁免(coverage.info + tianti): - mc2_training:138/146 ≈ **94.52%**(语句 88.47%) - mc2_moe:4/4 = **100%**(语句 90.72%) - mc2_moe_advanced:82/106 ≈ **77.36%**(语句 84.22%) - files 静态检查:无实质函数定义;含构造函数体的头已移出白名单。 ## 文档更新 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [x] 🧪 测试 - [ ] 📦 构建/CI - [x] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!14317 | 14 days ago | |
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 months ago | |
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 months ago | |
升级 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 months ago | |
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 months ago |
🔥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:本项目功能和文档正在持续更新和完善中,欢迎您关注最新版本。