PyPTO-Pro 算子 Kernel 实现全流程指南:从冻结 DESIGN 到 L0/L1 交付与自验证
PyPTO-Pro 算子 Kernel 实现全流程指南从冻结 DESIGN 到 L0/L1 交付与自验证【免费下载链接】pypto-gymPyPTO-Gym 是基于 PyPTO 编程框架构建的算子与模型样例仓库项目地址: https://gitcode.com/cann/pypto-gym导读本文基于 CANN / pypto-gym 仓库中的 pypto-pro-op-develop SKILL.md系统讲解 PyPTO-Pro 算子 kernel 的完整实现方法论如何把冻结的DESIGN.md施工合同翻译为可运行、可测试的pl.jitkernel如何按 L0纯 Vector / 纯 Cube 一次交付与 L1Vector/Cube 融合、逐 Module staged 后 finalize两种 dispatch 模式组织交付产物以及如何编写 wrapper、测试与KB_USAGE.json并完成本地自验证闭环。读完本文你将掌握从读取上游合同、搭建 tile/section/循环骨架、落实 KB 约束到调试定位根因与交付前自检的整套实战流程。本文所依托的 skill 属于仓库中面向「PyPTO-Pro 算子实现」角色的标准作业流程实现者在完成本地开发与自验证后把产物交给独立 verifier本阶段不修改 SPEC、DESIGN、DESIGN_BINDINGS、Module 合同或编排状态。一、角色定位与职责边界pypto-pro-op-develop是编排流水线中的「实现Stage 4」角色其核心职责一句话概括把已冻结的DESIGN.md翻译为一个可运行、可测试的 PyPTO-Pro kernel并逐条落实DESIGN_BINDINGS.json中的 active requirements完成本地开发与自验证闭环后交给独立 verifier。从源码结构看该 skill 与其他编排环节pypto-pro-op-plan、pypto-pro-op-design、pypto-pro-op-verify、pypto-pro-op-perf-tune等共享同一套制品目录custom/op/与 KB 合同体系其职责边界由 KB CONTRACT 明确定义planner 负责写KB_SELECTION.jsoncoder本文主题在实现阶段写KB_USAGE.json实现声明verifier 独立校验产物与被引用代码。二、输入产物与输出 dispatch 模式2.1 必须读取的输入开始实现前实现者按顺序读取以下冻结合同与上游资料输入用途custom/op/DESIGN.md冻结的施工合同包含 Module、API、tile、地址、循环、同步、尾块和测试设计custom/op/DESIGN_BINDINGS.json上游冻结的 KB 要求与设计落点只读custom/op/module_interfaces.yamlL1 当前 Module 的输入来源、输出与golden_stepscustom/op/EXPLORE_REPORT.md已核对的 API 约束和相似样例custom/op/PRO_MATERIAL_INDEX.md需要回看原文时的 API、官方样例和教程路径custom/op/KB_SELECTION.jsonflat 布局或custom/op/class/KB_SELECTION.jsonsplit 布局已选中的 KB 参考集合2.2 按 dispatch 决定本轮产物dispatch 由上游编排器传入实现者必须识别是否包含module_k或显式finalizetrue路径dispatch本轮产物L0无module_k且无finalizecustom/op/test_op.py并生成或修正各 class 的KB_USAGE.jsonL1带module_kcustom/op/modules/test_op_modulesuffix_k.py可更新对应 class 目录的KB_USAGE.json记录指向该 staged 文件L1 finalizefinalizetrue无module_kcleanup 尝试后完成custom/op/test_op.py并生成或修正各 class 的KB_USAGE.jsonL1 的suffix_k是累积序号1 →12 →123 →123。文件和 wrapper 分别命名为test_op_modulesuffix_k.py与op_wrapper_modulesuffix_k。开发前需确认前一 staged 文件及对应的op_golden_stagesuffix_k.py已存在Module 1 没有前序文件。三、实现合同六条硬约束施工时始终满足以下本阶段职责任何一条都不可放宽单 kernel 原则一个交付文件只含一个pl.jitkernel核心计算全部在该 kernel 内wrapper 只启动一次 kernel且启动不在 host 循环内。冻结合同不可静默修改严格执行 DESIGN.md 已冻结的 Module 边界、API 序列、tile 属性/地址、循环、同步、尾块和vector_selection。功能或精度测试表明设计有误时上报疑似design_violation不得静默改设计。buffer 轮转约束轮转 tile 使用make_tile_groupauto_mutexmake_tile只用于不参与轮转的单次 scratch。不要在auto_mutex管理的 tile 上叠加手动sync_src/sync_dst。wrapper 边界wrapper 只做参数检查、读取 KB 约束列明的只读元数据、纯 Python 整数推导、torch.empty分配当前 wrapper 合同声明的输出和一次 kernel 启动。完整边界与迁移方式见 wrapper-boundary.md。测试经 wrapper 调用 kernel不得删改 DESIGN.md §8 的 case 来迁就实现也不得把核心计算移到测试或 host 代码。上下文效率对已加载且未发生变更的文件按需读取避免全量重读减少无效 Token 开销与注意力稀释。模板与参考之间是互补关系DESIGN.md 决定实现什么模板或官方样例提供如何写的主要起点KB_SELECTION.json已选参考补充必须落实的 pattern 和约束三者不得相互替代。标为 conceptual 的片段不得直接复制成交付代码。四、资源索引模板、参考与脚本本 skill 的资源索引含加载时机是唯一来源核心条目如下资源用途加载时机pure_vec_impl_template.py.tmpl纯 vec 通用骨架含 Pattern A/B/B/C 四种子模式纯 vec 算子生成代码前$PYPTO_DEVKIT_DIR/pro_ops/matmul/test_matmul_perf_asw_4k_dn_move_offset_dynamic.py纯 cube 算子候选实现起点——两级 K 分块 move offset 嵌套四分支 K 累加 尾块 ASW 蛇形调度纯 cube 算子生成代码前仅在该路径存在且目标版本匹配时使用impl_template.py.tmplkernel 文件骨架tile 声明 section Module 测试函数通用含 CV 融合 / 多 Module / 跨核流水生成代码前必读debugging-methodology.md调试方法论先确认失败可信 → 症状快查表 → 分层 review → 定位技术 → 修正后验证验证失败进入 debug 状态时必读vf-reduction-perf.mdVector reduction 的数值安全、正确 API 形态与性能注意事项实现或调优 Vector reduction 时cv-matmul-direct-buffering.mdCube 累加器在同一 launch 内被 Vector epilogue 消费时的轮转缓冲与auto_mutex形态实现 CV 直连 matmul 时cv_matmul_direct_buffering.py.tmpl上一行的可替换代码骨架同上fp32-chain-precision-fragments.py.tmplfp32 链路的精度安全片段Deep-K 投影、BF16 残差编码、K 分窗、RNE 转换等需要与 CPU 参考逐位对齐时kb-usage-template.jsonKB_USAGE.json字段骨架与单条记录示例写入或核验 usage 时list_idle_chip_ids.sh查找空闲 NPU chip运行前按需执行KB CONTRACTKB JSON 的基础字段、路径与状态词表读取 selection 或写 usage 前五、开发流程八步详解步骤 1锁定本轮范围按 dispatch 区分三种情况L0一次产出最终test_op.py。L1 Module只扩展当前 Module但 staged 文件必须可独立运行累积实现 Module 1..k。首次开发 Module k1 时复制上一个已验证文件生成新 suffix重做当前 Module 时只修改当前 suffix历史 staged 只读。L1 finalizecleanup 成功时校对脚本生成的最终文件cleanup 失败时保留原始错误以最后一个已验证 staged 为事实源重建最终文件只做必要交付修正。verifier 重试时按原始证据修正现有最终文件不重开 Module、不改历史 staged、不重跑 cleanup。步骤 2检查施工信息分别读取两份冻结合同DESIGN_BINDINGS.json遍历全部 binding 和 requirement提取四元组class_id reference selection_field req_id与source_anchors[]对 active requirementobligation applies另提取invariant、planned_location、verification_method对 validation scope 另提取验证范围、class_evidence和verification_method。DESIGN.md用planned_location定位对应设计再逐节核对§0 I/O 与动态维度、§1 API 序列及 Vectorvector_selection、§2/§3 tile 属性与地址、§4 section 与循环、§5–§7 分核/流水/同步/尾块、§8 至少 4 个目标测试 case、§10 完整数据流。L1 还要用module_interfaces.yaml核对当前 Module 的inputs、outputs、golden_steps和 section 类型。缺少关键合同或上下游产物互相矛盾时停止编码并上报疑似design_violation。步骤 3核对全部 API对 DESIGN.md §1 的每个 API 核对函数原型、位置/关键字参数、参数顺序、dtype、layout、MemorySpace 与目标平台支持。核对顺序先读 EXPLORE_REPORT.md §3 汇总结论信息不足时通过 PRO_MATERIAL_INDEX.md 定位目标版本 API 原文对不确定写法在官方指定算子中找到同平台 working example。形成覆盖本轮全部 API 的简短速查清单后续复用不要把编译错误直接解释为框架不支持。步骤 4搭建 tile、section 与循环把 DESIGN.md 的编译期常量放在 kernel 外部逐条复制 tile 属性和地址、确认空间不重叠按 §4–§6 搭建 section、SPMD 原语位置、循环和同步按 §7 为整除与尾块路径预留 valid-shape、填充和 store 处理。按算子类型选择编码参考纯 Vector含 L1 的 Vector Module以 pure_vec_impl_template.py.tmpl 为主要参考。vector_selection: vf时只保留一个匹配当前计算依赖的 Pattern删除其他 Patternvector_selection: tile_op时只借用模板中与当前合同一致的组织结构。纯 Cube含 L1 的 Cube Module以目标版本官方 matmul 样例为主要参考复用其 tile、K 循环、phase 和尾块的已验证写法。CV 融合或 L1 分 Module 开发每轮按当前 Module 的 Vector/Cube section 复用上述对应方式在同一 kernel 内从 Module 1..k 逐步扩展不为每个 Module 新建 kernel。两条性能强制模板中明确标注违反即性能不可接受需要 buffer 切换/轮转的 tile 一律用make_tile_group auto_mutexmake_tile仅限单次使用 scratch tile禁止make_tile 手动 sync管 buffer 轮转Vector 数值计算用vf.*指令手写在section_vector()内通过pl.vector_function或pl.inline with pl.section_vf():执行pl.*计算 API 不得用于 Vector 数值计算。L1 连接相邻 Vector/Cube section 时只在KB_SELECTION.json已选参考或目标版本文档/样例中查找与冻结 DESIGN.md 匹配的连接方式使上下游处理不同 tile/基本块时能够重叠无匹配则执行 DESIGN.md 的现有连接兜底。可调整新文件中复制过来的前序 Module 连接实现但不得改动历史 staged 文件、不得改变数学/接口/支持范围或自行发明连接协议。步骤 5填写 kernel 实现按 Module 把 DESIGN.md §1 的 API 序列翻译为代码以 §10 校验每一步输入、输出和数据所有权。跨核同步点严格取自 §6尾块严格取自 §7。所有 dtype 转换、轴变换、padding、索引和计算都在 kernel 内完成。关键实现细节来自模板与参考文档的源码级事实VF 寄存器生命周期pure_vec_impl_template.py.tmpl 中明确标注VF 寄存器在 VF 函数调用结束后即丢失VF 函数返回值不能被另一个 VF 函数接收编译器报ParserTypeError: Cannot infer type of argumentpl.load/pl.store/pl.fillpad_inplace是 MTE2/MTE3 操作不能在pl.vector_function内调用。跨 VF 传递中间结果必须用 UB tile 做累加器。VF 无分支特性vf-reduction-perf.mdvector pipe 无分支if在 vector function 内会被降级为 predicated execution两臂都发射。正确做法是在 kernel bodyscalar unit做条件判断或用空循环end begin (end - begin) * on、min(n, 1)循环、min/max clamp、vf.select等无分支写法替代。scratch barrier 规则pl.vector_function在调用点展开helper 尾部不是同步边界。只对可达展开路径上的具体 UB 依赖含后续 VF 调用、循环回边、lowering 后的 Tile 操作添加vf.mem_bar()不得默认追加尾部 barrier。Tile 操作只有在 lowering 提供匹配访问时才计入。精度链需要与 CPU 参考逐位对齐时参考 fp32-chain-precision-fragments.py.tmpl 中的 Deep-K 投影四个独立 FP32 L0C 累加器、BF16 三项残差编码、K64 分窗、RNE 协议转换等片段。注意其中pl.cast模式CAST_ROUND/CAST_RINT与版本的强绑定关系使用前必须以目标版本为准核对。实现与任何冻结常量、算法步骤或布局不一致时不得静默交付先判断是抄录错误修代码还是设计错误上报疑似design_violation。步骤 6编写 wrapper、测试和 KB 使用记录wrapper 入口命名是硬合同L0 与 L1 finalize 暴露op_wrapper签名和返回值符合算子 schemaL1 staged 暴露op_wrapper_modulesuffix_k输入采用primary_inputs输出当前 Module 的结果。optional 参数若可被调用方省略必须提供相应默认值。TensorListis_list: true同样只能启动一次 kernel且启动不得位于 host 循环内参数展开、固定 arity、地址/shape 传递与 work-item 映射必须原样执行 DESIGN.md 及已选 TensorList pattern。wrapper 的结构可参考 impl_template.py.tmpldef {op}_wrapper(inp: torch.Tensor) - torch.Tensor: host 适配 kernel launch外部调用入口。 out torch.zeros_like(inp) block_dim {BLOCK_DIM} # num_cores 计算式来自 DESIGN.md §5 {op}_kernelNone, block_dim torch.npu.synchronize() return out测试要求在同一文件实现 DESIGN.md §8 的全部 case至少覆盖整除、尾块和跨多 tile 等设计分支每个 case 使用独立def test_...从op_golden._get_device()获取设备不硬编码卡号测试前把本 skill 的 precision_compare.py 复制到custom/op/用模板_assert_precision对比 CPU FP32 golden不自定义阈值。关键点dev-only import 必须放在函数体内。precision_compare与op_golden_cpu是 dev-only 工具_assert_precision内from precision_compare import check_precision和from {op}_golden_cpu import {op}_golden_cpu必须留在函数体内——交付单元被作为模块加载时会执行所有顶层代码顶层 import 会直接ModuleNotFoundError导致交付态全部 case 失败。L1 对比当前op_golden_stagesuffix_k同样必须在函数体内 import。KB_USAGE.json 规范Coder/Verifier 共用空集仅当 selection 引用并集为空时DESIGN_BINDINGS.json.bindings和最终各 class 的KB_USAGE.json.invariants均为[]否则bindings不得为空。范围仅obligation applies生成 usage其他 requirement 零记录。validation scope 不生成记录但仍限制复用conceptual/unverified 不得冒充 validated局部结论不得外推。记录按 kb-usage-template.json 为一个 active × 一个实现产物复制一项。invariant前缀固定为[{selection_field}:{req_id_json} | {source_anchors_json}]req_id_json和source_anchors_json分别用标准库json.dumps(..., ensure_asciiFalse)生成后填入不能自行转义、重排/去重或用分隔符拼接 anchors。implementation.status默认为implemented仅上游 DESIGN 已冻结偏离时可改为deviated并在同级justification写入理由不得写verified/not_applicable。模式L0 每条 active 恰好一条 final不得有 stagedL1 Module staged 可不记录若记录同一 active 在同一文件至多一条L1 finalize 保留真实且已通过 module-check 的 staged、清除 stale每条 active 恰好一条 final。生命周期final 必须指向custom/op/test_op.py的真实 file/symbolstaged 必须指向custom/op/modules/test_op_modulesuffix_k.py的真实 file/symbolstaged 不能替代 final。仅首次进入实现流程或上游产物变化后重入时清空全部 usage。验证范围/方法/证据复用L1 Module 只检当前 Module 承载的 active 与 scopeL0/finalize 检全部。不得改变验证目标输入就绪即执行证据复用以被检实现、输入、方法、检查内容和覆盖范围均未变化为前提。schema_version的整段占位字符串必须换成 topology-map.json 当前contract.contract_version的整数KB CONTRACT 中记录当前为 3不得写死版本。步骤 7运行并调试只使用当前环境运行本轮文件# L0 / L1 finalize python custom/op/test_op.py # L1 python custom/op/modules/test_op_modulesuffix_k.py成功标准是全部 case 输出 PASS 且没有未解释告警。失败时读取 debugging-methodology.md按根因返回或继续根因动作当前实现的代码翻译、参数或局部细节修复本轮文件并重跑selection 的布局、唯一键、引用或适用性错误或实现依赖未选参考上报疑似kb_selection_invalid附 class、引用与事实不改 selection也不只在 usage 中补路径DESIGN 的维度、API 序列、tile、循环、同步、尾块、vector_selection或 Module 合同上报疑似design_violation附错误原文、最小复现和对应合同位置不改冻结产物selection 有效但 Binding 的状态、不变量、planned_location或verification_method错误/矛盾/不可执行上报疑似design_violation仅环境阻断时报env_error已核对文档、官方样例并穷尽 DESIGN 允许路径后确认框架能力缺口返回capability_gap附目标版本、原始错误、尝试路径和各自失败证据不在 host 端绕过导入、CANN、设备不可见或疑似 hang加载pypto-pro-environment-check按其流程评定并把证据交给编排器不自行改环境调试方法论要点debugging-methodology.md先确认失败可信找出最先失败的 case 单独重跑区分精度失败与运行环境失败确认运行的是当前源码在干净上下文中重复最小失败一次。设备故障可能污染 NPU 上下文不要把一次故障计成多个 kernel 缺陷。症状快查表节选shape 正确但值大面积错误 → 查公式/cast 时点/输入输出语义/layout仅大 shape 失败 → 查各片空间容量/tile 切分/跨 tile 状态仅尾块失败 → 查 valid-shape 重置/边界索引/填充/store 范围同步告警或流水结果异常 → 查数据所有权/生产消费顺序/event 隔离/buffer 生命周期。分层 review从数学和维度 → layout 与 API → tile 与容量 → 尾块 → 同步与所有权 → 分核与跨 tile 状态 → 数值边界 → 实现路径自高层到低层寻找第一个偏离合同的位置。定位技术最小复现依次收缩到 Module → 子公式 → 单条 API/单个 tile → 边界场景、消融从 load/store 骨架每次只加回一个阶段并与 golden 比对、单因素替换、差异属性二分固定共有属性只改一个候选差异。步骤 8交付前自检产物路径和 L0/L1 命名正确L1 staged 链保留。pl.jit恰好一个wrapper 启动 kernel 恰好一次且不在循环内。实现逐项符合 DESIGN.mdVector 使用冻结的vector_selection。L1 只修改本轮新 staged 文件历史 staged 文件未变异构 Module 连接符合 DESIGN.md 和所用参考。当前模式的代码、usage 和方法证据满足 KB usage 规范。wrapper 的完整 host 调用链符合实现合同 #4。DESIGN.md §8 全部 case 已实际运行并通过测试数据、dtype、shape、value range 未被偷换。dev-only import 位于函数内交付态模块可安全导入。返回运行命令、逐四元组方法证据、原始结果、产物路径和分类 verdict不声称 verifier PASS。若无需修改附本模式全部产物的检查证据不得空返回或只给笼统结论。六、精度自验证引擎precision_compare.pyprecision_compare.py 是当前工作流固定的方案 A 混合容差精度对比引擎阈值硬编码、不接受外部参数防作弊纯 CPU torch 实现不依赖 torch_npu。其判定逻辑以文件注释为当前可执行事实源逐元素通过条件|actual - golden| atol rtol * |golden|整体通过条件matched_ratio 0.99 AND max_abs_error max_abs_error_limit AND mean_abs_error atol AND mean_rel_error rtolmax_abs_error_limitmax(fixed_limit, 32 * ULP)按 dtype 查表的阈值_THRESHOLDSdtypertolatolfixed_max_abs_limitfloat162^-9 ≈ 1.95e-32^-9 ≈ 1.95e-30.1bfloat162^-6 ≈ 1.56e-22^-6 ≈ 1.56e-21.0float322^-10 ≈ 9.77e-42^-16 ≈ 1.53e-50.01float642^-10 ≈ 9.77e-42^-16 ≈ 1.53e-50.01此外整数类型走torch.equal精确匹配NaN 位置必须一致Inf 同号视为匹配、异号 FAIL、一方 Inf 一方有限值时替换为finfo.max后正常判定。check_precision支持单输出与多输出tuple/list对比dtype_str参数可选默认从 actual 推断。七、CV 直连 matmul 的轮转缓冲要点当 Cube 累加器在同一 launch 内被 Vector epilogue 消费时CV 融合场景参考 cv-matmul-direct-buffering.md 与 cv_matmul_direct_buffering.py.tmpl核心要点buffer 映射两级 K 循环下 A/B MatL1深度 4、A/B Left/RightL0深度 2、int32 AccL0C与 direct int32 Vec tile 深度 1分别用.next()/.current()游标操作addrs标量值是第一个 TileGroup slot 基址后续 slot 按物理 tile 字节连续排布。mutex 分配每个同时存活的 TileGroup 分配唯一 mutex ID融合跨核 kernel 中先保留逻辑 READY/FREE ID 及其 AIV 镜像A5 映射下逻辑 0/1 占用物理 0/1/16/17再分配 buffer ID。Acc→Vector 直传使用pl.move(..., acc_to_vec_mode...)时phase不指定TMOV 无STPhase.Final对等物pin 紧凑 Acc 到完整物理窗口且 TMOV 前不缩窄老部署可能需要显式sync_src/sync_dst(M,FIX)兼容对。资源核算公式代码生成前符号化评估(TM,TK1,TN)候选L1 bytes depth_l1 * (TM*TK1 TK1*TN) * operand_bytes、L0A depth_l0 * TM*TK0 * operand_bytes、L0B depth_l0 * TK0*TN * operand_bytes、L0C TM*TN*accumulator_bytes。宽 tile 门控wide_n M m_min and K k_min and N % wide_tile 0 and not per-token and occupancy cores每个阈值都是 per-operator/per-target 的且宽 tile 门控必须逐形状实测正确性不等于可以安全放宽。提级门控编译代表性 dtype/尾块/tile-family key 并检查生成的 C 中 slot 地址、cursor modulo、TLOAD/TEXTRACT/TMATMUL 链、一次 Acc TMOV、无 GM workspace、无 Acc phase在授权设备上按 K0/K1 边界、M/N 尾块、多输出 tile、batch 做 bit-exact 对比用 msprof/kernel_details.csv实测只提级改善实测形状的 tile family。八、Vector reduction 的数值与性能纪律实现或调优 Vector reduction 时遵循 vf-reduction-perf.md 的纪律选择规则先确认正确性与 API 支持reduce 原语同类型、不能加宽窄 dtype 链超出格式范围时必须由调用方加宽累加器见 precision.md返回inf的更快候选不是候选再严格执行 DESIGN.md §1 的单一冻结选择。mask 放置vf.load_align加载寄存器视图、不接受 predicate registermask 应用于接受它的计算与 store 操作loaded vf.load_align(input_tile, offset) accumulator vf.add(accumulator, loaded, predicate) result vf.reduce_sum(accumulator, predicate) vf.store_align(output_tile offset, result, predicate)reduction checklist累加器保持数值合同所需精度默认 FP32从每次归约与输出 store 中排除 padding lane寄存器宽度、offset 单位、predicate 构造与归约结果 lane 均为版本相关事实VF 寄存器不消除 UB tile 容量预算每次 unroll/累加器/mask/buffer/tile 尺寸改动后重跑正确性。可用参考softmax 实现样例 中记录了 tile-op 与 vector-function 两种形态的 validated 样例以及跨 tile 归约的 TensorList 固定 arity 实测vec-tensorlist-fixed-arity.md。九、常见失败症状与根因分流速查结合步骤 7 的根因表和调试文档的症状快查表可将失败快速归类症状优先检查根因归属shape 正确但值大面积错误公式、cast 时点、输入输出语义、layout实现错误修复或设计错误上报仅大 shape 失败各片上空间容量、tile 切分、跨 tile 状态实现 / design_violation仅尾块失败valid-shape 重置、边界索引、填充、store 范围实现 / design_violation同步告警或流水结果异常数据所有权、生产/消费顺序、event 隔离、buffer 生命周期实现 / design_violationNaN、Inf、±0 异常dtype、运算顺序、超越函数范围、特殊值语义实现 / design_violation多核遗漏、重叠或累加异常work-item 覆盖、写入所有权、覆盖/累加语义、初始化实现 / design_violation失败按 dtype 或配置整齐分组目标版本支持、生成源码标识符、dtype/layout 合同capability_gap证据充分后导入、CANN、设备不可见或 hang环境流程env_error修复后必须回归重跑最小复现确认根因消失而非错误位置变化→ 运行一个经过相反分支的 case整除/尾块、单 tile/跨 tile、单核/多核→ 运行 DESIGN.md §8 全部 case → 若修改共享路径重点复核所有受影响 Module → 记录运行命令、原始结果摘要与仍未解释的风险。全量回归通过且无未解释告警才退出 debug 状态且自验证通过不等于 verifier PASS。总结PyPTO-Pro 算子 kernel 实现是一项合同驱动、证据闭环的工程任务以DESIGN.md为施工图、DESIGN_BINDINGS.json为要求清单、KB_SELECTION.json为参考约束通过 L0/L1 dispatch 决定产物形态借助本 skill 的模板体系纯 Vector 四 Pattern、通用 impl、CV 直连、fp32 精度片段快速搭建骨架用precision_compare.py的固定混合容差标准完成 CPU golden 自验证最终按四元组记录KB_USAGE.json并将证据链交付 verifier。整个流程的核心纪律可概括为冻结合同不可静默修改、wrapper 边界不可突破、dev-only 依赖不泄漏进交付态、调试先确认失败可信、所有结论以源码与运行证据为准。【免费下载链接】pypto-gymPyPTO-Gym 是基于 PyPTO 编程框架构建的算子与模型样例仓库项目地址: https://gitcode.com/cann/pypto-gym创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
上一篇/下一篇内容由系统自动关联
返回资讯列表 →