Pull Request已成功合入, 合并人@CANN-robot
(感谢 rick cheng 的贡献)变更摘要
该 PR 主要围绕两条线展开:一是新增 af-inductor-cv-validator skill,为 Inductor CV 融合验证提供统一入口、操作手册和可执行的矩阵验证脚本;二是增强 SuperKernel 的 scope 验证与日志能力,包括新增 aclskScopeVerify 接口、引入 scope 配对校验、重构日志上下文管理并收敛 scope 相关类型定义。此外还调整了 .gitcode/workflows 下 CI 流水线的阶段划分、上传条件与参数传递。
主要改动
-
新增 Inductor CV 验证 skill 及其测试:新增
.claude/skills/af-inductor-cv-validator下的inductor_cv_guide.md、scripts/run_inductor_cv_matrix.py与tests/test_run_inductor_cv_matrix.py,测试覆盖矩阵定义、vv_only对照、mixed dtype、fragment08、env probe、matmul_v3头文件宏探测等关键行为。 -
新增
aclskScopeVerify接口及配套类型:在super_kernel.h中新增aclskScopeVerifyNodeType、aclskScopeVerifyKernelType、aclskScopeVerifyNodeInfo、aclskScopeVerifyGraphInfo、aclskScopeVerifySplitResult等枚举与结构体,并声明aclskScopeVerify;super_kernel.cpp中提供当前返回ACL_SUCCESS的桩实现。 -
图构建增加 scope 配对校验并传播失败:
SuperKernelGraph::UpdateNodeScopeBitFlags()改为返回bool,ProcessScopeEnd()同样返回bool;检测到未关闭、未匹配或重复的 scope begin/end 时返回false,InitSKGraph()据此记录错误并返回失败。 -
日志上下文
LogContextGuard重构:删除sk_resource_manager.cpp中的局部ScopedModelLogContext,将LogContextGuard扩展为支持按modelLabel路由默认日志和按handleName/filePath路由指定文件两种构造,并新增Restore()与previousModelLabel_恢复机制;异常处理在解析SkHeaderInfo后按modelIdIndex建立日志上下文。 -
scope 类型与常量定义统一:删除
sk_scope_kernel_types.h,将MAX_SCOPE_NAME_LEN、DEFAULT_SK_SCOPE_NAME、ScopeKernelArgs收敛到sk_common.h,相关.asc与测试文件改为包含sk_common.h;同时将IsScopeKernel重构为GetScopeKernelInfo,统一返回获取信息是否成功。


代码审查
我已读取完整的 .claude/skills/.gitignore 文件内容,并对照该 diff 逐条分析。
审查结论分析:
该文件采用「先 * 全部忽略,再用 ! 白名单递归放行」的策略。本次新增的 4 行:
!af-inductor-cv-validator/— 放行目录本身(配合父目录规则,目录必须被放行才能进入内部);!af-inductor-cv-validator/**— 递归放行目录下所有内容;af-inductor-cv-validator/**/__pycache__/— 重新忽略各层级__pycache__目录;af-inductor-cv-validator/**/*.pyc— 重新忽略.pyc文件。
这些规则的顺序与语义均正确:
- 重新忽略规则(第 16、17 行)位于放行规则(第 14、15 行)之后,遵循「后匹配者生效」,能正确覆盖
__pycache__和.pyc; **/可匹配零层目录,故能同时覆盖直接子级与深层路径;- 后续的
!af-perf-modeler/**等白名单针对其它目录,与af-inductor-cv-validator无路径交集,不会产生冲突; - 白名单目录名与 PR 描述中的 skill 名
af-inductor-cv-validator完全一致,符合文件第 2 行注释约定的「!<skill-name>/与!<skill-name>/**」白名单写法。
未发现正确性、安全、规范或性能方面的问题。
Closing Summary
- 已审查文件:
.claude/skills/.gitignore—— 无问题(no issues)。 - 各优先级发现数量:P0=0,P1=0,P2=0,P3=0。
- 整体风险判断:本次变更仅是为新增 skill 目录补充
.gitignore白名单并排除 Python 缓存产物,规则顺序与语义均正确,风险极低,属于安全、低影响的配置变更。
我已完成对唯一变更文件 .claude/skills/af-inductor-cv-validator/scripts/run_inductor_cv_matrix.py(+1313 行,新增脚本)的逐段审查。
审查结论
按优先级统计:
- P0:0
- P1:0
- P2:1(
--allow-multiple-cann声明后从未使用,多 CANN 分支无条件报错,防御性开关失效) - P3:4(未使用的
STAGES/CV_KINDS死代码、--timeout零/负数边界导致所有 case 立即超时、--autofuse-prefix场景仍强制要求 in-repo 构建产物)
总体风险判断: 该脚本为自包含的 CV 矩阵验证工具,核心数值比对(tensor_metrics)、输入构造(make_inputs)、矩阵定义、环境清洗与 case 编排逻辑整体自洽,未发现会导致构建失败、数据损坏或安全暴露的 P0/P1 缺陷。主要问题集中在:一个形同虚设的 CLI 开关(P2,需修复或删除)、若干死代码与边界输入校验缺失(P3)。整体为中等偏低风险,建议合并前至少处理 --allow-multiple-cann 的失效问题。
发现 6 个问题,均为中低优先级建议。
| 类型 | 数量 |
|---|---|
| 🔴 阻塞 | 0 |
| 🟡 建议 | 1 |
💬 仅评论


描述
一、主要解决的问题
1.1 缺少统一的 Inductor CV 验证入口
Autofuse / Inductor CV 相关修改后,验证流程容易散落在临时脚本和手工命令里,缺少一个可复用、可迁移、可回归的统一 skill。
1.2 缺少针对 CV 融合的完整操作手册
在 CV 场景里,环境部署、流程验证、精度定位、性能分析、单算子对比、全量矩阵验证经常需要一起看。如果没有统一规范,后续很难快速定位问题,也不方便做回归和看护。
1.3 缺少可直接执行的矩阵验证脚本
需要一个能在不同 CANN / torchair / torch-npu 环境下运行的验证脚本,能够完成 env probe、dry-run 和正式矩阵执行,并把每个 case 的中间产物、日志和结果保存下来。
二、修改方案
af-inductor-cv-validatorskill,作为 Inductor CV 验证入口。inductor_cv_guide.md,把工作流整理为六个章节:scripts/run_inductor_cv_matrix.py,用于执行环境探测、干跑和正式矩阵验证。tests/test_run_inductor_cv_matrix.py,覆盖矩阵定义、vv_only 对照、mixed dtype、fragment08、env probe 等关键行为。.claude/skills/.gitignore白名单,确保新 skill 可被仓库跟踪。三、验证方式
python3 -m pytest .claude/skills/af-inductor-cv-validator/tests/test_run_inductor_cv_matrix.py -q四、变更类型
五、核对清单
六、补充说明