| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
[GBSAG] Add A2/A3 Op generic_block_sparse_attention_grad and generic_block_sparse_attention_grad_metadata Co-authored-by: tramp-ll<linglong4@huawei.com> # message auto-generated for no-merge-commit merge: !11455 merge gbsag_v3 into master [GBSAG] Add A2/A3 Op generic_block_sparse_attention_grad and generic_block_sparse_attention_grad_metadata Created-by: tramp-ll Commit-by: tramp-ll Merged-by: cann-robot Description: ## 描述 GenericBlockSparseAttentionGrad是通用块稀疏注意力的反向计算算子。依据sparseBlockIdx/sparseBlockCount(稀疏块索引表)定义的索引,仅在被选中的KV块上计算和传播梯度,支持动态、可变长的分块稀疏模式。 新增 GenericBlockSparseAttentionGrad 和 generic_block_sparse_attention_grad_metadata算子 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/5110 ## 测试 开发自验证通过 ## 文档更新 NA ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!11455 | 2 天前 | |
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 个月前 | |
先安装 whl 包,再通过 install_common_parser.sh 统一安装权限 Co-authored-by: q00889097<qinhan10@huawei.com> # message auto-generated for no-merge-commit merge: !11639 merge master into master 先安装 whl 包,再通过 install_common_parser.sh 统一安装权限 Created-by: qinhan123 Commit-by: q00889097 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 本 PR 调整了算子包(OPP)的安装顺序与依赖版本:在 install_opp() 中将 install_whl_package 的调用提前到执行 install_common_parser.sh(COMMON_PARSER_FILE)之前,实现先安装 whl 包、再通过 install_common_parser.sh 统一安装权限的目标;同时升级了 cann-cmake 依赖版本 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!11639 | 12 小时前 | |
支持--pkg-type=deb/rpm包构建 Co-authored-by: chenyifan<chenyifan66@h-partners.com> # message auto-generated for no-merge-commit merge: !9867 merge support_debrpm into master 支持--pkg-type=deb/rpm包构建 Created-by: mutex_lock Commit-by: chenyifan Merged-by: cann-robot Description: ## 描述 支持通过 build.sh --pkg --pkg-type=run|rpm|deb|all 构建 run/rpm/deb 包(默认仍为 run)。 主要改动: 1. **构建入口**:build.sh / CMakeLists.txt 增加 PACKAGE_TYPE;cmake/package.cmake 与空包路径透传该参数到 set_cann_cpack_config。 2. **空包 soc(如 ascend910 / ascend310b / ascend610lite)**:不在 SOC_VERSION_LIST 仍走 cpack_empty_package;为空包设置默认 install component 并透传 PACKAGE_TYPE,使空包也可打出 rpm/deb。空包 run 为 stub 不落盘、deb/rpm 由包管理器解压元数据,**接受该机制差,不强行对齐**。 3. **deb/rpm 安装对齐 run**:新增 scripts/package/ops_transformer/rpm_deb/custom_postinst.sh / custom_prerm.sh(whl 安装与清理、copy_entity 递归赋权、filelist.csv/scene.info 等元数据权限、仓内 opp/built-in 刷权等)。 4. **依赖与兜底**:cann-cmake master-026 → master-046;无 ops-info.ini 时写出空 json,避免编包失败。 5. **文档 / CI**:更新 docs/zh/install/build.md、compile.md;ops_run_repackage.sh 支持可选 --pkg-type 二次生成 rpm/deb。 默认 bash build.sh --pkg 行为保持为打 run 包;run 安装脚本(opp_install.sh / install.sh)未改。 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/4300 ## 测试 A2/A3/A5 RDV ## 文档更新 - 更新 docs/zh/install/build.md、docs/zh/install/compile.md,补充 --pkg-type 说明与示例。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 Bug修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [x] 📦 构建/CI - [ ] 🔧 配置变更 - [x] 📝 文档更新 - [x] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!9867 | 27 天前 | |
feat(graph): op_graph proto 聚合支持 guard 宏捕获 Co-authored-by: huang-chuhong<huangchuhong1@h-partners.com> # message auto-generated for no-merge-commit merge: !10286 merge feat/merge-proto-guard into master feat(graph): op_graph proto 聚合支持 guard 宏捕获 Created-by: huang-chuhong Commit-by: huang-chuhong Merged-by: cann-robot Description: ## 描述 ops_proto_transformer.h 聚合头生成脚本 merge_proto.py 旧正则只提取 REG_OP(...) ... OP_END_FACTORY_REG(...) 块,丢弃外层 #ifndef/#define/#endif 宏守卫,导致带 OPS_PROTO_DEF_ 宏的 proto.h 在聚合后宏丢失。同步 ops-nn 的正则逻辑修复该问题。 ## 改动 - 新增 attention/recurrent_gated_delta_rule/op_graph/ 目录(recurrent_gated_delta_rule_proto.h + CMakeLists.txt),定义图模式算子注册 - scripts/util/merge_proto.py 升级正则为 OP_DEF_PATTERN:用 guard 命名组捕获 REG_OP 前紧跟的 #ifndef/#define,用条件组 (?(guard)...#endif) 匹配配对 #endif,连同注释整段提取 - 新增 match_op_proto_extend 处理 *_proto_extend.h(一个文件含多个 REG_OP,去重) - merge_op_proto 分支处理 _proto.h 与 _proto_extend.h - 入参去重 list(dict.fromkeys(...)),避免重复 proto 导致聚合头重复定义 ## 关联的Issue #4430 ## 测试 - bash build.sh --pkg --jit 编译出包成功(ascend910b) - 解压 run 包验证 ops_proto_transformer.h:OPS_PROTO_DEF_RECURRENTGATEDDELTARULE 宏已完整进入聚合头(#ifndef → #define → REG_OP → #endif) - 回归验证:无 guard 的 proto.h(chunk_gated_delta_rule、flash_attention_score 等)仍只提取 REG_OP 块,向后兼容 - ruff format / ruff check / py_compile 通过,行宽 ≤120 ## 类型标签 - [ ] 🐛 Bug 修复 - [x] ✨ 新特性 - [ ] ⚡ 性能优化 - [ ] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [ ] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!10286 | 16 天前 | |
整改仓内+安装重名头文件 Co-authored-by: chenyifan<chenyifan66@h-partners.com> # message auto-generated for no-merge-commit merge: !11266 merge clear_h into master 整改仓内+安装重名头文件 Created-by: mutex_lock Commit-by: chenyifan Merged-by: cann-robot Description: ## 描述 整改仓内及安装场景下的重名头文件冲突,避免同名头文件在编译包含路径或安装打包时互相覆盖。 **改动原因** - 仓内 attention/、gmm/、示例工程等存在 basename 相同的头文件,易在统一 include 搜索路径下发生错误包含。 - 与 third_party(如 catlass)及主仓多算子之间存在安装侧重名,可能覆盖安装产物。 **采取的方法** 1. **仓内重名**(637b7145f):对易冲突头文件按模块加前缀消歧,并同步更新引用,例如: - BSA / GBSA:block_epilogue_* / block_mmad_* → bsa_* / gbsa_* - recurrent_kda:recurrent_kda.h → recurrent_kda_arch22.h / recurrent_kda_arch35.h - grouped_matmul:grouped_matmul_kernel.h → grouped_matmul_kernel_arch35.h / fkl_grouped_matmul_kernel.h 等 - metadata:generic_block_sparse_attention_metadata.h → generic_block_sparse_attention_metadata_tiling.h 2. **安装重名**(975ffde47):对 GBSA/BSA/GMM 基础设施头文件统一加模块前缀(gbsa_ / bsa_ / gmm_,epilogue/gemm/tla 再细分),git mv 后批量更新 #include;**不改** experimental/ 与 third_party/。 3. 同步调整 scripts/check_duplicate_headers.sh 等相关引用。 **范围说明**:本次仅为头文件重命名与 include 路径同步,无业务逻辑变更(约 151 个文件,增删对等)。 ## 关联的Issue https://gitcode.com/cann/ops-transformer/issues/5037 ## 测试 ## 文档更新 ## 类型标签 - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] ⚡ 性能优化 - [x] ♻️ 重构 - [ ] 🧪 测试 - [ ] 📦 构建/CI - [ ] 🔧 配置变更 - [ ] 📝 文档更新 - [ ] ⬆️ 依赖升级 - [ ] 🔒 安全修复 - [x] 🧹 代码清理 - [ ] ❓ 其他,请描述: See merge request: cann/ops-transformer!11266 | 3 天前 | |
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 个月前 | |
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 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 2 天前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 12 小时前 | ||
| 27 天前 | ||
| 16 天前 | ||
| 3 天前 | ||
| 1 个月前 | ||
| 1 个月前 |