用途:当需要验证 Triton 算子代码功能正确性或采集其性能数据时使用,遵循标准验证流程。
主要能力与流程:输入 generated_code.py 与 task_file.py,依次执行 Triton 退化预检查、创建验证项目、执行验证、收集结果、性能测试、收集性能结果。
Step 0 退化预检查用 scripts/validate_triton_impl.py 做纯 AST 静态分析,无需 NPU/torch 运行时,检测三种退化:Type 1 无 @triton.jit kernel;Type 2 有 kernel 但 forward() 未调用;Type 3 forward() 中使用禁止的 torch./F. 计算。命令:python3 <skill目录>/scripts/validate_triton_impl.py <生成代码文件路径> --json,exit 0 通过。
Step 1 在验证目录创建两个文件:{op_name}_torch.py(复制任务文件)与 {op_name}_triton_ascend_impl.py(复制生成代码)。
Step 2 必须使用自带 scripts/verify.py,禁止自写测试或使用 torch.allclose。命令:python3 <skill目录>/scripts/verify.py --op_name <算子名> --verify_dir <验证目录> --triton_impl_name <模块名> --timeout 900。参数 --op_name 必填,其余可选,默认 triton_ascend_impl、900 秒。
Step 3 读取 verify_dir 下 verify_result.json,严格策略:全过 exit 0,否则 exit 1,需汇总全部 failures。
Step 4 仅当全过时执行 scripts/benchmark.py,命令:python3 <skill目录>/scripts/benchmark.py --op_name <算子名> --verify_dir <验证目录> --triton_impl_name <模块名> --warmup 5 --repeats 50 --output <路径>。有 L1 verify 闸门,校验通过才运行,否则 exit 2。
Step 5 读取性能报告 JSON,含 avg_latency_ms、peak_memory_mb、speedup_vs_torch(几何平均)、per_shape_results 及各类异常索引。
精度阈值:使用 MERE/MARE 双门限相对误差判定,需同时满足 MERE < threshold 且 MARE < 10×threshold;阈值按 dtype 给定(如 float16 为 2⁻¹⁰,float32 为 2⁻¹³ 等)。比对前检查形状一致、NaN/Inf 位置一致,bool 用 torch.equal。
脚本位于 skill 的 scripts/ 目录:validate_triton_impl.py、verify.py、benchmark.py。具体参数见 CLI 说明。