CANN/cannbot-skills算子接口验证
Task B 产出验证【免费下载链接】cannbot-skillsCANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体本仓库为其提供可复用的 Skills 模块。项目地址: https://gitcode.com/cann/cannbot-skills校验S2P1_operator_model.json中对算子接口的声明是否真实。辅助源码_def.cpp_infershape.cpp为权威真值。源码优先级规则强制_def.cpp是算子 inputs、outputs、attributes 的唯一权威来源。_infershape.cpp仅作为 shape 推导逻辑和辅助验证的补充。场景处理方式_def.cpp中声明的 dtype/format/属性最终真值operator_model 必须与之完全一致_infershape.cpp中出现但_def.cpp中不存在的信息如额外 dtype不计入operator_model不视为 operator_model 缺失_def.cpp与_infershape.cpp冲突以_def.cpp为准_infershape.cpp中的 shape 推导逻辑SetDim、*y_shape *x_shape等作为 B1.5 outputs.shape 的验证依据B1.1 inputsRead_def.cpp的.Input(name)...DataType(...)段逐条比对 operator_modelinputs[]name必须与_def.cpp的Input()注册名一致 →fail不一致dtype按_def.cpp中 DataType 参数形式分两种处理直接列表.DataType({DT_A, DT_B, ...})operator_modelvalues须为同一集合 →fail共享数组引用.DataType(valueDataTypeX)Grep 该数组变量取值列表operator_modelvalues须为其去重子集 →fail遗漏或多出B1.2 outputsRead_def.cpp的.Output(name)...DataType(...)段逐条比对 operator_modeloutputs[]name必须与_def.cpp的Output()注册名一致 →faildtype按 operator_model 写法分三类operator_model 写法验证规则{values: [...]}同 B1.1 dtype 规则{sync_with: {x}}(1){x}在_def.cpp中存在(2)_infershape中InferDtype*函数以{x}.dtype 推导 output dtype(3) 推导逻辑无附加约束 →pass有附加约束如 dtype 属性联合限制→warn{fixed: {type}}InferDtype*中SetOutputDataType固定为DT_{TYPE}且无条件分支 →fail不一致B1.3 attributesRead_def.cpp的.Attr(name)注册段逐条比对 operator_modelattributes[]属性名一致顺序无关类型一致.Bool()/.Int()/.ListFloat()/.Float()/.String()↔type字段默认值一致operator_model 多出的属性如 aclnn 独有→warn属性名/类型/默认值不一致 →failB1.4 dtype 约束验证两层 Grep 提取算子支持的 dtype 枚举集Step AGrep_def.cpp中OP_CHECK_DTYPE_NOT_SUPPORT/OP_CHECK_DTYPE_NOT_MATCH命中 → 提取枚举集与 operator_model 各 input/output 的 dtype 比对Step BfallbackRead_infershape.cpp中InferDtype*/InferDataType*函数识别OP_CHECK_IF(... ge::DT_* || ...)→ dtype 枚举集{ge::DT_*, ge::DT_*, ...}→ dtype 数组SetOutputDataType(...)→ 输出 dtype提取约束后与各 input/output 的 dtype 比对 →fail不一致两层都无命中 →warnB1.5 outputs.shape当outputs[*].shape.rule derived时对expr执行 4 点语义检查Readshape.source行号处 ±5 行的_infershape.cpp代码维度保持expr 声称与 x 相同的维度 →_infershape中有*y_shape *x_shape或SetDim(idx, x-GetDim(idx))维度替换expr 声称由其他输入推导的维度如H→size[0]→SetDim(h_idx, out_info.output_h)的赋值来源匹配format 索引expr 提到 format-dependent 索引 →_infershape中有对应分支如format NHWC ? 1 : 2行号shape.source行号 ±5 行须包含相关推导逻辑 →fail行号不对1-3 满足 行号有效 →pass行号错误 →fail语义基本一致但措辞差异 →warnrule same_as_input时验证_infershape中*y_shape *x_shape其中x为shape.input字段引用的输入 tensor无SetDim覆写→fail不一致B1.6 platformRead_def.cpp的.AICore().AddConfig(...)段提取平台列表 capability flagsDynamicShapeSupportFlag、DynamicRankSupportFlag等。operator_model 的platform字段描述的架构与 AddConfig 平台列表一致 →fail完全不匹配operator_model 有aiconfig字段时比对 capability flags →fail不一致无该字段 →warnB1.7 结构完整性字段验证规则判定inputs[*].rank每个 input 有 rank 字段_infershape中有GetDimNum()校验时比对值warn缺失fail值不一致inputs[*].shape.constraints每条约束与_infershape的OP_CHECK_IF核对一致性warntorch_npu_api_exposure字段存在可以是nullwarn缺失B1 整体判定任一子项 fail →fail仅 B1.2 sync_with / B1.6 / B1.7 warn →pass_with_warnings全 pass 无 warn →pass。输出格式| ID | 状态 | verified/total | 备注 | |----|------|---------------|------| | B1.1 | pass/fail | v/t | | | B1.2 | pass/fail/warn | v/t | sync_with warn: N | | B1.3 | pass/fail/warn | v/t | aclnn独有 warn: N | | B1.4 | pass/fail/warn | v/t | | | B1.5 | pass/fail/warn | v/t | | | B1.6 | pass/warn | —/— | | | B1.7 | pass/warn | —/— | |【免费下载链接】cannbot-skillsCANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体本仓库为其提供可复用的 Skills 模块。项目地址: https://gitcode.com/cann/cannbot-skills创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考