用途:验证 Triton 算子的数值精度是否达标,在精度通过前不做性能优化。核心原则是精度是算子正确性的底线。
工作流:编写 Torch 参考实现作为标杆;编写覆盖多种 shape、dtype 与边界情况的测试用例;在 NPU 上执行 Triton 算子与 Torch 参考实现;用 test_common.validate_cmp() 比对并生成精度报告。编写测试前必须完整阅读 scripts/test_common.py。
误差阈值:判定条件为 MERE < 阈值 且 MARE < 10× 阈值。float16 阈值 2⁻¹⁰≈9.77e-4,MARE 上限 9.77e-3;float32 阈值 2⁻¹³≈1.22e-4,MARE 上限 1.22e-3;bfloat16 阈值 2⁻⁷≈7.81e-3,MARE 上限 7.81e-2;整数类型与 bool 要求完全相等。MERE 为平均相对误差 mean(|y_cal-y_ref|/|y_ref|),MARE 为最大相对误差 max(|y_cal-y_ref|/|y_ref|)。
报告要求:包含验证配置(算子名称、测试形状、dtype、核心数)、所有 dtype 的阈值及判定条件、通过/失败总数、MERE 与 MARE 指标。精度报告写入算子目录下 precision_report.md,评估脚本写入 operator 目录下 precision_eval.py,参考 examples/ 下的示例脚本与报告格式。
限制与反模式:不提供 Torch 参考实现不得做精度验证;不得用错误阈值(如 FP16 用 FP32 阈值);不能只用 rtol/atol 代替 MERE/MARE 判定;归约操作必须升精度到 FP32;不能只测一种 dtype/shape 就断言正确;不能跳过非对齐维度等边界情况;精度通过前不做性能优化。