CANN/cannbot-skills Ascend C 白盒测试 Case Mapper 执行总纲
2026/7/4 6:53:33 网站建设 项目流程

Case Mapper 执行总纲

【免费下载链接】cannbot-skillsCANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体,本仓库为其提供可复用的 Skills 模块。项目地址: https://gitcode.com/cann/cannbot-skills

路径约定{skill_base}= 技能根目录绝对路径,由主 Agent 在构建 prompt 或执行流程时作为上下文参数传入。文档中的{skill_base}/references/...需替换为实际路径后再 Read。

角色

将 S2P2_cases.json 的抽象参数组合映射为具体的 tensor 构造配置(shape + dtype),产出 S5_case_mapper.py 脚本 + S5_verify_mapper.py 验证脚本 + S5_merge_expand.py 合并展开脚本 + JSON / md 输出文件,供下游 pytest 和 TTK 模块消费。

输入

文件必须?用途
S2P2_cases.jsonpath 用例的参数组合,mapper 运行时json.load读取
S2P1_operator_model.json约束框架:inputs/outputs 的 dtype、rank、shape.constraints、attributes
S2P2_param_def.jsondtype 参数名(dtype_tensors[0].param)、shape 参数 key 名与 groups 结构
S2P1_low_configs.json网络用例的语义参数值,网络映射阶段读取
S5_mapping_spec.md5b 读算子侧规格(§dtype ~ §验证规则)+(DYNAMIC)标注识别 DYNAMIC 输入;5b 生成 §网络用例映射 并写回
S2P0_file_manifest.jsontiling 源码文件路径清单,5a-pre 据此读取源码提取参数与维度的对应关系
infershape.cpp等源码辅助理解输出 shape 推导表达式(derived.expr)

S2P2_cases.json 读取限制

子 agent 在验证映射逻辑时,禁止全文读取 S2P2_cases.json。必须使用 Read 工具的offset=1, limit=30参数仅读取前几条用例作为验证样本。若样本用例的映射结果正确,即可认为映射逻辑验证通过,全部用例由生成的 S5_case_mapper.py 脚本运行时通过json.load批量处理。子 agent 可自行把握样本数量,以覆盖主要 group 为准。

信息来源优先级(强制)

约束信息(ndim range、tensor_constraints 等)必须以S2P1_operator_model.jsoninputs[*].rankinputs[*].shape.constraints为唯一来源,禁止从 tiling/infershape 源码重新推断。源码仅用于理解 shape 分解规则(decompose 策略)和输出 shape 推导表达式(derived.expr)。

产出物概览

可执行脚本

文件功能
S5_case_mapper.pymap_case()由 S5_mapping_spec.md 散文翻译生成(imperative Python),另有通用工具函数
S5_verify_mapper.py4 层自动验证(验证通过才能进入后续)
S5_merge_expand.py合并 + 空 tensor 补全 + 元素数过滤 + data_range 展开

ID 命名规范

类型格式示例
pathcase{序号:05d}case00000
networknetwork{序号:05d}network00001
空 tensor(REQUIRED)case{path 最大 ID + 1:05d}_{input_name}_emptycase00081_x_empty
空 tensor(DYNAMIC)case{path 最大 ID + 1 + idx:05d}_{name}_{suffix}case00081_x_first_empty(suffix: first/middle/last/partial_empty 或 all_empty,示例见 case00081_x_all_empty)
all 变体{原 ID}_all_{range}case00001_all_zero
one-hot 变体{原 ID}_{input_name}_{range}case00001_{input_name}_{range}

执行顺序约束(强制)

以下 Steps 必须按编号顺序逐步骤执行,禁止跳步或抢跑。

Step 5a-pre:映射规格生成

  • 指导文件{skill_base}/references/case-mapper/01-mapping-spec.md
  • 前置条件:S2P2_cases.json + S2P1_operator_model.json + S2P2_param_def.json + S2P0_file_manifest.json 已就绪
  • 职责:分析 operator_model 中各 input/output 的 param_type,生成 S5_mapping_spec.md(§dtype ~ §验证规则,不含 §网络用例映射)
  • 完成标志:S5_mapping_spec.md 已写入

Step 5a:生成 mapper + verifier

  • 指导文件{skill_base}/references/case-mapper/02-step5a-mapper.md
  • 前置条件:Step 5a-pre 完成
  • 职责:根据 S5_mapping_spec.md 生成 S5_case_mapper.py 和 S5_verify_mapper.py;运行验证确保映射正确
  • 完成标志
    • S5_case_mapper.py + S5_verify_mapper.py 已生成
    • 运行退出码 0
    • S5_mapped_cases_path.json 已写入
    • case 数量 == S2P2_cases.json
    • 0 validation errors

Step 5b:映射网络用例

  • 指导文件{skill_base}/references/case-mapper/03-step5b-network.md
  • 前置条件:Step 5a 完成
  • 职责:读 S5_mapping_spec.md(算子侧)+ S2P1_low_configs.json(网络侧),生成映射规则写回 S5_mapping_spec.md §网络用例映射;生成 S2P2_network_cases.json;复用 5a mapper 生成 S5_mapped_cases_network.json
  • 完成标志
    • S2P2_network_cases.json 已写入(字段名全部为算子参数名,_group="network")
    • S5_mapped_cases_network.json 已写入
    • 网络用例 tensor 构造合法

Step 5c:合并 + 空 tensor 补全 + data_range 展开

  • 指导文件{skill_base}/references/case-mapper/04-step5c-merge-expand.md
  • 前置条件:Step 5b 完成
  • 职责:合并 path + network 用例;补全空 tensor 变体;生成 low 档位(全 normal)和 high 档位(data_range 展开)
  • 完成标志
    • S5_merge_expand.py 已生成
    • python S5_merge_expand.py退出码 0
    • python S5_merge_expand.py 5d退出码 0
    • S5_mapped_cases_low.json + S5_mapped_cases_high.json 已写入
    • 空 tensor 变体已补全

通用规则

  • 前置条件未全部满足时,禁止启动该 Step
  • 完成当前 Step 并确认完成标志满足后,才能进入下一 Step
  • 自检失败 → 回到对应 Step 修正,修正完成后方可继续

【免费下载链接】cannbot-skillsCANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体,本仓库为其提供可复用的 Skills 模块。项目地址: https://gitcode.com/cann/cannbot-skills

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询