本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
添加流水线切换控制参数 Co-authored-by: tanghaoran7<tanghaoran7@huawei.com> # message auto-generated for no-merge-commit merge: !9620 merge master into master 添加流水线切换控制参数 Created-by: tanghaoran7 Commit-by: tanghaoran7 Merged-by: cann-robot Description: ## 描述 添加流水线切换控制参数 ## 关联的Issue 不涉及 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!9620 | 1 个月前 | |
通过gitmodules引入third_party/catlass Co-authored-by: longjihui<longjihui@huawei.com> # message auto-generated for no-merge-commit merge: !1765 merge master into master 通过gitmodules引入third_party/catlass Created-by: longjihui Commit-by: longjihui Merged-by: cann-robot Description: ## 描述 新增.gitmodules文件,引入第三方库catlass,分支为v1.3.1-notla ## 关联的Issue 不涉及 ## 测试 仅引入三方仓,使用方式暂不确定,无需测试 ## 文档更新 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:新引入三方仓catlass See merge request: cann/ops-transformer!1765 | 4 个月前 | |
smla/qsmla/mqsmla pytest bugfix | 1 个月前 | |
fix: 修复 UT 构建下 pypto codegen 路径分号问题及 op_api UT 缺链 Co-authored-by: chenyifan<chenyifan66@h-partners.com> # message auto-generated for no-merge-commit merge: !9561 merge fix_ut into master fix: 修复 UT 构建下 pypto codegen 路径分号问题及 op_api UT 缺链 Created-by: mutex_lock Commit-by: chenyifan Merged-by: cann-robot Description: # fix: 修复 UT 构建下 pypto codegen 路径分号问题及 op_api UT 缺链 ## 描述 **背景:** 路径拼接缺陷引入自 cann/ops-transformer!8436(提交 support pypto-pro kernel auto compile),在 enable_pypto_kernel 中直接使用未处理的 ${ASCEND_COMPUTE_UNIT} 拼路径与 --soc;后续算子接入该接口后,在 UT 场景下暴露。 修复两个 UT 构建问题: 1. **pypto codegen 路径拼接错误** UT 场景下 ASCEND_COMPUTE_UNIT 常为带尾部分号的 CMake list(如 ascend910_93;)。enable_pypto_kernel 直接将其拼入输出路径与 --soc,得到 .../ascend910_93;/xxx_pypto_gen,execute_process 把分号后段当成额外参数,导致 pypto_codegen.py 报 unrecognized arguments,configure 失败。 **修复:** 过滤空 list 元素,取第一个有效 SOC;路径与 --soc 使用该值并加引号。 2. **op_api UT 链接缺库** transformer_op_api_ut 链接时报 undefined reference to CheckLogLevel / libunified_dlog.so: DSO missing from command line。 **修复:** 补充链接 ascendalog、unified_dlog(与 ophost UT 对齐)。 涉及文件: - cmake/func.cmake - tests/ut/framework_normal/op_api/CMakeLists.txt ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/4116 ## 测试 bash bash build.sh -u --opapi --noexec --soc=ascend910_93 bash build.sh -u --ophost --noexec --soc=ascend910_93 bash build.sh -u --noexec --soc=ascend910_93 三条命令均 Configuring done;日志中 codegen 路径为 .../ascend910_93/xxx_pypto_gen(无分号),并成功生成 tiling / infer 产物。 ## 文档更新 无。 ## 类型标签 <!-- [x] 表示选中 --> - [x] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [x] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!9561 | 1 个月前 | |
attention common refactor Co-authored-by: jiang-lirui<jianglirui1@huawei.com> # message auto-generated for no-merge-commit merge: !9470 merge fia_common_files_relocation into master attention common refactor Created-by: jiang-lirui Commit-by: jiang-lirui Merged-by: cann-robot Description: ## 描述 从 attention/common 移入 fused_infer_attention_score ## 关联的Issue Issue [#4084](https://gitcode.com/cann/ops-transformer/issues/4084) ## 测试 二级冒烟PASS ## 文档更新 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [x] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!9470 | 1 个月前 | |
MhcPre新增M-K模板&性能优化 Co-authored-by: liweijian16<liweijian16@huawei.com> # message auto-generated for no-merge-commit merge: !9243 merge mhc-pre-low-api-fast-path into master MhcPre新增M-K模板&性能优化 Created-by: liweijian16 Commit-by: liweijian16 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 1. 优化BS、ND模板:高阶API转低阶API、支持开启HF32、AIV计算优化. 2. 新增M-K模板。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-transformer/issues/4121 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> - [x] 算子泛化 - [x] 二级冒烟 - [x] UT测试 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 更新了README.md文件 新增了aclnnMhcPreV2.md文件 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [x] ✨ 新特性 - [x] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!9243 | 1 个月前 | |
新增 attention/flash_attn/L0_minimal 极简 FA 样例 Co-authored-by: miaofangzheng<miaofangzheng@huawei.com> # message auto-generated for no-merge-commit merge: !9338 merge flash_attn_l0_minimal into master 新增 attention/flash_attn/L0_minimal 极简 FA 样例 Created-by: miaofangzheng Commit-by: miaofangzheng Merged-by: cann-robot Description: ## 描述 新增极简版 FlashAttention 样例 examples/attention/flash_attn/L0_minimal,同时删除原 examples/flash_attn_example。 仅保留 op_kernel + torch_interface.cpp,无独立 Host Tiling,无 mask、无 combine,作为最小可读入门样例 算子内部命名统一为 flash_attn_minimal(csrc 目录名 / CMake target / torch 注册名 / python 前端一致) examples/README.md 目录树与样例表登记新路径 ## 关联的Issue [#4005](https://gitcode.com/cann/ops-transformer/issues/4005) ## 测试 Ascend950DT 单卡实测: 编译:cmake configure + build 通过,产出 ascend_ops/_C.abi3.so 用例:ascend_ops/csrc/flash_attn_minimal/test/test_fa.py 7 passed(6 个参数化 + 1 个 fixed) 最大用例 b=1, n1=32, n2=1, sq=skv=8192, d=128:精度比对 PctRlt 99.87% Pass,Max-RelativeError 0.0078 ## 文档更新 随目录调整同步 README.md / FA_IMPL.md,并更新 examples/README.md。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [x] ❓ 其他,请描述:example See merge request: cann/ops-transformer!9338 | 1 个月前 | |
feat(qbsa): quant_block_sparse_attn 新增图模式测试支持与 stride 校验修复 Co-authored-by: chenglongyu<chenglongyu@huawei.com> # message auto-generated for no-merge-commit merge: !9601 merge ut_resolve into master feat(qbsa): quant_block_sparse_attn 新增图模式测试支持与 stride 校验修复 Created-by: chenglongyu Commit-by: chenglongyu Merged-by: cann-robot Description: ## 描述 quant_block_sparse_attn 算子(info_parser)新增 hasViewStride 标志,区分 view(非连续)与非 view(连续)KV cache 输入: - 当输入为 view 时,正常解析 stride 并做 stride 一致性校验; - 当输入非 view(连续存储)时,跳过 stride 校验,按 shape 维度推导 paBlockStride。 新增 aclgraph reduce-overhead 图模式批量测试。 修复 UT 测试数据: - kDescaleShape 从 3D 4 4 128 改为 4D 4 4 128 1(匹配 4D 要求); - tiling_1d_combined_kv 预期状态从 SUCCESS 改为 FAILED(1D combined KV 在 tiling 阶段被拒绝); - infershape_ntd_with_lse 期望 softmax_lse 输出 shape 从 256 4 修正为 4 256。 ## 测试 - UT tiling/infershape CSV 数据修正,当前 UT 覆盖率:行 83.3% / 函数 80.8% - 新增 graph 模式 test_run.sh graph 子命令 ## 文档更新 无 ## 类型标签 - [x] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [x] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!9601 | 1 个月前 | |
trans仓打标签合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !9424 merge master into master trans仓打标签合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 ffn gmm mamba / causal_conv1d mc2 mhc这5个仓的aclnn文档 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 ffn gmm mamba / causal_conv1d mc2 mhc ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!9424 | 1 个月前 | |
feat: 开源 GroupedMatmul 转置融合 pass Co-authored-by: zhoushaolong<zhoushaolong3@huawei.com> # message auto-generated for no-merge-commit merge: !8546 merge gmmrh79 into master feat: 开源 GroupedMatmul 转置融合 pass Created-by: zhoushaolong Commit-by: zhoushaolong Merged-by: cann-robot Description: ## 描述 开源 GroupedMatmul(GMM)算子的图融合 pass \GroupedMatmulTransFusionPass\。该 pass 在图编译阶段识别 GroupedMatmul 输入前的 Transpose/TransposeD(及 Reshape+Transpose+Reshape、Bitcast+Transpose)模式,将其语义折叠到 GroupedMatmul 的 \ ranspose_x\ / \ ranspose_weight\ 属性中,并移除冗余转置节点,减少不必要的计算和数据搬运。 主要改动: - 新增融合 pass 实现:\gmm/grouped_matmul/op_graph/fusion_pass/grouped_matmul_transpose_fusion_pass.{cpp,h}\(840+41 行) - 继承 \ge::fusion::FusionBasePass\,通过 \REG_FUSION_PASS\ 注册,版本门控 \CANN_VERSION_NUM >= 90000000 - 支持 x(index 0)、weight(index 1)、scale(index 3)、antiquant_scale(index 5)、per_token_scale(index 8)输入的转置消除 - 支持直接 Transpose/TransposeD、Bitcast+Transpose、Reshape+Transpose+Reshape 三种模式 - 支持 weight-quant / MX-quant / MX-weight-quant 量化模式下的差异化 perm 校验 - 平台适配:DAV 3510(Ascend950)专属逻辑、FixPipe intrinsic 检测 - 新增 op_graph UT 构建框架:\cmake/ut.cmake\ 新增 \OP_GRAPH_UT\ 模块、\dd_opgraph_ut_modules()\ 函数及 op_graph 测试源收集逻辑 - 新增 CMakeLists:\gmm/grouped_matmul/op_graph/CMakeLists.txt\、\gmm/grouped_matmul/tests/ut/op_graph/CMakeLists.txt\、\ ests/ut/framework_normal/op_graph/CMakeLists.txt- 新增 UT:\ est_grouped_matmul_transpose_fusion_pass.cpp\ + CSV 参数化用例(5 个场景覆盖 weight/x/both 转置融合、非法 perm 不融合、已置 transpose 属性不融合) ## 关联的Issue #3796 ## 测试 新增 op_graph 单元测试,通过 CSV 参数化驱动 5 个测试用例: 1. \gmm_with_weight_transpose\ — weight 侧 TransposeD 融合,验证 transpose_weight=true、weight shape 还原 2. \gmm_with_x_transpose\ — x 侧 TransposeD 融合,验证 transpose_x=true、x shape 还原 3. \gmm_with_both_transpose\ — x + weight 双侧融合 4. \gmm_with_invalid_weight_perm\ — 非法 perm(0:1:2),验证 GRAPH_NOT_CHANGED 5. \gmm_with_enabled_transpose_weight_attr\ — transpose_weight 已为 true,验证不重复融合 测试覆盖融合状态码、转置节点残留数、transpose 属性值、输入 shape 还原四类断言。 ## 文档更新 无额外文档更新。 ## 类型标签 - [ ] 🐛 Bug修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!8546 | 1 个月前 | |
trans仓打标签合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !9424 merge master into master trans仓打标签合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 ffn gmm mamba / causal_conv1d mc2 mhc这5个仓的aclnn文档 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 ffn gmm mamba / causal_conv1d mc2 mhc ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!9424 | 1 个月前 | |
修改megamoe为单核逻辑 Co-authored-by: yangzeheng<yangzeheng@huawei.com> # message auto-generated for no-merge-commit merge: !8431 merge master into master 修改megamoe为单核逻辑 Created-by: yangzeheng Commit-by: yangzeheng Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!8431 | 1 个月前 | |
MhcPre新增M-K模板&性能优化 Co-authored-by: liweijian16<liweijian16@huawei.com> # message auto-generated for no-merge-commit merge: !9243 merge mhc-pre-low-api-fast-path into master MhcPre新增M-K模板&性能优化 Created-by: liweijian16 Commit-by: liweijian16 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 1. 优化BS、ND模板:高阶API转低阶API、支持开启HF32、AIV计算优化. 2. 新增M-K模板。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-transformer/issues/4121 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> - [x] 算子泛化 - [x] 二级冒烟 - [x] UT测试 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 更新了README.md文件 新增了aclnnMhcPreV2.md文件 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [x] ✨ 新特性 - [x] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!9243 | 1 个月前 | |
MoeComputeExpertTokens流水竞争问题修复 Co-authored-by: wuxiyuan<wuxiyuan@huawei.com> # message auto-generated for no-merge-commit merge: !9531 merge master into master MoeComputeExpertTokens流水竞争问题修复 Created-by: wuxiyuan Commit-by: wuxiyuan Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> MoeComputeExpertTokensInt32SS 算子在 CopyOut 阶段,DataCopyPad 操作缺少 Scalar 与 MTE3 之间的流水同步,可能导致流水竞争问题。 ### 修改内容 在 moe/moe_compute_expert_tokens/op_kernel/moe_compute_expert_tokens_int32_ss.h 的 CopyOut() 函数中,DataCopyPad 调用前增加 HardEvent::S_MTE3 事件同步: - 通过 FetchEventID 获取 S_MTE3 事件 ID - 调用 SetFlag 设置事件标志 - 调用 WaitFlag 等待事件完成 确保 Scalar 流水与 MTE3 数据传输之间的执行顺序,消除竞争条件。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-transformer/issues/4060 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 已完成测试验证 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [x] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!9531 | 1 个月前 | |
fix: 修复kv_rms_norm_rope_cache算子 sample 中 PrintOutResult 读取 dtype 与申请内存不一致 Co-authored-by: raoliang_sac<raoliang4@huawei.com> # message auto-generated for no-merge-commit merge: !9630 merge fix-sample-dtype-mismatch into master fix: 修复kv_rms_norm_rope_cache算子 sample 中 PrintOutResult 读取 dtype 与申请内存不一致 Created-by: raoliang_sac Commit-by: raoliang_sac Merged-by: cann-robot Description: ## 描述 aclnn/geir sample 的 PrintOutResult 用 int8_t(1字节)读取 ACL_FLOAT16(2字节)的 device 内存,导致: - aclrtMemcpy 拷贝大小仅为实际数据的一半(size * 1 而非 size * 2) - 打印结果按 int8_t 解读 float16 字节,类型错误 ### 改动方法 将两个 sample 文件中的 int8_t 改为 int16_t,与 ACL_FLOAT16 的 2 字节对齐: - test_aclnn_kv_rms_norm_rope_cache.cpp:std::vector<int8_t> → std::vector<int16_t> - test_geir_kv_rms_norm_rope_cache.cpp:(int8_t*) → (int16_t*) ## 关联的Issue #4150 ## 测试 编译通过,memcpy 大小与 device 内存一致。 ## 文档更新 无 ## 类型标签 - [x] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!9630 | 1 个月前 | |
pre-commit规则调整 Co-authored-by: gitcode_lijd<lijiandong20@huawei.com> # message auto-generated for no-merge-commit merge: !5630 merge graph_base_pass into master pre-commit规则调整 Created-by: gitcode_lijd Commit-by: gitcode_lijd Merged-by: cann-robot Description: # ops-transformer pre-commit 规则适配提交总结 ## 一、提交概述 本次提交为 ops-transformer 仓接入 pre-commit 代码检查框架的规则适配提交,改动**仅涉及配置与文档,不含业务逻辑改动**。对照 ops-nn 仓的 pre-commit 配置,统一了代码格式化规则、静态检查工具链与开源合规检查方案,并补充了手动格式化脚本与中文使用文档。 ### 改动文件清单 | 文件 | 类型 | 说明 | |------|------|------| | .clang-format | 修改 | 从 ~120 行逐项手写精简为 ~70 行基于 Google 风格基线,修复续行符超 120 列问题 | | docs/zh/develop/pre-commit_guide.md | 修改 | 文档与新工具链同步,补充工具获取机制说明与指定目录检查用法 | | scripts/format_cpp.sh | 新增 | 手动批量格式化 C/C++ 代码脚本,可脱离 pre-commit 全量格式化 | ## 二、.clang-format 重大改动 ### 1. 采用 Google 风格基线 旧配置逐条手写所有选项(含 ObjC/Java/ForEach 宏等非 C++ 场景),新配置改用 BasedOnStyle: Google,仅覆盖项目需要的差异项,配置从 ~120 行精简到 ~70 行。 ### 2. 续行符对齐修复(关键 bug 修复) | 配置项 | 旧值 | 新值 | |--------|------|------| | AlignEscapedNewlines | Right | DontAlign | **问题**:pre-commit 锁定的 clang-format v18 下,Right/Left 会把续行符 \ 对齐到宏体最长内容行末尾,导致短行被撑超过 ColumnLimit(120)。 **修复**:改用 DontAlign,让每行 \ 紧贴自身内容,是唯一能稳定保证 ≤120 的取值。 **效果对比**: cpp // 旧(Right:续行符右对齐到最长行,短行被撑长) #define A2AV_AIV_ONLY() \ if ASCEND_IS_AIC { \ return; \ } // 新(DontAlign:续行符紧贴内容) #define A2AV_AIV_ONLY() \ if ASCEND_IS_AIC { \ return; \ } ### 3. 空函数体允许单行 | 配置项 | 旧值 | 新值 | |--------|------|------| | SplitEmptyFunction | true | false | | AllowShortFunctionsOnASingleLine | false | true | **效果对比**: cpp // 旧(空函数拆成多行) TileRowBroadcastMul() { } // 新(空函数合并单行) TileRowBroadcastMul() {} ### 4. 指针对齐保持右对齐 | 配置项 | 旧值 | 新值 | |--------|------|------| | PointerAlignment | Right | Right(未变) | 经统计仓内代码现状:约 6 万处 int *ptr(Right)、约 1.3 千处 int* ptr(Left),Right 为绝对主流,配置 Right 与代码现状吻合,避免大面积改动。 ### 5. 删除非 C++ 场景配置 移除 ObjC 相关、Java 相关(SortJavaStaticImport)、ForEach 宏列表、各种 Penalty 系数、Whitespace 敏感宏列表等——这些在 CANN 算子仓(纯 C/C++/asc)里用不到。 ## 三、代码风格改动示例 以下为按新规则格式化后的典型改动(纯格式化,无逻辑改动): ### 示例 1:宏调用断行重排 文件:mc2/tools/bandwidth_test/op_host/op_tiling/bandwidth_test_tiling.cpp cpp // 旧:宏名+首个参数同行,后续参数对齐开括号 OP_TILING_CHECK(dstRankIdDim0 != xDim0, OP_LOGE_FOR_INVALID_VALUE_WITH_REASON(nodeName, "dst_rank_id", std::to_string(dstRankIdDim0).c_str(), "The dim0 of dst_rank_id must be the same as that of x"), return ge::GRAPH_FAILED); // 新:宏名单独成行,参数 8 空格缩进,避免对齐后超 120 列 OP_TILING_CHECK( dstRankIdDim0 != xDim0, OP_LOGE_FOR_INVALID_VALUE_WITH_REASON(nodeName, "dst_rank_id", std::to_string(dstRankIdDim0).c_str(), "The dim0 of dst_rank_id must be the same as that of x"), return ge::GRAPH_FAILED); **原因**:旧格式对齐到开括号后(第 22 列),OP_LOGE... 那行内容约 100 字符,22+100=122 > 120,clang-format 自动 fallback 到缩进式。 ### 示例 2:空构造函数合并单行 文件:mc2/3rd/template_linear_algebra/op_kernel/template_linear_algebra/epilogue/tile/tile_broadcast_mul.hpp cpp // 旧 TileRowBroadcastMul() { } // 新 TileRowBroadcastMul() {} ### 示例 3:赋值断行重排 文件:mc2/tools/bandwidth_test/op_api/aclnn_bandwidth_test.cpp cpp // 旧:赋值号单独一行 aclnnRet = aclnnInnerBandwidthTestGetWorkspaceSize(mc2Context, x, dstRankId, group, worldSize, maxBs, mode, hcclBuffSize, commAlg, aivNum, y, receiveCnt, workspaceSize, executor); // 新:赋值号与函数名同行,参数折行 aclnnRet = aclnnInnerBandwidthTestGetWorkspaceSize(mc2Context, x, dstRankId, group, worldSize, maxBs, mode, hcclBuffSize, commAlg, aivNum, y, receiveCnt, workspaceSize, executor); ### 示例 4:函数签名断行重排 文件:mc2/allto_allv_quant_grouped_mat_mul/op_kernel/arch35/allto_allv_quant_grouped_mat_mul_apt.cpp cpp // 旧:返回类型单独成行,参数对齐开括号 __global__ __aicore__ void allto_allv_quant_grouped_mat_mul(GM_ADDR gmmxGM, GM_ADDR gmmweightGM, GM_ADDR gmmxScaleGM, GM_ADDR gmmWeightScaleGM, GM_ADDR sendCountsTensorOptionalGM, ...) // 新:函数名上移到第一行,参数下移缩进 __global__ __aicore__ void allto_allv_quant_grouped_mat_mul( GM_ADDR gmmxGM, GM_ADDR gmmweightGM, GM_ADDR gmmxScaleGM, GM_ADDR gmmWeightScaleGM, GM_ADDR sendCountsTensorOptionalGM, ...) ## 四、scripts/format_cpp.sh 新增 手动批量格式化 C/C++ 代码脚本,可脱离 pre-commit 对任意目录全量格式化,常用于批量整理历史代码。 **特性**: - 支持指定目录:bash scripts/format_cpp.sh attention/quant_sparse_flash_mla - 支持指定 clang-format 版本:CLANG_FORMAT=/usr/local/bin/clang-format-18 bash scripts/format_cpp.sh - 自动排除 build/、build_out/、third_party/、.git/ 目录 - 格式化 .c/.h/.cpp/.hpp/.cc/.hh/.cxx/.hxx/.asc 文件(与 pre-commit files 正则一致) ## 五、文档同步更新 docs/zh/develop/pre-commit_guide.md 主要更新: 1. **工具获取机制说明**:区分 pre-commit 自动拉取(clang-format/ruff/codespell)与脚本自动安装(OAT/oat-py)两类机制 2. **环境要求精简**:去掉 Java 17+/Maven 3.6+ 依赖,OAT 从 Java 实现改为 Python 版 oat-py 3. **检查项补充**:新增 pre-commit-hooks/ruff/codespell 三个 hook 说明 4. **指定目录检查**:补充 find <dir> -type f | xargs pre-commit run --files 用法 ## 六、pre-commit 工具链对照(与 ops-nn 仓) | 工具 | 版本 | 获取方式 | |------|------|---------| | pre-commit-hooks | v4.6.0 | pre-commit 自动拉取 | | clang-format | v18.1.8 | pre-commit 自动拉取 | | ruff | v0.14.14 | pre-commit 自动拉取 | | codespell | v2.4.1 | pre-commit 自动拉取 | | oat-py | >=1.0.1 | 脚本 pip install(带文件锁) | ## 七、注意事项 1. **clang-format 版本一致性**:pre-commit 锁定 v18.1.8,本地手动运行 format_cpp.sh 时建议安装 18.x 以保持一致(避免格式化结果不一致) 2. **120 列限制**:代码类超长行可由 clang-format 自动折行修复;注释/字符串字面量超长需手动处理 3. **首次提交较慢**:OAT 首次运行需 pip install oat-py,后续提交速度正常 ## 八、.clang-format 改动对照总结(全量) 改动提交:919ccc4de "pre-commit 规则适配"。从 136 行精简到 71 行(-65 行)。 ### 8.1 结构性变化 | 项 | 改动前 | 改动后 | |---|---|---| | 写法 | 全量手写 136 行,逐项枚举 | BasedOnStyle: Google + 71 行覆盖 | | 分区 | 无明显分区 | 按 大括号/Align/pointer/single line/tab space 分块加注释 | ### 8.2 关键配置项变化(影响格式化结果) | 配置项 | 改动前 | 改动后 | 影响 | |---|---|---|---| | **BasedOnStyle** | 无 | Google | 继承 Google 基线,未显式写的项自动取 Google 默认 | | **AlignEscapedNewlines** | Right | DontAlign | **关键修复**:宏续行符 \ 不再右对齐撑超 120 列,紧贴每行内容 | | **SortUsingDeclarations** | true | false | using 声明不按字母序重排,保留手写顺序 | | AllowShortFunctionsOnASingleLine | false | true | 空函数体允许合并单行 Foo() {} | | SplitEmptyFunction | true | false | 空函数不拆多行(配合上一项) | | PenaltyBreakAssignment | 2 | 2(不变,但从 Penalty 区移到 Align 区附近) | — | ### 8.3 保持不变的项(核心风格未动) | 配置项 | 值 | 说明 | |---|---|---| | ColumnLimit | 120 | 行宽上限不变 | | PointerAlignment | Right | 指针贴变量名 int *p,与仓内约 6 万处现状一致 | | IndentWidth / TabWidth | 4 / 4 | 缩进不变 | | UseTab | Never | 只用空格 | | SortIncludes | false | include 顺序不自动排 | | BreakBeforeBraces | Custom | 大括号换行策略不变 | | BreakBeforeTernaryOperators | false | — | | AlignAfterOpenBracket | Align | — | | AllowAllArgumentsOnNextLine | true | — | ### 8.4 删除的项(继承 Google 基线或 CANN 仓用不到) | 删除的配置 | 原因 | |---|---| | Language: Cpp | Google 基线默认即 Cpp | | 所有 ObjC*(ObjCBinPackProtocolList、ObjCBlockIndentWidth 等 4 项) | CANN 算子仓无 ObjC 代码 | | SortJavaStaticImport | 无 Java | | ForEachMacros 列表(foreach/Q_FOREACH/BOOST_FOREACH 等 6 项) | 仓内未使用这些宏 | | WhitespaceSensitiveMacros(STRINGIZE/PP_STRINGIZE 等 5 项) | 仓内未使用 | | 所有 Penalty*(7 项,除 PenaltyBreakAssignment 保留) | 用 Google 基线默认 | | CommentPragmas / ReflowComments / FixNamespaceComments / CompactNamespaces | Google 基线默认 | | BreakConstructorInitializers* / BreakInheritanceList / BreakBeforeInheritanceComma | Google 基线默认 | | ConstructorInitializer* | Google 基线默认 | | IndentCaseLabels / IndentCaseBlocks / IndentGotoLabels / IndentExternBlock / IndentRequires / IndentWrappedFunctionNames | Google 基线默认 | | NamespaceIndentation / MaxEmptyLinesToKeep / KeepEmptyLinesAtTheStartOfBlocks | Google 基线默认 | | Cpp11BracedListStyle / DeriveLineEnding / Standard / UseCRLF | Google 基线默认 | | DisableFormat / ExperimentalAutoDetectBinPacking / EmptyLineBeforeAccessModifier | Google 基线默认 | | BinPackParameters | Google 基线默认 | | MacroBlockBegin / MacroBlockEnd | 空值,无意义 | | 各种 Space* / SpacesIn* / BitFieldColonSpacing(约 20 项) | Google 基线默认 | | AllowShort*(Enums/Blocks/CaseLabels/Lambdas/IfStatements/Loops,6 项) | Google 基线默认或合并到 single line layout 区 | | AllowShortBlocksOnASingleLine: Never | 改为 false(Google 基线值) | | AlignConsecutiveBitFields | Google 基线默认 | | AlwaysBreakBeforeMultilineStrings / AlwaysBreakTemplateDeclarations | Google 基线默认 | | SpaceAfterTemplateKeyword | Google 基线默认 | ### 8.5 新增的项 | 配置项 | 值 | 说明 | |---|---|---| | SortUsingDeclarations | false | 新增,禁用 using 字母序排序 | | AllowAllParametersOfDeclarationOnNextLine | true | 显式写出(原被删除,现从 Google 基线继承并显式化) | | AlignOperands / AlignTrailingComments | true | 显式写出(原被删除,现从 Google 基线继承并显式化) | ### 8.6 BraceWrapping 子项变化 | 子项 | 改动前 | 改动后 | |---|---|---| | AfterControlStatement | Never | false(等价,Google 风格用 false) | | AfterObjCDeclaration | false | 删除(无 ObjC) | | BeforeLambdaBody / BeforeWhile | false | 删除(Google 基线默认) | | SplitEmptyFunction | true | false(配合 AllowShortFunctions) | > **注**:BraceWrapping 在 YAML 文件中的缩进从 2 空格改为 4 空格,但 YAML 缩进只表示父子层级关系,几个空格不影响 clang-format 解析,因此对格式化结果无影响。 ### 8.7 核心结论 1. **唯一的功能性修复**:AlignEscapedNewlines: Right → DontAlign,解决宏续行符撑超 120 列的问题 2. **新增的偏好项**:SortUsingDeclarations: false,保留 using 手写顺序 3. **其余变化**:从全量手写改为 BasedOnStyle: Google 继承,删除大量 CANN 仓用不到的 ObjC/Java/ForEach/Penalty 配置,维护成本大幅降低 4. **指针、缩进、行宽、大括号策略**等核心风格保持不变,避免大面积无意义 diff See merge request: cann/ops-transformer!5630 | 1 个月前 | |
UT框架支持tensorlist,FIA UT覆盖率提升 Co-authored-by: Bugslover<sunhao104@huawei.com> # message auto-generated for no-merge-commit merge: !8487 merge 910_revert_add_timestamp_print into master UT框架支持tensorlist,FIA UT覆盖率提升 Created-by: Bugslover Commit-by: Bugslover Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> UT框架支持tensorlist,FIA UT覆盖率提升 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> 关联Issue [#4149](https://gitcode.com/cann/ops-transformer/issues/4149) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> UT测试 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [x] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!8487 | 1 个月前 | |
change scatterPaKvCacheWithKScale npu api return Co-authored-by: yu_qinfei<yuqinfei1@h-partners.com> # message auto-generated for no-merge-commit merge: !9362 merge Delete_kvcacheWithScale_back into master change scatterPaKvCacheWithKScale npu api return Created-by: yu_qinfei Commit-by: yu_qinfei Merged-by: cann-robot Description: ## 描述 删除ScatterPaKvCacheWithKScale算子torch接口返回值 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/4114 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!9362 | 1 个月前 | |
pre-commit 规则优化 Co-authored-by: gitcode_lijd<lijiandong20@huawei.com> # message auto-generated for no-merge-commit merge: !9250 merge fix into master pre-commit 规则优化 Created-by: gitcode_lijd Commit-by: gitcode_lijd Merged-by: cann-robot Description: # ops-transformer pre-commit 规则适配提交总结 ## 改动内容 ### 1. .clang-format 规则调整 | 配置项 | 变更 | 原因 | |---|---|---| | ColumnLimit | 120 → 0 | 取消 120 列硬限制。原规则下行尾长注释会把整行撑超宽,导致 clang-format 强制拆分 for 头等结构,格式"合法但丑陋";改为不限宽后不再自动拆行(也不会主动合并已有换行),格式交由人工控制 | | AllowShortEnumsOnASingleLine | 新增 false | Google 基础风格默认 true,短枚举会被合并成单行,可读性差;关闭后枚举保持逐行 | | PackConstructorInitializers | 新增 Never | 配合 ColumnLimit: 0 使用:不限宽时构造函数初始化列表会被判定"全部放得下"而合并成一行巨码,Never 强制初始化项逐行换行 | | AlignEscapedNewlines 注释 | 删除 | 原注释中"保证 <=120"的理由随 ColumnLimit 取消而失效(DontAlign 配置本身保留,宏续行符 \ 紧贴内容、与宏行长度解耦) | ### 2. OAT.xml 扫描排除规则 在 defaultPolicyFilter(兼容性/许可证头策略过滤器)中新增三条排除: xml <filteritem type="filename" name="*.yaml" desc="YAML configuration files, no license header required"/> <filteritem type="filename" name="*.yml" desc="YAML configuration files, no license header required"/> <filteritem type="filename" name="*.csv" desc="CSV test case files, no license header required"/> YAML 配置文件与 CSV 测试用例文件无需许可证头,豁免 OAT 扫描校验。 ## 影响与已知副作用 1. **全仓重排版**:ColumnLimit: 0 改变了 clang-format 对存量代码的判定(所有行均"放得下"),首次全量跑 pre-commit 会产生大批量纯格式 diff(实测 mc2/ 目录约 780 个文件)。建议作为一次性"全仓格式化"提交合入,避免与逻辑改动混杂。 2. **构造函数初始化列表的权衡**(全仓统计): - 含多个初始化项的构造函数约 686 个文件 → 不限宽时会被合并成单行,需 Never 兜底逐行换行; - 含单个初始化项的构造函数约 1178 个文件 → Never 会把 Xxx() : Base(args) 这类短写法也强制拆行,churn 面更大。 - 当前提交选择了 Never;若后续不接受单初始化项拆行的副作用,可删除该项(代价是多初始化列表合并成单行)。 3. **clang-format 不主动并行**:ColumnLimit: 0 下已有的多行写法(如 OpDef 链式调用)会原样保留,不会被合并,存量手工排版安全。 4. **行尾注释换行问题根因**:此前 for 头被拆行的直接原因是行尾中文长注释超宽,已通过将注释移至上一行解决(fia_block_vec_fullquant_mx.h 两处);新规则下该问题不再出现。 ## 验证方式 - 使用 pre-commit 锁定的 clang-format v18.1.8,-style=file 全量校验目标文件输出 FORMAT_STABLE(格式化幂等,pre-commit 不再改动)。 ## 使用注意事项 - 提交顺序:先改完 → git add → commit;若 pre-commit hook 修改了文件,需重新 git add 再提交。在 add 之后继续手改文件,容易在 hook 恢复未暂存改动时冲突丢改。 See merge request: cann/ops-transformer!9250 | 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 | 1 个月前 | |
通过gitmodules引入third_party/catlass Co-authored-by: longjihui<longjihui@huawei.com> # message auto-generated for no-merge-commit merge: !1765 merge master into master 通过gitmodules引入third_party/catlass Created-by: longjihui Commit-by: longjihui Merged-by: cann-robot Description: ## 描述 新增.gitmodules文件,引入第三方库catlass,分支为v1.3.1-notla ## 关联的Issue 不涉及 ## 测试 仅引入三方仓,使用方式暂不确定,无需测试 ## 文档更新 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:新引入三方仓catlass See merge request: cann/ops-transformer!1765 | 4 个月前 | |
pre-commit规则适配 Co-authored-by: gitcode_lijd<lijiandong20@huawei.com> # message auto-generated for no-merge-commit merge: !2727 merge test into master pre-commit规则适配 Created-by: gitcode_lijd Commit-by: gitcode_lijd Merged-by: cann-robot Description: # ops-transformer pre-commit 规则适配 对 ops-transformer 仓的 .pre-commit-config.yaml 和 scripts/oat_check.sh 做了以下适配。 ## 改动文件 | 文件 | 说明 | |------|------| | .pre-commit-config.yaml | pre-commit hook 配置 | | scripts/oat_check.sh | OAT 开源合规扫描脚本 | | OAT.xml | OAT 扫描策略配置 | ## .pre-commit-config.yaml 改动明细 ### 1. check-json(第 31 行) 新增排除规则,跳过运行时自动生成的 kernel binary json 文件: diff - id: check-json + exclude: .*_runtime_kb\.json$ ### 2. clang-format(第 38 行) 新增 .asc 汇编文件支持: diff - files: \.(c|h|cpp|hpp|cc|hh|cxx|hxx)$ + files: \.(c|h|cpp|hpp|cc|hh|cxx|hxx|asc)$ ### 3. ruff-check(第 50 行) 忽略仓库中大量存在的 Python lint 问题规则,避免阻塞 commit: diff - args: ["--output-format", "github", "--fix"] + args: ["--output-format", "github", "--fix", "--ignore", "F841,F821,E741,E712,F403,F405,F601,E721,E731,F811,E711,E722,E402,F401"] 忽略的规则及原因: | 规则 | 含义 | 原因 | |------|------|------| | F841 | 变量赋值但未使用 | 测试脚本大量遗留 | | F821 | 使用了未定义的名称 | 测试脚本中引用了外部定义的符号 | | F401 | import 但未使用 | __init__.py 中重导出,ruff 无法识别 | | E402 | import 不在文件顶部 | 部分文件有环境初始化需要在 import 之前执行 | | E741 | 模糊变量名(如 l, O) | 测试脚本中常见 | | E712 | == True/False 比较 | 历史代码风格 | | E711 | != None 应改用 is not None | 历史代码风格 | | E721 | 类型比较方式 | 历史代码风格 | | E722 | 裸 except | 历史代码风格 | | E731 | lambda 赋值 | 历史代码风格 | | F403 | from xxx import * | 测试脚本常见 | | F405 | star import 中的名称 | F403 的伴随规则 | | F601 | 字典 key 重复 | 偶然出现 | | F811 | 重复定义 | 测试脚本中类重定义 | ### 4. codespell(第 61-64 行) #### 4.1 新增忽略词 diff - "CANN,cann,NNAL,nnal,ASCEND,ascend,EnQue,CopyIn,ArchType,AND,ND,tbe,copyin,alog", + "CANN,cann,NNAL,nnal,ASCEND,ascend,EnQue,CopyIn,ArchType,AND,ND,tbe,copyin,alog,wIh,dout,indexs,inH,padD", #### 4.2 扩展跳过文件类型 diff - "*.py,*.cpp,*.hpp,*.c,*.h,*.md", + "*.cc,*.cjs,*.clang-format,*.cmake,*.cpp,*.csv,*.cts,*.gitignore,*.gitkeep,*.gitmodules,*.h,*.hpp,*.in,*.info,*.ini,*.js,*.json,*.log,*.md,*.py,*.sh,*.TAG,*.ts,*.txt,*.xml,*.yaml,*.yml", 屏蔽仓库中所有 27 种文本文件类型,避免 codespell 对 .ini、.json 等配置文件误报(如 build-in → built-in、nd → and)。 ### 5. oat-check(第 76 行) 修复废弃的 stage name: diff - stages: [commit] + stages: [pre-commit] > pre-commit 4.0+ 中 commit 已废弃。 ## scripts/oat_check.sh 改动明细 参考社区最佳实践,核心改进: | 改进点 | 旧版 | 新版 | |--------|------|------| | 报告目录 | $REPO_ROOT/oat_reports/ | /tmp/oat_reports_$$/ | | 报告文件 | 用完后 rm -f 删除 | 临时目录保留不删 | | 并发保护 | 无 | flock 文件锁 | | 重复扫描去重 | 无 | HEAD SHA done-marker | | PR 范围扫描 | 无 | 支持 merge-base 差分扫描 | | report 缺失处理 | exit 1 阻止提交 | oat rc=0 时降级通过 | | grep 安全 | 无保护 | \|\| true 防止 set -e 中断 | 额外优化: - done-marker 命中时静默跳过(去掉 [SKIP] ... echo),避免 pre-commit 批量调用时刷屏。 ## OAT.xml 改动 新增 copyright 检查策略: diff - <policyitem type="copyright" name="xxx" path="abc/.*" .../> + <policyitem type="copyright" name="Huawei Technologies Co., Ltd." path=".*" rule="may" group="defaultGroup" filefilter="copyrightPolicyFilter" desc=""/> ## 验证结果 配置修改后,git commit 时所有 hook 均通过: trim trailing whitespace.........Passed fix end of files.................Passed check yaml.......................Skipped (no files) check for added large files......Passed check for merge conflicts........Passed detect private key...............Passed check json.......................Passed clang-format.....................Passed ruff check.......................Passed ruff format......................Passed codespell........................Passed OAT Compliance Check.............Passed > 注:clang-format 和 ruff 仍需代码侧配合(C++ 格式需手动 git add 修复后的文件,ruff lint 大量规则已忽略),但 hook 配置本身不再阻塞 commit。 See merge request: cann/ops-transformer!2727 | 1 个月前 | |
修改仓上中英文空格 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !6933 merge master into master 修改仓上中英文空格 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 修改仓上中英文空格。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [X] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!6933 | 2 个月前 | |
build.sh新增调试选项--mssanitizer/--dump_cce/--opkernel_aicpu;--aicpu_kernel更名为--opkernel_aicpu Co-authored-by: weihao18<weihao16@h-partners.com> # message auto-generated for no-merge-commit merge: !9336 merge feature/build-sh-debug-options into master build.sh新增调试选项--mssanitizer/--dump_cce/--opkernel_aicpu;--aicpu_kernel更名为--opkernel_aicpu Created-by: weihao18 Commit-by: weihao18 Merged-by: cann-robot Description: ## 描述 build.sh新增调试选项--mssanitizer/--dump_cce/--opkernel_aicpu;--aicpu_kernel更名为--opkernel_aicpu ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!9336 | 1 个月前 | |
docs: 完善QuickStart、环境部署、贡献指南等文档 Co-authored-by: youzhen5418<664699733@qq.com> # message auto-generated for no-merge-commit merge: !9604 merge docs-fix into master docs: 完善QuickStart、环境部署、贡献指南等文档 Created-by: youzhen5418 Commit-by: youzhen5418 Merged-by: cann-robot Description: ## 描述 1. 修正host日志路径 ascendc/log 为 ascend/log - docs/zh/debug/op_debug_prof.md:修正 host 侧日志路径描述 2. 统一SoC参数为小写形式 - docs/zh/install/build.md:统一 SoC 参数说明与 build.sh 实际实现一致 3. 修正build.md参数说明与build.sh实际实现不一致 - docs/zh/install/build.md:补充 build.sh 新增调试选项说明 4. 完善QuickStart与环境部署文档 - docs/QUICKSTART.md: - 修正"最新最新版本"重复词 typo - 补充编译前需 source set_env.sh 配置 CANN 环境变量的说明 - DumpTensor 示例改为贴合 Compute 函数上下文 - 性能采集由 msprof 改为 msprof op,并更新结果目录与参考链接 - 补充 msprof op 执行后打印信息与 OPPROF_* 结果目录说明 - selfZ 更正为 out,并补充修改 shape 时需同步 host vector 长度的提示 - 修正 printf 示例代码与实际 kernel 代码不一致(blockLength_/tileLength_ 计算逻辑、PRINTF 格式符) - docs/zh/install/quick_install.md: - "驱动与固件"修正为"驱动",移除固件描述,并细化驱动安装三步指引 - Docker 适用范围由"仅 A2、仅 Ubuntu"更正为 A2/A3、ubuntu22.04/openEuler24.03 等 - 补充镜像标签取值查询指引、-devel 开发镜像说明及 --name 自定义容器名提醒 - 安装入口统一引导到《CANN快速安装》 - 修正"最新最新版本"重复词 typo 5. 整理贡献指南文档结构与内容 - CONTRIBUTING.md: - 开头语句修正,新增准备工作与贡献场景导航 - 新增 SIG 议题评审流程,含 ops-transformer SIG 会议/议题链接及紧急需求处理 - 新增 Issue/PR 操作指南链接 - 交付件要求表格化,合规检查清单化 - 附录目录树 tests/ut 层级修正 - 规范中英文间距,删除冗余 /assign 描述 6. 补充子场景Tiling交付件与_tiling命名约束说明 - CONTRIBUTING.md:附录目录树补充 ${op_name}_tiling_${sub_case}.cpp/.h 可选子场景 Tiling 交付件,新增 _tiling 命名约束说明 - docs/zh/install/dir_structure.md:补充 arch35 示例与 _tiling 命名约束说明 ## 关联的Issue 无关联 Issue,为文档质量提升类贡献。 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 - docs/QUICKSTART.md - docs/zh/install/quick_install.md - docs/zh/install/dir_structure.md - docs/zh/debug/op_debug_prof.md - docs/zh/install/build.md - CONTRIBUTING.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!9604 | 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 | 1 个月前 | |
pre-commit 规则优化 Co-authored-by: gitcode_lijd<lijiandong20@huawei.com> # message auto-generated for no-merge-commit merge: !9250 merge fix into master pre-commit 规则优化 Created-by: gitcode_lijd Commit-by: gitcode_lijd Merged-by: cann-robot Description: # ops-transformer pre-commit 规则适配提交总结 ## 改动内容 ### 1. .clang-format 规则调整 | 配置项 | 变更 | 原因 | |---|---|---| | ColumnLimit | 120 → 0 | 取消 120 列硬限制。原规则下行尾长注释会把整行撑超宽,导致 clang-format 强制拆分 for 头等结构,格式"合法但丑陋";改为不限宽后不再自动拆行(也不会主动合并已有换行),格式交由人工控制 | | AllowShortEnumsOnASingleLine | 新增 false | Google 基础风格默认 true,短枚举会被合并成单行,可读性差;关闭后枚举保持逐行 | | PackConstructorInitializers | 新增 Never | 配合 ColumnLimit: 0 使用:不限宽时构造函数初始化列表会被判定"全部放得下"而合并成一行巨码,Never 强制初始化项逐行换行 | | AlignEscapedNewlines 注释 | 删除 | 原注释中"保证 <=120"的理由随 ColumnLimit 取消而失效(DontAlign 配置本身保留,宏续行符 \ 紧贴内容、与宏行长度解耦) | ### 2. OAT.xml 扫描排除规则 在 defaultPolicyFilter(兼容性/许可证头策略过滤器)中新增三条排除: xml <filteritem type="filename" name="*.yaml" desc="YAML configuration files, no license header required"/> <filteritem type="filename" name="*.yml" desc="YAML configuration files, no license header required"/> <filteritem type="filename" name="*.csv" desc="CSV test case files, no license header required"/> YAML 配置文件与 CSV 测试用例文件无需许可证头,豁免 OAT 扫描校验。 ## 影响与已知副作用 1. **全仓重排版**:ColumnLimit: 0 改变了 clang-format 对存量代码的判定(所有行均"放得下"),首次全量跑 pre-commit 会产生大批量纯格式 diff(实测 mc2/ 目录约 780 个文件)。建议作为一次性"全仓格式化"提交合入,避免与逻辑改动混杂。 2. **构造函数初始化列表的权衡**(全仓统计): - 含多个初始化项的构造函数约 686 个文件 → 不限宽时会被合并成单行,需 Never 兜底逐行换行; - 含单个初始化项的构造函数约 1178 个文件 → Never 会把 Xxx() : Base(args) 这类短写法也强制拆行,churn 面更大。 - 当前提交选择了 Never;若后续不接受单初始化项拆行的副作用,可删除该项(代价是多初始化列表合并成单行)。 3. **clang-format 不主动并行**:ColumnLimit: 0 下已有的多行写法(如 OpDef 链式调用)会原样保留,不会被合并,存量手工排版安全。 4. **行尾注释换行问题根因**:此前 for 头被拆行的直接原因是行尾中文长注释超宽,已通过将注释移至上一行解决(fia_block_vec_fullquant_mx.h 两处);新规则下该问题不再出现。 ## 验证方式 - 使用 pre-commit 锁定的 clang-format v18.1.8,-style=file 全量校验目标文件输出 FORMAT_STABLE(格式化幂等,pre-commit 不再改动)。 ## 使用注意事项 - 提交顺序:先改完 → git add → commit;若 pre-commit hook 修改了文件,需重新 git add 再提交。在 add 之后继续手改文件,容易在 hook 恢复未暂存改动时冲突丢改。 See merge request: cann/ops-transformer!9250 | 1 个月前 | |
更新 Latest News(2026年3-7月新增算子记录) Co-authored-by: weihao18<weihao16@h-partners.com> # message auto-generated for no-merge-commit merge: !9283 merge update-readme-ops-2026 into master 更新 Latest News(2026年3-7月新增算子记录) Created-by: weihao18 Commit-by: weihao18 Merged-by: cann-robot Description: ## 描述 更新README新增算子记录(2026年3-7月) ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!9283 | 1 个月前 | |
修复文档链接跳转失效问题 Co-authored-by: weihao18<weihao16@h-partners.com> # message auto-generated for no-merge-commit merge: !8061 merge fix_security_md into master 修复文档链接跳转失效问题 Created-by: weihao18 Commit-by: weihao18 Merged-by: cann-robot Description: ## 描述 修复SECURITY.md文档 [A-文件(夹)各场景权限管控推荐最大值] 链接跳转失效问题 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/3373 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!8061 | 2 个月前 | |
支持按模板参数编译算子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 | 6 个月前 | |
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 | 1 个月前 | |
build.sh参数校验整改 Co-authored-by: hblnb<huangbolin3@huawei.com> # message auto-generated for no-merge-commit merge: !7462 merge fix_example_compile into master build.sh参数校验整改 Created-by: hblnb Commit-by: hblnb Merged-by: cann-robot Description: ## 描述 1.新增--torch_extension选项,支持独立构建 torch_extension whl 包,不触发完整打包 2.将参数解析校验的流程封装成函数 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/4076 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [x] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!7462 | 1 个月前 | |
fix: 修正recurrent_gated_delta_rule的ut_cov_exclude配置及缺失空行 Co-authored-by: leiqingji<leiqingji@h-partners.com> # message auto-generated for no-merge-commit merge: !9073 merge fix/rgdr-ut-cov-exclude into master fix: 修正recurrent_gated_delta_rule的ut_cov_exclude配置及缺失空行 Created-by: leiqingji Commit-by: leiqingji Merged-by: cann-robot Description: ## 描述 test_config.yaml 中 recurrent_gated_delta_rule 算子的 ut_cov_exclude 配置错误,误排除了整个算子目录(含 op_kernel/op_host/op_api 源码),导致整仓 UT 覆盖率报告中遗漏该算子的覆盖率数据。同时该算子配置块与下一个 flash_attn 块之间缺失空行,导致 ut_make.sh 的 sed 解析越界,options 被污染。 ## 改动 - ut_cov_exclude 由 attention/recurrent_gated_delta_rule 修正为 attention/recurrent_gated_delta_rule/tests,只排除测试代码,不再排除算子源码 - recurrent_gated_delta_rule 块与 flash_attn 块之间补空行,修复 get_op_option 的 sed 解析越界问题 - 不影响其他算子的配置 ## 关联的Issue #3910 ## 测试 - 修正后 get_op_option 解析结果为 'recurrent_gated_delta_rule'(此前为被污染的多算子列表) - ut_cov_exclude 仅排除 tests 目录,op_kernel/op_host/op_api 源码纳入覆盖率统计 ## 类型标签 - [x] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [x] 🧪 测试 - [ ] 📦 构建/CI - [x] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!9073 | 1 个月前 | |
修改torch_npu产品名称和doc tools修改 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !9049 merge master into master 修改torch_npu产品名称和doc tools修改 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 修改torch_npu产品、doctools和api手册名称修改 ## 关联的Issue 关联Issue [#3706](https://gitcode.com/cann/ops-transformer/issues/3706) <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 README.md attention docs examples / mc2 / all_gather_add / docs experimental ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!9049 | 1 个月前 | |
fix(deps): add packaging>=26.0 to requirements.txt and install_deps.sh Co-authored-by: huang-chuhong<huangchuhong1@h-partners.com> # message auto-generated for no-merge-commit merge: !6194 merge fix/add-packaging-dependency into master fix(deps): add packaging>=26.0 to requirements.txt and install_deps.sh Created-by: huang-chuhong Commit-by: huang-chuhong Merged-by: cann-robot Description: ## 描述 仓库代码依赖了 packaging 包(cmake/scripts/util/const_var.py:15 使用 from packaging import version),但 requirements.txt 和 install_deps.sh 中未声明该依赖,导致全新环境下缺少该包时构建会报 ImportError。 ## 改动 - requirements.txt:添加 packaging>=26.0 - install_deps.sh:在 COMMON_PKGS 数组中添加 "packaging>=26.0" ## 关联的Issue #2812 ## 测试 - 执行 bash install_deps.sh 脚本无报错 - python3 -c "from packaging import version" 验证模块可用 - 不传新参数时原有依赖安装行为不受影响 ## 类型标签 - [ ] 🐛 Bug 修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [x] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!6194 | 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 | 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 | 1 个月前 | |
check_compile_version Co-authored-by: 吴剑飞<wujianfei15@huawei.com> # message auto-generated for no-merge-commit merge: !2085 merge check_version into master check_compile_version Created-by: hid81635372 Commit-by: 吴剑飞 Merged-by: cann-robot Description: ## 描述 工程上支持在编译时对子包版本进行校验 ## 关联的Issue https://gitcode.com/cann/ops-transformer/pull/2085 ## 测试 功能上可以在子包版本低于构建依赖时进行告警,RDV已通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述: 工程能力增加编译时版本校验功能 See merge request: cann/ops-transformer!2085 | 6 个月前 |
ops-transformer
🔥Latest News
- [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算子插件,包括NPUFlashAttention、NPUMultiHeadAttention、NPUMoeComputeExpertTokens等。
- [2025/12] 新支持算子kv_rms_norm_rope_cache、attention_update、attention_worker_scheduler、gather_pa_kv_cache、kv_quant_sparse_flash_attention、lightning_indexer_grad、mla_preprocess、mla_preprocess_v2、grouped_matmul_swiglu_quant_v2、attention_to_ffn、ffn_to_attention。
- [2025/12] 开源算子支持CANN Simulator仿真工具开发调试。
- [2025/12] 开源算子支持Ascend 950PR/Ascend 950DT/KirinX90系列产品。
- [2025/11] 新支持算子kv_quant_sparse_flash_attention、lightning_indexer、quant_lightning_indexer、sparse_flash_attention。
- [2025/11] 新支持示例算子rope_matrix和all_gather_add。
- [2025/11] 新增算子开发工程模板NpuOpsTransformerExt,无缝集成PyTorch张量操作,支持自动微分和GPU/NPU统一接口。
- [2025/10] 新增experimental目录,完善贡献指南,支持开发者调试并贡献自定义算子。
- [2025/09] ops-transformer项目首次上线,开源算子支持Atlas A2/A3系列产品。
🚀概述
ops-transformer是CANN(Compute Architecture for Neural Networks)算子库中提供transformer类大模型计算的进阶算子库,包括attention类、moe类、mc2类等,覆盖各类attention、MoE计算、通算融合等场景,算子库在架构图中的位置如下。

📌版本配套
本项目源码会跟随CANN软件版本发布,关于CANN软件版本与本项目标签的对应关系请参阅release仓库中的相应版本说明。 请注意,为确保您的源码定制开发顺利进行,请选择配套的CANN版本与Gitcode标签源码,使用master分支可能存在版本不匹配的风险。
🛠️环境准备
环境部署是体验本项目能力的前提,请先完成NPU驱动、CANN包安装等,确保环境正常。
⬇️源码下载
环境准备好后,下载与CANN版本配套的分支源码,通用命令如下,${tag_version}替换为分支标签名。以9.0.0分支源码下载为例:
# 通用命令:git clone -b ${tag_version} https://gitcode.com/cann/ops-transformer.git
git clone -b 9.0.0 https://gitcode.com/cann/ops-transformer.git
说明:若环境中已存在配套分支源码,可跳过本步骤,例如CANNLab默认已提供最新版本CANN对应的源码。
📖学习教程
💬相关信息
PS:本项目功能和文档正在持续更新和完善中,欢迎您关注最新版本。