本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。
| Files | Last commit | Last update |
|---|---|---|
kirin任务重新上线,并删掉不再使用的kirin_smoke脚本 Co-authored-by: weixin_46515057<lidaoshuai@h-partners.com> # message auto-generated for no-merge-commit merge: !13402 merge master into master kirin任务重新上线,并删掉不再使用的kirin_smoke脚本 Created-by: weixin_46515057 Commit-by: weixin_46515057 Merged-by: cann-robot Description: kirin任务重新上线,并删掉不再使用的kirin_smoke脚本 See merge request: cann/ops-transformer!13402 | 1 month ago | |
mqfa to blue Co-authored-by: luoyun<luoyun38@huawei.com> # message auto-generated for no-merge-commit merge: !13088 merge only_to_blue into master mqfa to blue Created-by: luoyun-6 Commit-by: luoyun Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-transformer/issues/5826 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!13088 | 1 month ago | |
build: 更新 ops-tensor 依赖版本 Co-authored-by: zhoushaolong<zhoushaolong3@huawei.com> # message auto-generated for no-merge-commit merge: !13274 merge 0930commitid into master build: 更新 ops-tensor 依赖版本 Created-by: zhoushaolong Commit-by: zhoushaolong Merged-by: cann-robot Description: ## 描述 更新 cmake/third_party/ops-tensor.cmake 中的 OPTENSOR_TAG_ID,将 ops-tensor 第三方依赖从 eb28bc21b8c8ac95bd527f5035d1cbf216c2ebce 更新至 deea03a7d112b002a986783e39d4f91c92949518,同步 tensor API 最新版本。 ### 改动原因 同步 ops-tensor 仓库最新提交,获取 tensor API 的最新变更。 ### 改动方法 修改 OPTENSOR_TAG_ID 变量值为新的 commit SHA。 ## 关联的Issue [#5767](https://gitcode.com/cann/ops-transformer/issues/5767) ## 测试 ## 文档更新 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [x] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!13274 | 1 month ago | |
docs(op_graph): normalize product names in header comments Co-authored-by: zzzzzzyf_<zhouyunfei10@huawei.com> # message auto-generated for no-merge-commit merge: !12837 merge master into master docs(op_graph): normalize product names in header comments Created-by: zzzzzzyf_ Commit-by: zzzzzzyf_ Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> [#5647](https://gitcode.com/cann/ops-transformer/issues/5647) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 因修改注释,不涉及代码 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 随代码自动更新 ## 类型标签 <!-- [x] 表示选中 --> - [x] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!12837 | 1 month ago | |
docs: remove aclnnAllGatherAdd entries from official aclnn API doc lists Co-authored-by: LiuZonggu<liuzonggu1@huawei.com> # message auto-generated for no-merge-commit merge: !13442 merge fix/remove-non-commercial-desc into master docs: remove aclnnAllGatherAdd entries from official aclnn API doc lists Created-by: LiuZonggu Commit-by: LiuZonggu Merged-by: cann-robot Description: ## 描述 aclnnAllGatherAdd is an examples-only (non-commercial) operator under examples/mc2/all_gather_add, but it was listed in the official aclnn API documentation — the only entry whose link points into the examples/ directory. This PR removes its menu entry from docs/zh/menu_aclnn_api.md and its table row from docs/zh/op_api_list.md. The operator itself and its references in the examples/experimental area are unchanged. ## 关联的Issue [Fixes #5857](https://gitcode.com/cann/ops-transformer/issues/5857) ## 测试 - Verified no remaining aclnnAllGatherAdd references under docs/zh/ - Table structure and menu alphabetical order intact after removal - Documentation-only change, no code/build impact ## 文档更新 This PR is a documentation update: 2 lines removed from 2 Chinese docs. ## 类型标签 - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!13442 | 1 month 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 | |
add qli&qsli Co-authored-by: jj_tang<tangjingjie2@huawei.com> # message auto-generated for no-merge-commit merge: !13294 merge experimental_split_mode into master add qli&qsli Created-by: jj_tang Commit-by: jj_tang Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 一、总体设计 两级 TopK:第一级按块粗筛出候选块,第二级在候选块内精筛出 token 级 TopK。 QuantLightningIndexerV2 QuantSparseLightningIndexer q,k ──► (第一级 source:块级打分 + 块级 topk)──► candidate_topk_index ──► (第二级:候选块内 token 级 topk)──► sparse_indices 二、接口(现行) 主算子 QuantLightningIndexerV2 开关兼候选块个数:candidate_topk_blocks,-1=关闭(现网行为,默认)、2048=开启第一级(当前唯一有效值)。 候选块大小:candidate_block_size,关闭时必须为 -1;开启时必须 > 0(当前仅支持 8,与块内 BlockReduceMax 的 32B 归约粒度一致)。 输出:sparse_indices、sparse_values(return_value=0 时为空 tensor)、开启时的块级候选索引 candidate_topk_index_out(BSND (B,S1,N2,2048) / TND (T1,N2,2048);关闭时为空 tensor)、预留输出 candidate_block_length(恒为空 tensor)。 量化:quant_mode 仅支持 2(INT8 per-token-head);topk ∈ [1, 2048];mask_mode ∈ {0, 3};layout_q ∈ {BSND, TND}(TND 需传 cu_seqlens_q);layout_k 仅 PA_BBND。 第二级 QuantSparseLightningIndexer 输入:candidate_topk_index(必传,INT32;末维即候选块个数,当前仅支持 2048,tiling 由输入形状推导并校验)、metadata(必传)、candidate_block_length(预留,仅接受空 tensor)等。 候选块大小 candidate_block_size(当前仅支持 8);其余量化/掩码/topk/layout 约束与第一级一致。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。-->   ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!13294 | 1 month ago | |
ffn_worker_batching修复文档问题&补充蓝驱ttk用例 Co-authored-by: cpy_123456<chenpengyi@huawei.com> # message auto-generated for no-merge-commit merge: !13197 merge cpy_929 into master ffn_worker_batching修复文档问题&补充蓝驱ttk用例 Created-by: cpy_123456 Commit-by: cpy_123456 Merged-by: cann-robot Description: ## 描述 本 PR 主要为 ffn_worker_batching 的 TTK 测试补充与修复用例支撑能力:在 tests/assets 中新增 TTK 兼容适配层与 GEIR 辅助重定位能力,重写 golden.py 中 Torch 用例执行配置与 RECV 描述符重发布逻辑,并新增 worker 预加载引导模块;同时 examples/test_aclnn_ffn_worker_batching_v2.cpp 仅为版权年份更新与指针声明风格调整,无业务逻辑变化。 主要改动 新增 TTK 兼容适配模块 ttk_compat.py: 通过 install_graph、install_geir、adapt_geir_source、remember_graph_state 等函数替换 TTK 私有入口(_compile_model_aclgraph、_render_template、write_case_config、_build_compile_cmd),在不修改 TTK 源码的前提下为 FFN 提供 ACL graph 重放与 GEIR 重定位支持,并对不支持的签名/模板直接报错。 新增 GEIR 辅助重定位头文件 ffn_geir_relocations.h: 定义 RelocateInput 及 input_relocations、auxiliary_buffers,按配置将辅助缓冲拷入 HBM 并把设备地址写回输入字节,供 TTK GEIR 可执行文件解析二级指针。 改造 golden.py 的 Torch 用例规格 TorchFfnWorkerBatchingTestSpec: 移除原先对 need_schedule != 0 的限制,新增 _configure_torch_execution 选择 eager/ACL graph 执行模式,并新增 npu_graph_before_run/npu_graph_after_run 在每次编译调用前后就地恢复描述符与 header、校验描述符是否被消费。 优化 golden.py 的数据生成与比对逻辑: _generate_group_list 改为基于 numpy 分块求 run 边界生成分组,AclnnFfnWorkerBatchingTestSpec 的 gather 循环改为按约 16 MiB 分块向量化写入,_numeric_samples 对 FP8 token 改为在 FP32 采样后按目标 dtype 原生舍入转换。 新增 worker 引导模块 _ffn_ttk_worker_bootstrap.py 与入口 _run_ttk_with_installed_package: forkserver 导入期仅用标准库,借助 os.register_at_fork 在子进程 fork 后再导入已安装的 cann_ops_transformer 并校验包路径,避免在 forkserver 中初始化 NPU 状态污染后续 worker。 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/5729 ## 测试 david 冒烟 蓝区ttk ## 文档更新 docs/zh/menu_aclnn_api.md ffn/ffn_worker_batching/README.md ffn/ffn_worker_batching/docs/aclnnFfnWorkerBatching.md ffn/ffn_worker_batching/docs/aclnnFfnWorkerBatchingV2.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [x] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!13197 | 1 month ago | |
feat: 新增 GroupedMatmulSwigluQuantWeightNzV3 算子及 aclnn/torch 接口 Co-authored-by: zhoushaolong<zhoushaolong3@huawei.com> # message auto-generated for no-merge-commit merge: !11903 merge feature/gmm-swiglu-quant-weight-nz-v3 into master feat: 新增 GroupedMatmulSwigluQuantWeightNzV3 算子及 aclnn/torch 接口 Created-by: zhoushaolong Commit-by: zhoushaolong Merged-by: cann-robot Description: ## 描述 新增 GroupedMatmulSwigluQuantWeightNzV3 算子:融合 GroupedMatmul、MXFP8 反量化、SwiGLU 与 MXFP8 量化的 weight NZ 特化版本,直接接收 FRACTAL_NZ 格式 weight,当前支持 Ascend 950PR/Ascend 950DT 单 Tensor MXFP8 场景(swigluMode 当前仅支持 2)。 相对 V2 接口的主要扩展: - 新增 SwiGLU 计算参数 swigluMode、clampLimit、gluAlpha、gluBias(mode 2:前半部分 clamp 后执行带 alpha 的 SiLU,后半部分 clamp 加 bias 作线性分支,逐元素相乘) - 新增 MX 量化参数 roundMode、scaleAlg、dstTypeMax 主要交付内容: - op_api:aclnnGroupedMatmulSwigluQuantWeightNzV3 两段式接口(GetWorkspaceSize + 执行) - op_host:算子注册、infershape、tiling(通用 + arch35 tensor api tiling) - op_kernel:arch35 MXFP8 tensor api kernel(含 apt 适配) - torch_extension:grouped_matmul_swiglu_quant_v2 torch 扩展(csrc + python 绑定) - 公共 cgmct:epilogue 支持 V3 SwiGLU 参数与多种 scale 算法(cuBLAS 对齐、动态 dtype 范围),yScale 类型化为 E8M0 并按有效分组紧凑拷贝 - docs / example:aclnn 接口文档、torchapi 文档、README 与菜单更新、arch35 调测示例 ## 关联的Issue - 关联Issue #5552 ## 测试 新增 UT: - tests/ut/op_api/test_aclnn_grouped_matmul_swiglu_quant_weight_nz_v3.cpp(含用例 csv) - tests/ut/op_host/test_grouped_matmul_swiglu_quant_weight_nz_v3_route_tiling.cpp(含 tensor api gate 用例说明) ## 文档更新 新增 docs/aclnnGroupedMatmulSwigluQuantWeightNzV3.md 与 docs/torchapi_grouped_matmul_swiglu_quant_v2.md;更新 README.md、docs/zh/menu_torch_api.md、docs/zh/torch_api_list.md。 ## 类型标签 - [ ] 🐛 Bug修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!11903 | 1 month 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 | |
allto_all_mm_v2 set schedule mode to 1 Co-authored-by: MeiWenxuan<meiwenxuan@huawei.com> # message auto-generated for no-merge-commit merge: !12852 merge master into master allto_all_mm_v2 set schedule mode to 1 Created-by: MeiWenxuan Commit-by: MeiWenxuan Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 设置独占全核,让所有核空闲以后才启动,有多核同步指令时需要设置以避免出现网络挂死 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-transformer/issues/4713 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!12852 | 1 month ago | |
fix(block_attention_residuals_grad): kimik3反向算子增加输入shape约束 Co-authored-by: zzzzzzyf_<zhouyunfei10@huawei.com> # message auto-generated for no-merge-commit merge: !13210 merge master into master fix(block_attention_residuals_grad): kimik3反向算子增加输入shape约束 Created-by: zzzzzzyf_ Commit-by: zzzzzzyf_ Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> kimik3反向算子增加输入shape约束 B >= 64 2048 <= H <= 50w ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> [#5738](https://gitcode.com/cann/ops-transformer/issues/5738) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 更新了README.md文件 ## 类型标签 <!-- [x] 表示选中 --> - [x] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!13210 | 1 month ago | |
【主线资料】删除调用示例中重复的#include <iostream>并修正sortedIndices与permutedTokens之间缺失的空格 Co-authored-by: z00887518<zhouxuan78@huawei.com> # message auto-generated for no-merge-commit merge: !13406 merge master into master 【主线资料】删除调用示例中重复的#include <iostream>并修正sortedIndices与permutedTokens之间缺失的空格 Created-by: zhouxuan78 Commit-by: z00887518 Merged-by: cann-robot Description: ## 描述 删除调用示例中重复的#include 并修正sortedIndices与permutedTokens之间缺失的空格 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/5837 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!13406 | 1 month ago | |
融合pass判别适配ascend960dt(DAV_9201) Co-authored-by: alfengyuan<yyfgdut@gmail.com> # message auto-generated for no-merge-commit merge: !13474 merge master into master fix(posembedding): 融合pass判别适配ascend960dt(DAV_9201) Created-by: alfengyuan Commit-by: alfengyuan Merged-by: cann-robot Description: ## 描述 Ascend960DT 复用 950 同族 regbase kernel,但运行时上报独立 NpuArch DAV_9201(见 opbase !913 / cann/opbase#473)。此前 rotary_position_embedding / rotary_position_embedding_grad / interleave_rope 三个融合 pass 的 IsRegBasePlatform() 仅识别 DAV_3510/DAV_5102,导致 960dt 上 RotaryMul/RotaryMulGrad/InterleaveRope 融合不触发。 本 MR 在三个融合 pass 的 arch gating 中补入 DAV_9201,并同步修正 UT 中 960dt 的 arch 映射(3510 → 9201)、新增 960dt 融合成功用例(原「未列举同 arch SoC」用例改用虚构型号 Ascend950X 保留原语义)。 注:公共判别 common/src/op_host/tiling_util.cpp 的 IsRegbaseSocVersion 存在同样问题(调用方 40+ 算子,影响面大),本 MR 已回退不动该文件,建议后续单独评估处理(详见关联 issue)。 ## 关联的Issue Closes #5821 https://gitcode.com/cann/ops-transformer/issues/5821 ## 测试 - 本地完成 cleancode 自查(NBSP、行宽、注释规范) - 新增/更新 3 个融合 pass 的 UT 用例:Ascend960DT(DAV_9201) 融合成功、非 regbase 平台不融合、soc spec 查询失败不融合 - 本地无 CANN 环境,需 CI 验证编译与 UT ## 文档更新 不涉及 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: 🤖 Generated with [Claude Code](https://claude.com/claude-code) See merge request: cann/ops-transformer!13474 | 1 month 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 | |
AF分离算子性能优化(batch接口多channel) Co-authored-by: jiangxiuhan1<jiangxiuhan@huawei.com> # message auto-generated for no-merge-commit merge: !12452 merge channel_ffn into master AF分离算子性能优化(batch接口多channel) Created-by: jiangxiuhan1 Commit-by: jiangxiuhan1 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: # PR #12452 代码检视报告 ## 检视概览 - **PR**:https://gitcode.com/cann/ops-transformer/pull/12452(AF 分离算子性能优化——URMA staging 区、多 channel、多层 Layer 支持、batch 接口) - **仓库**:ops-transformer(PR head: 950b5390e) - **变更规模**:27 个文件(26 修改 + 1 删除),diff 3680 行 - **检视范围**:mc2/attention_to_ffn(_v2)、mc2/ffn_to_attention(_v2)、mc2/common、tests/(Kernel + Tiling + op_api + torch_extension + UT + 文档 + 配置,全侧别) - **检视方法**:假设检验驱动(H0/H1、证据收集、自信值 ≥70% 判违规);规则库 cpp-secure / ascendc-topk / ascendc-api / ascendc-perf / mc2-specific / cpp-general / cpp-style / python-secure / regbase-review-checks - **检视流程**:文件分组(5 组)→ 全局预扫描(条例级匹配)→ 负载感知波次逐条检视(6 波 × 51 组,约 161 条规则实例)→ 综合研判(跨组模式识别 / 冲突解决 / 置信度过滤)→ 行号校验(红线 diff 范围校验 22/22 通过) - **检视时间**:2026-09-23 ## 检视统计 | 状态 | 条例数 | 占比 | |------|------|------| | PASS | 112 | 69.6% | | FAIL(发现问题) | 23(去重后 17 个独立问题) | 14.3% | | SUSPICIOUS(待确认附录) | 3 | 1.9% | | N/A(侧别/模式不匹配) | 22 | 13.7% | **综合研判**:系统性风险 2 项;冲突解决 2 项(MC2-04 vs MC2-18 范围互补、SEC-5.1 维持 PASS);去重 4 类根因(F2A 校验删除 7 条例、layerId 2 处、TIL-2 跨组 2 处、microBatchNum 2 条例)。 ### 全局摘要与系统性风险 本 PR 将两个 URMA 通信算子从"逐轮 SyncAll + core0 集中 WriteNbi"重构为"staging → counting-sort 建表 → 多 channel 并行 Batch WQE relay"三阶段,并引入多层 Layer(L≥1)与用户自管通信窗口。重构整体方向合理(同步完备性、DataCopy 对齐、批量搬运、资源生命周期等大量条例 PASS),但存在两类系统性回归: - **系统性风险 1(校验删除回归)**:kernel 侧与 host 侧共 4 处"删除既有防御且无替代"——F2A kernel 全部运行时元数据/窗口边界断言(7 条例独立确认)、ffn_to_attention 的 microBatchNum==1 校验、A2F 的 aivNum==0 校验、A2F 的 UB 容量校验缺失。**建议对本 PR 全部"删除 ascendc_assert / OP_TILING_CHECK"的 diff 段做一次专项全局排查**。 - **系统性风险 2(多层支持遗漏)**:allowMultiLayer 启用后,layerId 运行时校验、scales 层偏移、expertRankTable 层偏移三处仅 1 处(expertRankTable)正确实现,另 2 处遗漏。 --- ## 发现问题(HIGH 置信度) ### H1.【系统性·安全】F2A kernel 重构删除全部运行时元数据与窗口边界校验,负值/越界输入可致 GM 越界读 + 本地/远端窗口越界写 **确认条例**:SEC-2.2(105%)、SEC-1.1(120%)、SEC-1.3(95%)、SEC-3.3(85%)、SEC-3.5(105%)、MC2-05(100%)、GEN-1.1(90%)——7 个条例组独立确认同一根因 **问题描述**:本 PR 将 ReadTokenMetaData 重构为 PrefetchTokenMetaData + ReadTokenMetaDataFromLocal 时,删除了旧代码全部值域/边界断言且无任何替代: 1. actualTokenNum(int64 设备张量值)非负与 ≤maxTokenNum 两条断言被删——负值经 static_cast<uint64_t> 回绕为 ~1.8e19,scanStart/scanEnd 巨大 → PrefetchTokenMetaData 对 sessionIds/microBatchIds/tokenIds/expertOffsets 四个 GM 张量越界读;per-rank 计数越过按 maxTokenNum 分配的地址表容量。 2. curAttenWorkIds / curMicroBatchIds / curTokenBatchOffset / curTokenTopkOffset 四字段范围断言(<axisA_ / <microBatchNum_ / <axisBS_ / <expertNumPerToken_)全部被删——任一负值 int32→uint32 回绕 ~4.29e9,tokenSlot 经乘法放大为天量偏移。 3. 窗口写前断言 remoteDataOffset ≤ requiredWindowSize_、remoteFlagOffset ≤ winTokenInfoTableSize_ 与 curRankWinAddr != nullptr 判空被删——SendToLocal(本地 DataCopyPad)与 AppendRemoteDataWrite/AppendRemoteFlagWrite(URMA WriteNbi 远端 DMA 写)目标地址无界,**构成跨卡远端内存踩踏**。 4. axisH_ ≤ axisHS_ 断言被删且 FT2A tiling 无等价关系校验(对照:AT2FFN 侧本 PR 新增了 CheckUrmaWinSlotCapacity)——H>HS 时每 token 写入溢出 HS 槽位。 5. 上游无补偿:aclnn 层仅判空指针,torch 层仅校验 dim/dtype,tiling 只能校验 shape(无法校验设备张量**值**)。 **代码片段**(mc2/ffn_to_attention_v2/op_kernel/ffn_to_attention_urma.h 行 202-237): cpp inputDataAddr_ = x; xGMTensor_.SetGlobalBuffer(reinterpret_cast<__gm__ xType *>(x)); sessionIdsGMTensor_.SetGlobalBuffer(reinterpret_cast<__gm__ int32_t *>(sessionIds)); microBatchIdsGMTensor_.SetGlobalBuffer(reinterpret_cast<__gm__ int32_t *>(microBatchIds)); tokenIdsGMTensor_.SetGlobalBuffer(reinterpret_cast<__gm__ int32_t *>(tokenIds)); expertOffsetsGMTensor_.SetGlobalBuffer(reinterpret_cast<__gm__ int32_t *>(expertOffsets)); actualTokenNumGMTensor_.SetGlobalBuffer(reinterpret_cast<__gm__ int64_t *>(actualTokenNum)); if constexpr (isInputRankTable) { attnRankTableGMTensor_.SetGlobalBuffer(reinterpret_cast<__gm__ int32_t *>(attnRankTable)); } actualTokenNum_ = static_cast<uint64_t>(actualTokenNumGMTensor_.GetValue(0UL)); // 旧: >=0 与 <=maxTokenNum_ 断言已删 hSize_ = static_cast<uint64_t>(axisH_) * sizeof(xType); // 旧: axisH_<=axisHS_ 断言已删 batchSizeSendCnt_ = static_cast<uint64_t>(axisBS_) * expertNumPerToken_; const uint64_t tokenSlotNum = static_cast<uint64_t>(microBatchNum_) * batchSizeSendCnt_; winTokenInfoTableSize_ = Ceil(tokenSlotNum * sizeof(int32_t), URMA_WIN_ADDR_ALIGN) * URMA_WIN_ADDR_ALIGN; const uint64_t tokenWindowEnd = winTokenInfoTableSize_ + tokenSlotNum * axisHS_ * sizeof(xType); const uint64_t flagWindowOffset = Ceil(tokenWindowEnd, static_cast<uint64_t>(URMA_FLAG_SLOT_SIZE)) * URMA_FLAG_SLOT_SIZE; GM_ADDR localScratchAddr = GetWindowAddr(rankId_) + flagWindowOffset; localFlagAddr_ = localScratchAddr + static_cast<uint64_t>(aivId_) * URMA_FLAG_SLOT_SIZE; **代码片段**(同文件 行 314-337,六处断言全部删除): cpp __aicore__ inline void FFNToAttentionUrma<TemplateFFNToAttentionUrmaTypeFunc>::ReadTokenMetaDataFromLocal( ReadTokenMetaDataStruct &metaDataStruct, uint32_t localOffset) { int32_t curAttenWorkId = metadataTensor_.GetValue(localOffset); // 旧: assert(>=0) 已删 metaDataStruct.curAttenWorkIds = static_cast<uint32_t>(curAttenWorkId); metaDataStruct.curAttenWorkRank = metaDataStruct.curAttenWorkIds; if constexpr (isInputRankTable) { int32_t curAttenWorkRank = attnRankTableGMTensor_.GetValue(metaDataStruct.curAttenWorkIds); // OOB 读 metaDataStruct.curAttenWorkRank = static_cast<uint32_t>(curAttenWorkRank); } int32_t curMicroBatchId = metadataTensor_.GetValue(METADATA_CHUNK_TOKEN_NUM + localOffset); metaDataStruct.curMicroBatchIds = static_cast<uint32_t>(curMicroBatchId); // 旧: assert(<microBatchNum_) 已删 int32_t curTokenBatchOffset = metadataTensor_.GetValue(METADATA_TOKEN_BATCH_OFFSET_FIELD_INDEX * METADATA_CHUNK_TOKEN_NUM + localOffset); metaDataStruct.curTokenBatchOffset = static_cast<uint32_t>(curTokenBatchOffset); // 旧: assert(<axisBS_) 已删 int32_t curTokenTopkOffset = metadataTensor_.GetValue(METADATA_TOKEN_TOPK_OFFSET_FIELD_INDEX * METADATA_CHUNK_TOKEN_NUM + localOffset); metaDataStruct.curTokenTopkOffset = static_cast<uint32_t>(curTokenTopkOffset); // 旧: assert(<expertNumPerToken_) 已删 } **代码片段**(同文件 行 499-516 + 364-377,未校验值直接推导远端写地址): cpp for (uint32_t i = 0U; i < groupTokens; ++i) { uint64_t sourceTokenIndex = groupStart + i; ReadTokenMetaDataStruct metaDataStruct; ReadTokenMetaDataFromLocal(metaDataStruct, i); // Rank range was already validated in Pass 1 over the same [scanStart, scanEnd) window. uint64_t tokenSlot = (static_cast<uint64_t>(metaDataStruct.curMicroBatchIds) * axisBS_ + metaDataStruct.curTokenBatchOffset) * expertNumPerToken_ + metaDataStruct.curTokenTopkOffset; // 三分量均未校验 uint64_t remoteDataOffset = winTokenInfoTableSize_ + tokenSlot * static_cast<uint64_t>(axisHS_) * sizeof(xType); uint64_t remoteFlagOffset = tokenSlot * sizeof(int32_t); uint32_t dstRank = metaDataStruct.curAttenWorkRank; if (dstRank == rankId_) { SendToLocal(localWindowAddr + remoteDataOffset, localWindowAddr + remoteFlagOffset, sourceTokenIndex, xCopyParams); // 本地窗口越界写 continue; } ... // AppendRemoteDataWrite(行 364-377): uint64_t remoteDataOffset = winTokenInfoTableSize_ + addressEntry.tokenSlot * static_cast<uint64_t>(axisHS_) * sizeof(xType); GM_ADDR sourceDataAddr = inputDataAddr_ + addressEntry.sourceTokenIndex * hSize_; (void)hcomm_.WriteNbi<REMOTE_WQE_CONFIG>(batchHandle, remoteWindowAddr + remoteDataOffset, sourceDataAddr, static_cast<uint32_t>(hSize_)); // URMA 远端 DMA 写,目标无界 **假设检验证据**:正向——规范违反 +40%(外部数据作索引/偏移未校验、有符号→无符号裸转换、窗口写入无边界);上下文防御缺失 +30%(唯一剩余断言 curAttenWorkRank < worldSize_(:429)只覆盖 rank 字段,注释自证仅校验 rank);PR 归属 +20%(断言删除全部在 diff 删除行内);数据流/调用链风险 +15%~+15%(输入为设备张量运行时值,偏移直接进入 WriteNbi/DataCopyPad)。负向——上游校验均经验证不覆盖张量**值**(0 分)。自信值 85%~120%(各条例)≥ 70% → 判定违规。 **修复建议**: 1. Init 恢复:int64_t v = actualTokenNumGMTensor_.GetValue(0UL); ascendc_assert(v >= 0 && (uint64_t)v <= maxTokenNum_, ...);恢复 axisH_ <= axisHS_ 断言。 2. ReadTokenMetaDataFromLocal(或 Pass 1 消费点)恢复四字段范围校验;对直接决定写地址的 tokenSlot 增加硬校验 ascendc_assert(tokenSlot < tokenSlotNum)(ascendc_assert 可能被编译掉,建议至少此项使用不可编译剔除的检查)。 3. SendToLocal/AppendRemoteDataWrite/AppendRemoteFlagWrite 写前恢复以 cclBufferSize/winTokenInfoTableSize_ 为界的偏移断言。 4. FT2A tiling 增加 Host 侧 H > HS 拒绝(对齐 AT2FFN 的 CheckUrmaWinSlotCapacity)。 --- ### H2.【安全】A2F 多层支持:运行时 layerId 无 < L 校验 + layerId_ * expertRankTableCnt uint32 乘法回绕 **确认条例**:SEC-1.1(105%)、SEC-2.2 违规点3(90%) **问题描述**:本 PR 将 expert_rank_table Dim0 校验由 ==1 放宽为 ≥1 并启用 allowMultiLayer=true,文档声明"运行时 LayerId 取值需小于 L",但**该约束无任何代码 enforcement**:kernel 侧 layerId_ 取自 GM 张量后未与 axisL_(tilingData 已下发、Init 行 287 已加载但从未用于校验)比较;且 layIdsExpRankTableOffset_ = layerId_ * expertRankTableCnt 为 uint32×uint32 在 32 位空间回绕后才赋给 uint64。layerId_ ≥ L 或负值时:越界读 expertRankTable → 垃圾 rankCnt/toRankId → GetWindowAddr(toRankId_) → epHcclBuffer_[toRankId] 二次越界(该读发生在 Process 行 1131 的 toRankId 断言**之前**)。此前 L 恒为 1(layerId_ 恒 0)使该风险不可达,本 PR 首次激活。 **代码片段**(mc2/attention_to_ffn_v2/op_kernel/attention_to_ffn_urma.h 行 318-327、607-618): ```cpp DataCacheCleanAndInvalid<int32_t, CacheLine::SINGLE_CACHE_LINE, DcciDst::CACHELINE_OUT>(sessionIdGMTensor_); sessionId_ = sessionIdGMTensor_.GetValue(0); DataCacheCleanAndInvalid See merge request: cann/ops-transformer!12452 | 1 month ago | |
mqfa to blue Co-authored-by: luoyun<luoyun38@huawei.com> # message auto-generated for no-merge-commit merge: !13088 merge only_to_blue into master mqfa to blue Created-by: luoyun-6 Commit-by: luoyun Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-transformer/issues/5826 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!13088 | 1 month 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 | |
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 | |
ci(compile): 新增 build.sh --PR_COMPILE 编译范围推导机制(白名单优先 + depends反向闭包 + def SoC过滤) Co-authored-by: gitcode_lijd<lijiandong20@huawei.com> # message auto-generated for no-merge-commit merge: !13100 merge test into master ci(compile): 新增 build.sh --PR_COMPILE 编译范围推导机制(白名单优先 + depends反向闭包 + def SoC过滤) Created-by: gitcode_lijd Commit-by: gitcode_lijd Merged-by: cann-robot Description: ## 描述 新增 PR 编译范围推导机制,替代原先由 tests/test_config.yaml(example 看护规则)间接决定编译范围的方式。**本 PR 为纯新增:不改任何现有逻辑/任务,UT 维持原状,master 上无 --PR_COMPILE 调用方,对现存 CI 零影响。** ### 1. 推导流程(cmake/scripts/parse_compile_scope.py) 变更文件 → 映射为 <domain>/<op> 键(仅认 attention/ffn/gmm/mamba/mc2/mhc/moe/posembedding 八个大目录;docs/、.md/.json/.ini 跳过)→ 按以下顺序决定编译清单: 1. **白名单优先**:直接变更的算子命中 tests/compile_scope_whitelist.yaml 时,按其 impact(完整编译清单)+ soc(必填,加载即校验,缺失直接报错)选定。当前收录 18 条目:attention/*_metadata(impact=自身+对应无后缀算子,soc 按无后缀 def 推导)、AICPU 算子 attention_worker_scheduler/ffn_worker_scheduler(仅 ascend910b)、mhc/mhc_sinkhorn_common(impact 为 mhc_sinkhorn 正反向,ascend950)。 2. **未命中走正规流程**:op_host/CMakeLists.txt 的 *_depends(兼容 PARENT_SCOPE 与 CACHE INTERNAL 标记)反向闭包,拉出所有声明依赖变更算子的下游;再按 *def.cpp 的 AICore AddConfig 做目标 SoC 过滤。 3. **域内 common/3rd**:变更映射为共享键(如 mc2/common),经 depends 反向闭包触发所有依赖它的算子(如改 mc2/common @910b → 17 个 mc2 算子)。 ### 2. SoC 依据 唯一依据为 def.cpp AddConfig(支持 ascend 短名/长名互认);op_host/config/<soc> 目录已废弃不作依据。def 中宏/变量等非常规写法的识别待 def 规范化后加强。 ### 3. build.sh 集成 新增 --PR_COMPILE <pr_filelist> 选项(注意 --soc 需在其前传):推导为空时打印提示并 exit 200(CI 侧约定 200=跳过成功);非空时设为 ascend_op_name 并进入 custom pkg 编译(出 kernel bin)。 ### 4. 白名单自检 python3 cmake/scripts/parse_compile_scope.py --check:校验白名单条目(算子存在、impact 目标存在、soc 合法、impact 为列表、soc 必填),有错非零退出逐条打印。已挂 pre-commit compile-scope-whitelist-check(仅白名单文件变更时触发)。 ### 5. 已确认的边界(不在本 PR 处理) - ascend310p/ascend350 暂不编译(后续单独出方案);多 SoC 单构建不支持(CI 走单 SoC 命令); - 框架级变更(根目录脚本/cmake 公共件)不触发编译范围,由改动方自行验证; - UT 逻辑完全不动(test_soc_config.yaml/get_soc_version.py 保留原样)。 ## 关联的Issue 关联Issue #5732;配套 CI 任务拆分(arch22/arch35)见 #13016(依赖本 PR,需后合入)。 ## 测试 - 语法:bash -n / py_compile / yaml / ruff 全过,pre-commit 全绿; - 推导用例:metadata 白名单(@950→flash_attn+metadata)、AICPU 白名单(@910b 命中、@950 空)、mhc_sinkhorn_common(@950→正反向)、mc2/common 闭包(@910b→17 算子)、dispatch_v2 闭包(@arch22→7 算子)、框架变更空范围; - 端到端:build.sh --soc=ascend950 --PR_COMPILE 实编成功(kernel bin 产出),空范围 exit 200。 ## 后续(另起 PR) depends drift 持续看护、def.cpp AddConfig 写法规范化、#13016 的 CI 任务拆分接入。 See merge request: cann/ops-transformer!13100 | 1 month 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 | |
feat: 算子仓适配Ascend5162A芯片编译 Co-authored-by: wuxuening<wuxuening2@huawei.com> # message auto-generated for no-merge-commit merge: !12191 merge feat/ascend5162a-build-support into master feat: 算子仓适配Ascend5162A芯片编译 Created-by: wuxuening Commit-by: wuxuening Merged-by: cann-robot Description: ## 描述 算子仓适配 Ascend5162A 芯片编译:在编译框架(CMakeLists、build 脚本、SOC 映射)与 UT 桩代码中注册 ascend5162a 计算单元(arch 目录复用 arch35),支持通过 --soc=ascend5162a 编译输出 5162A 算子包。 改动清单(8 个文件): | 文件 | 改动 | |---|---| | CMakeLists.txt | ASCEND_ALL_COMPUTE_UNIT、SOC_VERSION_LIST、ARCH_DIRECTORY_LIST 增加 ascend5162a(arch35) | | build.sh | SUPPORT_COMPUTE_UNIT_SHORT 增加 ascend5162a | | cmake/scripts/util/const_var.py | SOC_MAP_EXT 增加 ascend5162a → Ascend5162A | | cmake/scripts/util/opdesc_parser.py | SOC_TO_SHORT_SOC_MAP 增加 ascend5162a | | scripts/util/const_var.py | SOC_MAP_EXT 增加 ascend5162a → Ascend5162A | | tests/ut/framework_normal/common/op_api_csv_case_loader.h | SOC_VERSION 映射增加 Ascend5162A | | tests/ut/framework_normal/op_api/stub/opdev/platform.cpp | ASCEND5162A ToString 映射 | | tests/ut/framework_normal/op_api/stub/opdev/platform.h | SocVersion 枚举增加 ASCEND5162A | ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/5356 ## 测试 本地环境(CANN 9.2.0,aarch64)执行 build.sh --soc=ascend5162a,编译通过并成功生成算子包 cann-5162a-ops-transformer_9.2.0_linux-aarch64.run;pre-commit 全量检查通过。 ## 文档更新 无 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-transformer!12191 | 1 month 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 | |
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 | |
remove README 文件中NPUFlashAttention的失效链接 | 20 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 | |
支持按模板参数编译算子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 | |
ci(compile): 新增 build.sh --PR_COMPILE 编译范围推导机制(白名单优先 + depends反向闭包 + def SoC过滤) Co-authored-by: gitcode_lijd<lijiandong20@huawei.com> # message auto-generated for no-merge-commit merge: !13100 merge test into master ci(compile): 新增 build.sh --PR_COMPILE 编译范围推导机制(白名单优先 + depends反向闭包 + def SoC过滤) Created-by: gitcode_lijd Commit-by: gitcode_lijd Merged-by: cann-robot Description: ## 描述 新增 PR 编译范围推导机制,替代原先由 tests/test_config.yaml(example 看护规则)间接决定编译范围的方式。**本 PR 为纯新增:不改任何现有逻辑/任务,UT 维持原状,master 上无 --PR_COMPILE 调用方,对现存 CI 零影响。** ### 1. 推导流程(cmake/scripts/parse_compile_scope.py) 变更文件 → 映射为 <domain>/<op> 键(仅认 attention/ffn/gmm/mamba/mc2/mhc/moe/posembedding 八个大目录;docs/、.md/.json/.ini 跳过)→ 按以下顺序决定编译清单: 1. **白名单优先**:直接变更的算子命中 tests/compile_scope_whitelist.yaml 时,按其 impact(完整编译清单)+ soc(必填,加载即校验,缺失直接报错)选定。当前收录 18 条目:attention/*_metadata(impact=自身+对应无后缀算子,soc 按无后缀 def 推导)、AICPU 算子 attention_worker_scheduler/ffn_worker_scheduler(仅 ascend910b)、mhc/mhc_sinkhorn_common(impact 为 mhc_sinkhorn 正反向,ascend950)。 2. **未命中走正规流程**:op_host/CMakeLists.txt 的 *_depends(兼容 PARENT_SCOPE 与 CACHE INTERNAL 标记)反向闭包,拉出所有声明依赖变更算子的下游;再按 *def.cpp 的 AICore AddConfig 做目标 SoC 过滤。 3. **域内 common/3rd**:变更映射为共享键(如 mc2/common),经 depends 反向闭包触发所有依赖它的算子(如改 mc2/common @910b → 17 个 mc2 算子)。 ### 2. SoC 依据 唯一依据为 def.cpp AddConfig(支持 ascend 短名/长名互认);op_host/config/<soc> 目录已废弃不作依据。def 中宏/变量等非常规写法的识别待 def 规范化后加强。 ### 3. build.sh 集成 新增 --PR_COMPILE <pr_filelist> 选项(注意 --soc 需在其前传):推导为空时打印提示并 exit 200(CI 侧约定 200=跳过成功);非空时设为 ascend_op_name 并进入 custom pkg 编译(出 kernel bin)。 ### 4. 白名单自检 python3 cmake/scripts/parse_compile_scope.py --check:校验白名单条目(算子存在、impact 目标存在、soc 合法、impact 为列表、soc 必填),有错非零退出逐条打印。已挂 pre-commit compile-scope-whitelist-check(仅白名单文件变更时触发)。 ### 5. 已确认的边界(不在本 PR 处理) - ascend310p/ascend350 暂不编译(后续单独出方案);多 SoC 单构建不支持(CI 走单 SoC 命令); - 框架级变更(根目录脚本/cmake 公共件)不触发编译范围,由改动方自行验证; - UT 逻辑完全不动(test_soc_config.yaml/get_soc_version.py 保留原样)。 ## 关联的Issue 关联Issue #5732;配套 CI 任务拆分(arch22/arch35)见 #13016(依赖本 PR,需后合入)。 ## 测试 - 语法:bash -n / py_compile / yaml / ruff 全过,pre-commit 全绿; - 推导用例:metadata 白名单(@950→flash_attn+metadata)、AICPU 白名单(@910b 命中、@950 空)、mhc_sinkhorn_common(@950→正反向)、mc2/common 闭包(@910b→17 算子)、dispatch_v2 闭包(@arch22→7 算子)、框架变更空范围; - 端到端:build.sh --soc=ascend950 --PR_COMPILE 实编成功(kernel bin 产出),空范围 exit 200。 ## 后续(另起 PR) depends drift 持续看护、def.cpp AddConfig 写法规范化、#13016 的 CI 任务拆分接入。 See merge request: cann/ops-transformer!13100 | 1 month ago | |
mqfa to blue Co-authored-by: luoyun<luoyun38@huawei.com> # message auto-generated for no-merge-commit merge: !13088 merge only_to_blue into master mqfa to blue Created-by: luoyun-6 Commit-by: luoyun Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-transformer/issues/5826 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!13088 | 1 month 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:本项目功能和文档正在持续更新和完善中,欢迎您关注最新版本。