本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
kirin_cann_test仓指定tag以下载固定代码版本 Co-authored-by: weixin_46515057<lidaoshuai@h-partners.com> # message auto-generated for no-merge-commit merge: !13828 merge master into master kirin_cann_test仓指定tag以下载固定代码版本 Created-by: weixin_46515057 Commit-by: weixin_46515057 Merged-by: cann-robot Description: kirin_cann_test仓指定tag以下载固定代码版本 See merge request: cann/ops-transformer!13828 | 1 个月前 | |
flash_attn arch92 support sink Co-authored-by: comic97<gaokeming@hisilicon.com> # message auto-generated for no-merge-commit merge: !14083 merge sink into master flash_attn arch92 support sink Created-by: comic97 Commit-by: comic97 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> **改动原因**:flash attention 算子的 attention sink(learnable sink,sinks 参数)特性此前在 arch92(ascend960dt)平台缺失支持;common 侧通用实现 attn_sink_gs1.h(单窗口 64 lane reg Gather + A/B 双窗口宽模式)不适配 arch92 平台 CV_RATIO==1、softmax 槽长 = mBaseSize(64/128)的架构特点,需要一套 arch92 专用的 sink CopyIn 与注入实现。 **改动方法**: 1. 新增 attention/flash_attn/op_kernel/utils/attn_sink_arch92.h(arch92 sink 特性级公共实现): - SinkCopyInGS1 / SinkCopyInS1G:sink 值 GM→UB 搬入。GS1(BNSD)为紧凑 gCount 值布局;S1G(BSND/TND)按单头块连续、头尾 gap 分段、值区回绕等情况布局; - SinkExpandMaxVf121 注入 dispatcher 及 5 个 VF 直写函数(SinkBrcVF121 / SinkGs1DirectVF121 / SinkContigDirectVF121 / SinkGapDirectVF121 / SinkRotDirectVF121):采用 Scheme B prologue 注入(sum=1、max=sink、虚拟 sink token value=0),通过 UB 基址 Gather + 段式双寄存器一次性直写(m ∈ (0,128] 单次调用覆盖),全段编译期常量 mask,VF 内无运行时标量/分支; 2. flash_attn_block_vec_nd_arch92.h:ND 布局(BNSD/BSND/TND)首 FdBlock 的 sink 注入由 common attn_sink_gs1.h 切换为 arch92 实现,按 IS_GS1_LAYOUT(BNSD)与 S1G(BSND/TND)自适应选择 CopyIn 与直写路径,直写改用带编译期 MBASE 模板参数的 SinkExpandMaxVf121; 3. flash_attn_block_vec_dn_unmerged_arch92.h:DN 不合轴布局接入。S1-only 场景(每任务仅一个 query 头)sink 退化为单值标量,直接 sinkGm_.GetValue 读取后经 ResetSoftmaxBuffer 复位(sum=1、max=sink),省去原 GS1 展开通用路径的 MTE2/V 双锁与 UB 临时搬运; 4. vf_mul_sel_softmaxflashv2_cast_nz_dn_arch92.h:新增 ResetSoftmaxBuffer / ResetSoftmaxBufferVF,以 VF 向量化方式一次性复位 softmax sum/max buffer(替代两次 Duplicate); 5. attenmask_gs1.h:配套新增 kernel_operator.h / const_def.h 头文件包含,MergeBand / MaskUbCopyS1GVF 等 VF 函数补充 AscendC::Reg:: 命名空间显式限定。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> [flash_attn算子在arch92架构上支持sink功能](https://gitcode.com/cann/ops-transformer/issues/6530) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 无文档更新(仅新增/修改 op_kernel 侧 5 个头文件,未变更 docs/ 及接口说明文档)。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!14083 | 23 天前 | |
feat(aicpu): AICPU built-in整包准入manifest机制 Co-authored-by: qzzzy1<qiziyu2@huawei.com> # message auto-generated for no-merge-commit merge: !13861 merge feat/aicpu-builtin-package-manifest into master feat(aicpu): AICPU built-in整包准入manifest机制 Created-by: qzzzy1 Commit-by: qzzzy1 Merged-by: cann-robot Description: ## 描述 新增aicpu_builtin_package_manifest.cmake策略文件,控制哪些AICPU算子在整包编译(--pkg)时打包device侧.so和json配置。 ## 关联的Issue 关联Issue [#6592](https://gitcode.com/cann/ops-transformer/issues/6592) ## 测试 | TC-01 | 整包编译(manifest 为空) | ✅ | .run 生成;无 libtransformer_aicpu_kernels.so / aicpu_transformer.json / cust_aicpu_kernel.json;日志 No aicpu opdef/json files to merge, skipping. + No aicpu cust obj targets found, skipping.(证明 built-in 路径已接线且被 manifest 门控) | | ------------- | ----------------------------------------------------------- | ----------------- | ------------------------------------------------------------ | | TC-02 | 自定义包回归(--ops + --vendor_name) | ✅ | cust_aicpu_kernel.json + so 落在 packages/vendors/custom_transformer/op_impl/cpu/{config,aicpu_kernel/impl},与改动前行为一致,manifest 条目被忽略 | | TC-05 | UT 编译回归(-u --noexec) | ✅ | AddAicpuOpTestCase 正常、*_cases_obj UT 目标生成;manifest 为 FORCE_ALL=ON + 无效条目时 UT 仍不受影响(UT 模式 ENABLE_BUILT_IN=OFF → 恒准入) | | TC-10 | manifest 准入 json 型算子(flash_attn_metadata=ON) | ✅ | 仅该算子进入产物 | | TC-11 | manifest 准入 OpDef 型算子(attention_worker_scheduler=ON) | ✅ | OpDef→ini→json 链路走通,aicpu_transformer_opdef_kernel.json 中间产物生成 | | TC-10+11 联合 | 两类算子混合准入 | ✅ | aicpu_transformer.json 含 ['AttentionWorkerScheduler', 'FlashAttnMetadata'](两来源合并正确);json 元数据 kernelSo=libtransformer_aicpu_kernels.so、engine=DNN_VM_AICPU、opKernelLib=CUSTAICPUKernel 正确 | | TC-13 | FORCE_ALL=ON 全量放开 | ✅ | 范围内 aicpu 算子全部准入,产物正常 | | TC-14 | 无效条目(不存在的算子/大小写错误) | ✅ | "nonexistent_op=ON"、"Cumsum=ON" 不报错、不产出 | | TC-15 | --noaicpu | ✅ | disable aicpu kernel xxx, skip it. 两算子整体跳过,包内 0 个 aicpu 文件,FORCE_ALL=ON 也不生效 | | TC-21 | 整包安装(manifest 为空) | ✅ | --install-path --full --quiet 安装成功,安装树中无任何 aicpu 路径 | | TC-22 | 整包安装(manifest ON)+ 产物检查 | ✅ | cann/opp/built-in/op_impl/aicpu/config/aicpu_transformer.json + cann/opp/built-in/op_impl/aicpu/kernel/libtransformer_aicpu_kernels.so 存在;file 确认 ARM aarch64;readelf 确认 BIND_NOW + GNU_RELRO;strings 确认两个 kernel 源文件均在 so 内 | | TC-18/19 | 匹配大小写敏感/value 非 ON | ✅(代码路径覆盖) | TC-14 中 "Cumsum=ON"(大小写错)未准入即为证明;STREQUAL 精确匹配 | ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!13861 | 23 天前 | |
feat: kv_rms_norm_rope_cache 补齐 ascend960pr 注册与配置 Co-authored-by: zzz2048<zhuhanhan@huawei.com> # message auto-generated for no-merge-commit merge: !14468 merge feat/kv-undgen-ascend960pr-completion into master feat: kv_rms_norm_rope_cache 补齐 ascend960pr 注册与配置 Created-by: zzz2048 Commit-by: zzz2048 Merged-by: cann-robot Description: ## 描述 kv_rms_norm_rope_cache 补齐 ascend960pr 注册与配置(与既有 ascend960dt 注册对齐)。 改动面(6 文件,单提交): - def.cpp:AddConfig("ascend960pr", config_950) 紧随 960dt - config/ascend960pr/binary.json:与 960dt 逐字节一致 - 删除 960dt/960pr 两侧 simplified_key.ini:内容 default=0 与 AscendC 算子缺省行为(mode=0)及 gen 路径硬编码值完全等价,纯冗余交付件(950 侧存量不动) fix(common):IsRegbase 集合补 DAV_9202(aclnn_platform.h + tiling_util.cpp 两处)——960pr 下 aclnn/tiling 路由失效修复。 fix(kernel):apt.cpp 溢出模式控制(GLOBAL_OVERFLOW_MODE_CTRL)门禁 3510-only 扩为 3510 || 9201 || 9202——960dt/960pr 与 950 的溢出模式保存/置 0/恢复行为对齐(960dt 适配遗留缺口一并补齐)。 注:960pr 编译目标的全局启用(CMakeLists/build.sh)由平台组负责,本 PR 仅算子级与 common 修复;全局配置启用前 960pr CI 编译走空包属预期。本仓无 ascendc_config / 960pr CI 白名单面。 背景:ascend960dt=dav_9201 / ascend960pr=dav_9202 同族变体,纯注册/配置使能,无 kernel 计算逻辑改动。 ## 关联的Issue #6572(und_gen_qkv_rms_norm_rope_cache 后续另行提 PR) ## 测试 - 终审核对:def dt/pr 紧随配对、config pr≡dt(含 simplified_key.ini) - 960 编译验证依赖黄区 CI ## 文档更新 无需(纯注册配置,无 API 行为变化) ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 重构 - [ ] 测试 - [ ] 构建/CI - [ ] 配置变更 - [ ] 文档更新 - [ ] 依赖升级 - [ ] 安全修复 - [ ] 代码清理 - [ ] 其他,请描述: See merge request: cann/ops-transformer!14468 | 23 天前 | |
feat(gmm): 新增A4W4场景 GroupedMatmulActivation 新算子 Co-authored-by: jayshu<shuhaojie@huawei.com> # message auto-generated for no-merge-commit merge: !13929 merge jayshu-gmmactivation-independent-def into master feat(gmm): 新增A4W4场景 GroupedMatmulActivation 新算子 Created-by: jayshu Commit-by: jayshu Merged-by: cann-robot Description: ## 描述 新增独立 GroupedMatmulActivation 算子及 GroupedMatmulActivationWeightNz ACLNN、grouped_matmul_activation TorchExtension 接口,支持 MXFP4 E2M1 A4W4、WeightNZ 权重、E8M0 scale,直接输出单个 BF16 y,不进行输出 MX 量化,不创建、不传入、不写回 yScale。 主要改动: - 新增独立 gmm/grouped_matmul_activation 模块,包含 def、proto、infershape、tiling、kernel、ACLNN/Torch 接口、文档及测试,复用现有 TensorAPI/Blaze concat-N 实现。 - 新增 aclnnGroupedMatmulActivationWeightNzGetWorkspaceSize / aclnnGroupedMatmulActivationWeightNz,支持转置和非转置权重视图。actType 为字符串,仅支持 "swiglu";bias 为动态 TensorList,当前要求为空。 - 新接口仅支持 SwiGLU mode 2,执行前后分半分支、clamp、alpha/bias 和最终 BF16 转换。旧 WeightNzV3 的 A4W4 BF16 mode 0/2 路径保留兼容处理,不将 mode 0 宣传为新接口支持范围。 - 补充独立 op_def 类型组合、tiling 路由及 kernel 的直接 BF16 epilogue 接入;A4W4 的 K/N 均要求按 128 对齐。内部 transpose 属性由 ACLNN 从 stride 推导,生成转置/非转置两个模板 key(0/1)。恢复旧 V2 def,保留旧 V2 FP4 mode 0 的量化输出路由。 - 修复转置权重在视图归一化前错误比较 K 的问题,在归一化后检查矩阵维度,并校验权重与 scale 视图一致性。 - 新增仓内 TorchExtension 封装,统一 Meta 与实际接口的维度、TensorList 数量和 K/N 对齐要求,检查设备一致性,保留 CPU group_list 支持;Torch 层检查后将 CPU group_list 复制到 NPU,原始 ACLNN 要求 device group_list。 - 修复 Torch act_type.c_str() 临时值的 JIT 编译问题,空 bias 使用零元素 BF16 descriptor 完成 binary 选择。 本 PR 依赖 ops-tensor PR 448 的直接 BF16 epilogue 支持。新增行为按 A4W4/BF16 类型组合启用,既有 MXFP8 输出路径保持原输出语义;测试结果不等同于旧场景全量回归结论。 ## 关联的Issue 关联需求 Issue:https://gitcode.com/cann/ops-transformer/issues/6217 ## 测试 二级冒烟+泛化验证 ## 文档更新 - 新增 gmm/grouped_matmul_activation/docs/aclnnGroupedMatmulActivationWeightNz.md,描述 ACLNN 参数、计算公式、数据类型、格式及约束。 - 新增 gmm/grouped_matmul_activation/docs/torchapi_grouped_matmul_activation.md,描述 TorchExtension 调用、计算公式、Meta 行为和打包输入约定。 - 新增独立算子 README、op_api 头文件及接口声明。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 重构 - [ ] 测试 - [ ] 构建/CI - [ ] 配置变更 - [ ] 文档更新 - [ ] 依赖升级 - [ ] 安全修复 - [ ] 代码清理 - [ ] 其他,请描述: See merge request: cann/ops-transformer!13929 | 23 天前 | |
删除查看源码内容 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !14413 merge master into master 删除查看源码内容 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 trans仓手册已经md化,删除文档开头查看源码字样及链接 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/6488 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 整个仓库aclnn.md等商发文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!14413 | 23 天前 | |
【社区任务】AscendC实现SplitQkvRmsnormMrope算子贡献 Co-authored-by: gCw_XAjKNLcr<864535983@qq.com> # message auto-generated for no-merge-commit merge: !13997 merge feature/split-qkv-rmsnorm-mrope into master 【社区任务】AscendC实现SplitQkvRmsnormMrope算子贡献 Created-by: gcw_xAjKNLcr Commit-by: gCw_XAjKNLcr Merged-by: cann-robot Description: ## 描述 新增 SplitQkvRmsnormMrope 算子,用于 Qwen3-VL 注意力输入预处理。 本 PR 包含: - QKV/Gate 拆分、Q/K RMSNorm、仿射和三轴 MRoPE 融合 Kernel; - OpDef、InferShape/InferDataType 和 Tiling; - README、ACLNN 接口文档、调用示例和 Host UT。 ## 关联的Issue 关联 issue:https://gitcode.com/cann/ops-transformer/issues/6240 ## 测试 环境:CANN 9.1,Atlas A2 / Ascend 910B3,Release 构建。 ## 文档更新 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [X] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!13997 | 23 天前 | |
feat(aicpu): AICPU built-in整包准入manifest机制 Co-authored-by: qzzzy1<qiziyu2@huawei.com> # message auto-generated for no-merge-commit merge: !13861 merge feat/aicpu-builtin-package-manifest into master feat(aicpu): AICPU built-in整包准入manifest机制 Created-by: qzzzy1 Commit-by: qzzzy1 Merged-by: cann-robot Description: ## 描述 新增aicpu_builtin_package_manifest.cmake策略文件,控制哪些AICPU算子在整包编译(--pkg)时打包device侧.so和json配置。 ## 关联的Issue 关联Issue [#6592](https://gitcode.com/cann/ops-transformer/issues/6592) ## 测试 | TC-01 | 整包编译(manifest 为空) | ✅ | .run 生成;无 libtransformer_aicpu_kernels.so / aicpu_transformer.json / cust_aicpu_kernel.json;日志 No aicpu opdef/json files to merge, skipping. + No aicpu cust obj targets found, skipping.(证明 built-in 路径已接线且被 manifest 门控) | | ------------- | ----------------------------------------------------------- | ----------------- | ------------------------------------------------------------ | | TC-02 | 自定义包回归(--ops + --vendor_name) | ✅ | cust_aicpu_kernel.json + so 落在 packages/vendors/custom_transformer/op_impl/cpu/{config,aicpu_kernel/impl},与改动前行为一致,manifest 条目被忽略 | | TC-05 | UT 编译回归(-u --noexec) | ✅ | AddAicpuOpTestCase 正常、*_cases_obj UT 目标生成;manifest 为 FORCE_ALL=ON + 无效条目时 UT 仍不受影响(UT 模式 ENABLE_BUILT_IN=OFF → 恒准入) | | TC-10 | manifest 准入 json 型算子(flash_attn_metadata=ON) | ✅ | 仅该算子进入产物 | | TC-11 | manifest 准入 OpDef 型算子(attention_worker_scheduler=ON) | ✅ | OpDef→ini→json 链路走通,aicpu_transformer_opdef_kernel.json 中间产物生成 | | TC-10+11 联合 | 两类算子混合准入 | ✅ | aicpu_transformer.json 含 ['AttentionWorkerScheduler', 'FlashAttnMetadata'](两来源合并正确);json 元数据 kernelSo=libtransformer_aicpu_kernels.so、engine=DNN_VM_AICPU、opKernelLib=CUSTAICPUKernel 正确 | | TC-13 | FORCE_ALL=ON 全量放开 | ✅ | 范围内 aicpu 算子全部准入,产物正常 | | TC-14 | 无效条目(不存在的算子/大小写错误) | ✅ | "nonexistent_op=ON"、"Cumsum=ON" 不报错、不产出 | | TC-15 | --noaicpu | ✅ | disable aicpu kernel xxx, skip it. 两算子整体跳过,包内 0 个 aicpu 文件,FORCE_ALL=ON 也不生效 | | TC-21 | 整包安装(manifest 为空) | ✅ | --install-path --full --quiet 安装成功,安装树中无任何 aicpu 路径 | | TC-22 | 整包安装(manifest ON)+ 产物检查 | ✅ | cann/opp/built-in/op_impl/aicpu/config/aicpu_transformer.json + cann/opp/built-in/op_impl/aicpu/kernel/libtransformer_aicpu_kernels.so 存在;file 确认 ARM aarch64;readelf 确认 BIND_NOW + GNU_RELRO;strings 确认两个 kernel 源文件均在 so 内 | | TC-18/19 | 匹配大小写敏感/value 非 ON | ✅(代码路径覆盖) | TC-14 中 "Cumsum=ON"(大小写错)未准入即为证明;STREQUAL 精确匹配 | ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!13861 | 23 天前 | |
fix(gmm):tiling被读两次 Co-authored-by: cw<chenwei689@huawei.com> # message auto-generated for no-merge-commit merge: !14466 merge fix/gmm-tiling-no-double-read into master fix(gmm):tiling被读两次 Created-by: weixin_54263091 Commit-by: cw Merged-by: cann-robot Description: ## 描述 删去一个tiling读取 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/6591 ## 测试 二级冒烟 ## 文档更新 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [x ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!14466 | 22 天前 | |
删除查看源码内容 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !14413 merge master into master 删除查看源码内容 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 trans仓手册已经md化,删除文档开头查看源码字样及链接 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/6488 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 整个仓库aclnn.md等商发文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!14413 | 23 天前 | |
A6 combineV2 V3 Max BS=1024 | 22 天前 | |
删除查看源码内容 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !14413 merge master into master 删除查看源码内容 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 trans仓手册已经md化,删除文档开头查看源码字样及链接 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/6488 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 整个仓库aclnn.md等商发文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!14413 | 23 天前 | |
删除查看源码内容 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !14413 merge master into master 删除查看源码内容 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 trans仓手册已经md化,删除文档开头查看源码字样及链接 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/6488 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 整个仓库aclnn.md等商发文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!14413 | 23 天前 | |
删除查看源码内容 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !14413 merge master into master 删除查看源码内容 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 trans仓手册已经md化,删除文档开头查看源码字样及链接 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/6488 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 整个仓库aclnn.md等商发文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!14413 | 23 天前 | |
feat(aicpu): AICPU built-in整包准入manifest机制 Co-authored-by: qzzzy1<qiziyu2@huawei.com> # message auto-generated for no-merge-commit merge: !13861 merge feat/aicpu-builtin-package-manifest into master feat(aicpu): AICPU built-in整包准入manifest机制 Created-by: qzzzy1 Commit-by: qzzzy1 Merged-by: cann-robot Description: ## 描述 新增aicpu_builtin_package_manifest.cmake策略文件,控制哪些AICPU算子在整包编译(--pkg)时打包device侧.so和json配置。 ## 关联的Issue 关联Issue [#6592](https://gitcode.com/cann/ops-transformer/issues/6592) ## 测试 | TC-01 | 整包编译(manifest 为空) | ✅ | .run 生成;无 libtransformer_aicpu_kernels.so / aicpu_transformer.json / cust_aicpu_kernel.json;日志 No aicpu opdef/json files to merge, skipping. + No aicpu cust obj targets found, skipping.(证明 built-in 路径已接线且被 manifest 门控) | | ------------- | ----------------------------------------------------------- | ----------------- | ------------------------------------------------------------ | | TC-02 | 自定义包回归(--ops + --vendor_name) | ✅ | cust_aicpu_kernel.json + so 落在 packages/vendors/custom_transformer/op_impl/cpu/{config,aicpu_kernel/impl},与改动前行为一致,manifest 条目被忽略 | | TC-05 | UT 编译回归(-u --noexec) | ✅ | AddAicpuOpTestCase 正常、*_cases_obj UT 目标生成;manifest 为 FORCE_ALL=ON + 无效条目时 UT 仍不受影响(UT 模式 ENABLE_BUILT_IN=OFF → 恒准入) | | TC-10 | manifest 准入 json 型算子(flash_attn_metadata=ON) | ✅ | 仅该算子进入产物 | | TC-11 | manifest 准入 OpDef 型算子(attention_worker_scheduler=ON) | ✅ | OpDef→ini→json 链路走通,aicpu_transformer_opdef_kernel.json 中间产物生成 | | TC-10+11 联合 | 两类算子混合准入 | ✅ | aicpu_transformer.json 含 ['AttentionWorkerScheduler', 'FlashAttnMetadata'](两来源合并正确);json 元数据 kernelSo=libtransformer_aicpu_kernels.so、engine=DNN_VM_AICPU、opKernelLib=CUSTAICPUKernel 正确 | | TC-13 | FORCE_ALL=ON 全量放开 | ✅ | 范围内 aicpu 算子全部准入,产物正常 | | TC-14 | 无效条目(不存在的算子/大小写错误) | ✅ | "nonexistent_op=ON"、"Cumsum=ON" 不报错、不产出 | | TC-15 | --noaicpu | ✅ | disable aicpu kernel xxx, skip it. 两算子整体跳过,包内 0 个 aicpu 文件,FORCE_ALL=ON 也不生效 | | TC-21 | 整包安装(manifest 为空) | ✅ | --install-path --full --quiet 安装成功,安装树中无任何 aicpu 路径 | | TC-22 | 整包安装(manifest ON)+ 产物检查 | ✅ | cann/opp/built-in/op_impl/aicpu/config/aicpu_transformer.json + cann/opp/built-in/op_impl/aicpu/kernel/libtransformer_aicpu_kernels.so 存在;file 确认 ARM aarch64;readelf 确认 BIND_NOW + GNU_RELRO;strings 确认两个 kernel 源文件均在 so 内 | | TC-18/19 | 匹配大小写敏感/value 非 ON | ✅(代码路径覆盖) | TC-14 中 "Cumsum=ON"(大小写错)未准入即为证明;STREQUAL 精确匹配 | ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!13861 | 23 天前 | |
feat: allto_all_quant_matmul 960 hif4 scene Co-authored-by: tongzy1242<tongzeyun@huawei.com> # message auto-generated for no-merge-commit merge: !13950 merge feat/A6_mc2_merge_baseline into master feat: allto_all_quant_matmul 960 hif4 scene Created-by: tongzy1242 Commit-by: tongzy1242 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> AlltoAllMatmul 960DT 支持hifp4全量化 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> [#6520](https://gitcode.com/cann/ops-transformer/issues/6520) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 二级冒烟通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!13950 | 23 天前 | |
fix_torch_compile Co-authored-by: hblnb<huangbolin3@huawei.com> # message auto-generated for no-merge-commit merge: !14169 merge fix_jit_compile_lock_perf into master fix_torch_compile Created-by: hblnb Commit-by: hblnb Merged-by: cann-robot Description: ## 描述 本改动针对 torch_extension/cann_ops_transformer/op_builder/builder.py 中的 OpBuilder JIT 编译流程,目的是缓解多进程(如分布式任务各 rank)并发编译时因 torch 构建后端每次都重新执行 ninja 空检查而导致的启动耗时长问题。核心方法是在持有 per-op 编译锁期间,先用源码指纹判断已构建的扩展是否可复用:若指纹匹配则直接导入已编译模块,跳过重建;否则走完整构建流程并在构建后记录指纹。 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/6362 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!14169 | 23 天前 | |
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 个月前 | |
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 个月前 | |
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 个月前 | |
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 个月前 | |
feat(aicpu): AICPU built-in整包准入manifest机制 Co-authored-by: qzzzy1<qiziyu2@huawei.com> # message auto-generated for no-merge-commit merge: !13861 merge feat/aicpu-builtin-package-manifest into master feat(aicpu): AICPU built-in整包准入manifest机制 Created-by: qzzzy1 Commit-by: qzzzy1 Merged-by: cann-robot Description: ## 描述 新增aicpu_builtin_package_manifest.cmake策略文件,控制哪些AICPU算子在整包编译(--pkg)时打包device侧.so和json配置。 ## 关联的Issue 关联Issue [#6592](https://gitcode.com/cann/ops-transformer/issues/6592) ## 测试 | TC-01 | 整包编译(manifest 为空) | ✅ | .run 生成;无 libtransformer_aicpu_kernels.so / aicpu_transformer.json / cust_aicpu_kernel.json;日志 No aicpu opdef/json files to merge, skipping. + No aicpu cust obj targets found, skipping.(证明 built-in 路径已接线且被 manifest 门控) | | ------------- | ----------------------------------------------------------- | ----------------- | ------------------------------------------------------------ | | TC-02 | 自定义包回归(--ops + --vendor_name) | ✅ | cust_aicpu_kernel.json + so 落在 packages/vendors/custom_transformer/op_impl/cpu/{config,aicpu_kernel/impl},与改动前行为一致,manifest 条目被忽略 | | TC-05 | UT 编译回归(-u --noexec) | ✅ | AddAicpuOpTestCase 正常、*_cases_obj UT 目标生成;manifest 为 FORCE_ALL=ON + 无效条目时 UT 仍不受影响(UT 模式 ENABLE_BUILT_IN=OFF → 恒准入) | | TC-10 | manifest 准入 json 型算子(flash_attn_metadata=ON) | ✅ | 仅该算子进入产物 | | TC-11 | manifest 准入 OpDef 型算子(attention_worker_scheduler=ON) | ✅ | OpDef→ini→json 链路走通,aicpu_transformer_opdef_kernel.json 中间产物生成 | | TC-10+11 联合 | 两类算子混合准入 | ✅ | aicpu_transformer.json 含 ['AttentionWorkerScheduler', 'FlashAttnMetadata'](两来源合并正确);json 元数据 kernelSo=libtransformer_aicpu_kernels.so、engine=DNN_VM_AICPU、opKernelLib=CUSTAICPUKernel 正确 | | TC-13 | FORCE_ALL=ON 全量放开 | ✅ | 范围内 aicpu 算子全部准入,产物正常 | | TC-14 | 无效条目(不存在的算子/大小写错误) | ✅ | "nonexistent_op=ON"、"Cumsum=ON" 不报错、不产出 | | TC-15 | --noaicpu | ✅ | disable aicpu kernel xxx, skip it. 两算子整体跳过,包内 0 个 aicpu 文件,FORCE_ALL=ON 也不生效 | | TC-21 | 整包安装(manifest 为空) | ✅ | --install-path --full --quiet 安装成功,安装树中无任何 aicpu 路径 | | TC-22 | 整包安装(manifest ON)+ 产物检查 | ✅ | cann/opp/built-in/op_impl/aicpu/config/aicpu_transformer.json + cann/opp/built-in/op_impl/aicpu/kernel/libtransformer_aicpu_kernels.so 存在;file 确认 ARM aarch64;readelf 确认 BIND_NOW + GNU_RELRO;strings 确认两个 kernel 源文件均在 so 内 | | TC-18/19 | 匹配大小写敏感/value 非 ON | ✅(代码路径覆盖) | TC-14 中 "Cumsum=ON"(大小写错)未准入即为证明;STREQUAL 精确匹配 | ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!13861 | 23 天前 | |
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 个月前 | |
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 | 4 个月前 | |
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 | 1 个月前 | |
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 | 26 天前 | |
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 | 26 天前 | |
支持按模板参数编译算子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 | 4 个月前 | |
opkernel增量编译逻辑同步--PR_Compile & pkg支持-f增量编译 Co-authored-by: lixiawei<lixiawei2@h-partners.com> # message auto-generated for no-merge-commit merge: !14191 merge build_prlist into master opkernel增量编译逻辑同步--PR_Compile & pkg支持-f增量编译 Created-by: lixiawei Commit-by: lixiawei Merged-by: cann-robot Description: ## 描述 opkernel -f增量编译逻辑和--PR_Compile增量编译不统一,同步增量编译逻辑。pkg支持-f增量编译 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/6372 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!14191 | 23 天前 | |
classify_rule.yaml路径配置修改 Co-authored-by: hwx805026<hanming9@h-partners.com> # message auto-generated for no-merge-commit merge: !14291 merge new into master classify_rule.yaml路径配置修改 Created-by: jerry_ming Commit-by: hwx805026 Merged-by: cann-robot Description: ## 描述 classify_rule.yaml中transformer-2责任田下的只保留arch35相关路径,不包含arch22和arch92 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/6489 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!14291 | 23 天前 | |
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 | 4 个月前 | |
升级 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:本项目功能和文档正在持续更新和完善中,欢迎您关注最新版本。