精度对比方案设计文档【免费下载链接】cann-bench评测AI在处理CANN领域代码任务的能力涵盖算子生成、算子优化等领域支撑模型选型、训练效果评估统一量化评估标准识别Agent能力短板构建CANN领域评测平台推动AI能力在CANN领域的持续演进。项目地址: https://gitcode.com/cann/cann-bench1. 概述1.1 背景在算子代码生成评测中需要对比 AI 生成的算子输出与 Golden 参考输出的精度差异。由于浮点运算的精度限制简单的绝对差值或相对差值判断不足以覆盖所有场景需要设计一套科学的精度对比方案。1.2 设计目标标准化采用业界认可的生态算子精度标准MERE/MARE全面性覆盖正常值域、小值域、相消位置等特殊场景科学性基于 IEEE 754 精度位数理论区分算子 bug 和 dtype 精度限制可配置支持算子自定义精度阈值1.3 适用范围计算 类算子的精度验证支持 float16、float32、bfloat16 等浮点类型支持单输出和多输出算子2. 核心算法2.1 误差指标采用生态算子开源精度标准的 MERE/MARE 指标平均相对误差MERE $$ \text{MERE} \text{avg}\left(\frac{|\text{actual} - \text{golden}|}{|\text{golden}| \epsilon}\right) $$其中 $\epsilon 10^{-7}$防止 golden 为 0 时除零。最大相对误差MARE $$ \text{MARE} \max\left(\frac{|\text{actual} - \text{golden}|}{|\text{golden}| \epsilon}\right) $$2.2 精度阈值表数据类型精度阈值 (Threshold)MARE 阈值 (10×Threshold)float16$2^{-10}$ ≈ 0.00098$2^{-6}$ ≈ 0.0156bfloat16$2^{-7}$ ≈ 0.00781$2^{-3}$ ≈ 0.125float32$2^{-13}$ ≈ 0.00012$2^{-9}$ ≈ 0.0022.3 基础通过标准正常值域通过条件 $$ \text{MERE} \text{threshold} \quad \land \quad \text{MARE} 10 \times \text{threshold} $$3. 小值域处理3.1 问题背景当 golden 值非常小接近 0时相对误差计算不稳定golden $10^{-6}$output $10^{-5}$相对误差 $|10^{-5} - 10^{-6}| / 10^{-6} 9$显然超过阈值但这可能是 dtype 精度限制而非算子错误3.2 小值域阈值表数据类型小值域阈值 (Small Value Threshold)小值域误差阈值 (Small Value Error)float16$2^{-11}$ ≈ $4.88 \times 10^{-4}$$2^{-16}$ ≈ $1.53 \times 10^{-5}$bfloat16$2^{-8}$ ≈ $3.91 \times 10^{-3}$$2^{-16}$ ≈ $1.53 \times 10^{-5}$float32$2^{-14}$ ≈ $6.10 \times 10^{-5}$$2^{-30}$ ≈ $9.31 \times 10^{-10}$3.3 错误计数定义ErrorCount统计小值域位置中绝对误差超过阈值的数量 $$ \text{ErrorCount} \sum \mathbb{I}\left(|\text{golden}| \text{threshold} \land |\text{actual} - \text{golden}| \text{error}\right) $$其中$\mathbb{I}(\cdot)$ 是指示函数条件成立为 1否则为 0threshold 为小值域阈值error 为小值域误差阈值3.4 小值域通过标准采用CPU 同精度对照方式将 NPU 表现与 CPU 同精度表现对比$$ \frac{\text{ErrorCount}{\text{npu}}}{\max(\text{ErrorCount}{\text{cpu}}, 1)} \leq 2 $$判断逻辑NPU 和 CPU 都有相近的错误数量 → dtype 精度限制 → 通过NPU 有大量错误CPU 几乎没有 → 算子精度问题 → 不通过4. 相消位置处理4.1 理论依据基于IEEE 754 浮点标准和Kahan 灾难性相消理论IEEE 754 精度位数不同 dtype 的尾数位数决定了有效数字范围dtype尾数位数相对精度有效数字FP3223 位$2^{-23} \approx 10^{-7}$~7 位FP1610 位$2^{-10} \approx 10^{-3}$~3 位BF167 位$2^{-7} \approx 10^{-2}$~2 位Kahan 灾难性相消当两个接近的大数相减时结果的有效位数急剧丢失。示例FP32 中两个 $10^4$ 量级的数相减得到 $10^{-3}$但精度只够表示 7 位有效数字结果相对于原操作数丢失精度可能输出为 0。4.2 相消检测条件科学的相消检测应基于精度位数理论# 检测条件 cancel_mask ( |output| cancel_zero_threshold # output 因相消接近零 AND |golden| cancel_boundary # golden 在精度边界附近 AND |golden| small_value_threshold # 排除小值域golden 不是极小值 AND is_valid # 是有效值非 NaN/Inf )4.3 相消阈值表阈值基于 dtype 精度位数设计dtypecancel_boundarycancel_zero_threshold说明FP32$2^{-8}$ ≈ 0.004$2^{-8}$ ≈ 0.004覆盖 $10^{-3}$ 范围相消FP16$2^{-5}$ ≈ 0.031$2^{-5}$ ≈ 0.031覆盖 $10^{-2}$ 范围相消BF16$2^{-3}$ ≈ 0.125$2^{-3}$ ≈ 0.125覆盖 $10^{-1}$ 范围相消阈值选择原则当 golden cancel_boundary 且 output ≈ 0 时判定为潜在相消位置阈值设置为比 dtype 精度稍大的值确保覆盖常见相消场景对于 FP32当操作数规模 ~$10^4$ 时结果 ~$10^{-3}$ 可能相消丢失4.4 相消位置通过标准同样采用CPU 同精度对照方式$$ \frac{\text{CancelErrorCount}{\text{npu}}}{\max(\text{CancelErrorCount}{\text{cpu}}, 1)} \leq 2 $$其中$\text{CancelErrorCount}$相消位置中相对误差超过 mare_threshold 的计数判断逻辑NPU 和 CPU 都因 FP32 精度位数限制产生相同的相消误差 → dtype 精度限制 → 通过NPU 产生误差CPU 正确计算 → 算子 bug → 不通过5. 完整通过标准5.1 三维度判断精度对比的最终通过条件为三个维度全部通过passed normal_passed small_value_passed cancel_passed维度通过条件正常值域MERE threshold 且 MARE 10×threshold小值域ErrorCount_npu / max(ErrorCount_cpu, 1) ≤ 2相消位置CancelErrorCount_npu / max(CancelErrorCount_cpu, 1) ≤ 25.2 处理流程┌─────────────────────────────────────────────────────────────┐ │ 精度对比流程 │ ├─────────────────────────────────────────────────────────────┤ │ 1. 计算 FP64 Golden高精度参考 │ │ 2. 计算 CPU 同精度输出用于对照 │ │ 3. 获取 NPU/算子输出 │ │ 4. 计算相对误差MERE/MARE │ │ 5. 判断三个维度 │ │ ├─ 正常值域标准 MERE/MARE 判断 │ │ ├─ 小值域ErrorCount 比值判断 │ │ │ 条件|golden| small_value_threshold │ │ └─ 相消位置CancelErrorCount 比值判断 │ │ 条件|output|≈0 AND |golden|在精度边界 │ │ 6. 综合判断通过/失败 │ └─────────────────────────────────────────────────────────────┘6. 实现细节6.1 文件结构src/kernel_eval/ ├── utils/ │ └── precision.py # 精度对比核心实现 └── eval/ ├── accuracy_eval.py # 精度评测器 └── evaluator.py # 评测流程计算CPU输出6.2 核心函数compare_tensorsprecision.py输入NPU output、FP64 golden、dtype、threshold、CPU output输出CompareResult含三个维度的判断结果evaluateaccuracy_eval.py调用 compare_tensors 进行精度对比返回 AccuracyResultevaluate_caseevaluator.py计算 FP64 Golden计算 CPU 同精度输出执行 NPU 算子调用精度对比6.3 CPU 输出计算# 使用原始 dtype 的输入调用 golden_fn cpu_inputs [item.cpu() for item in input_tensors] cpu_params param_builder.build_call_params(golden_fn, case, cpu_inputs) with torch.no_grad(): cpu_out golden_fn(**cpu_params) # 传入精度对比函数 accuracy_result evaluate( ai_outputnpu_output, golden_outputfp64_golden, cpu_outputcpu_out, # 关键传入CPU输出 ... )6.4 多输出处理对于多输出算子如 ApplyRotaryPosEmb 输出 query_out 和 key_outCPU 输出保留完整的 tuple/list 格式precision.py 的_normalize_outputs函数将多输出标准化为张量列表逐个张量对比汇总结果7. 特殊场景处理7.1 NaN 处理NPU 和 Golden 的 NaN 位置必须完全一致否则直接判定失败7.2 Inf 处理饱和边界场景FP32 → FP16 截断可能产生 Inf超过 65504单边 Inf 时替换为 dtype 最大有限值后继续比较双方都是 Inf 且符号相同 → 视为匹配7.3 整数类型整数类型要求精确匹配threshold 0。8. 配置说明8.1 全局阈值配置在precision.py中定义# 精度阈值 PRECISION_THRESHOLDS { float16: 2**-10, bfloat16: 2**-7, float32: 2**-13, } # 小值域阈值 SMALL_VALUE_THRESHOLDS { float16: 2**-11, bfloat16: 2**-8, float32: 2**-14, } # 小值域误差阈值 SMALL_VALUE_ERROR_THRESHOLDS { float16: 2**-16, bfloat16: 2**-16, float32: 2**-30, } # 相消边界阈值基于 IEEE 754 精度位数 CANCEL_BOUNDARY_THRESHOLDS { float32: 2**-8, # ≈ 0.004 float16: 2**-5, # ≈ 0.031 bfloat16: 2**-3, # ≈ 0.125 }8.2 算子自定义阈值在proto.yaml中配置precision_thresholds: float32: 0.005 # 自定义阈值 float16: 0.01 bfloat16: 0.018.3 阈值选择原则默认阈值基于 dtype 精度位数涉及三角函数的算子如 RoPE可适当放宽优化器算子如 Adam涉及累积误差可适当放宽不建议超过默认阈值的 10 倍9. 测试验证9.1 验证结果算子CPU 模式NPU 模式ApplyRotaryPosEmb100% (20/20)95% (19/20)ApplyAdamW100% (20/20)100% (20/20)9.2 边界场景验证场景预期结果说明相消NPU0, CPU0, golden1e-3通过IEEE 754 相消NPU和CPU一致相消NPU0, CPU1e-3, golden1e-3不通过NPU有bugCPU正确小值域NPUCPU 相同误差通过小值域比值≈1小值域NPU有误差 CPU无不通过NPU精度问题大数值golden0.1, NPU0不通过不满足相消条件10. 参考文献生态算子精度标准IEEE 754 浮点运算标准Kahan 灾难性相消理论numpy.allclose 组合容差机制附录 ACompareResult 数据结构dataclass class CompareResult: passed: bool # 最终通过判断 dtype: str # 数据类型 threshold: float # 精度阈值 mere: float # 平均相对误差 mare: float # 最大相对误差 max_diff: float # 最大绝对差异 mean_diff: float # 平均绝对差异 mismatch_count: int # 不匹配位置数 total_count: int # 总元素数 mismatch_ratio: float # 不匹配比例 small_value_error_count: int # 小值域 NPU 错误计数 small_value_cpu_error_count: int# 小值域 CPU 错误计数 small_value_total_count: int # 小值域位置总数 cancel_error_count: int # 相消位置 NPU 错误计数 cancel_cpu_error_count: int # 相消位置 CPU 错误计数 cancel_total_count: int # 相消位置总数 error_msg: Optional[str] # 错误信息附录 BIEEE 754 精度位数与阈值关系阈值基于 dtype 的精度位数设计dtype尾数位数相对精度cancel_boundary设计依据FP3223$10^{-7}$$2^{-8} \approx 0.004$7位有效数字$10^4$操作数相消得$10^{-3}$FP1610$10^{-3}$$2^{-5} \approx 0.031$3位有效数字$10^2$操作数相消得$10^{-2}$BF167$10^{-2}$$2^{-3} \approx 0.125$2位有效数字$10^1$操作数相消得$10^{-1}$相消示例FP32: $10^4 - 10^4 10^{-3}$但精度只够 7 位结果可能丢失设置 cancel_boundary $2^{-8} \approx 0.004$覆盖 $10^{-3}$ 范围【免费下载链接】cann-bench评测AI在处理CANN领域代码任务的能力涵盖算子生成、算子优化等领域支撑模型选型、训练效果评估统一量化评估标准识别Agent能力短板构建CANN领域评测平台推动AI能力在CANN领域的持续演进。项目地址: https://gitcode.com/cann/cann-bench创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
CANN/cann-bench 精度对比方案设计文档
发布时间:2026/7/11 20:02:47
精度对比方案设计文档【免费下载链接】cann-bench评测AI在处理CANN领域代码任务的能力涵盖算子生成、算子优化等领域支撑模型选型、训练效果评估统一量化评估标准识别Agent能力短板构建CANN领域评测平台推动AI能力在CANN领域的持续演进。项目地址: https://gitcode.com/cann/cann-bench1. 概述1.1 背景在算子代码生成评测中需要对比 AI 生成的算子输出与 Golden 参考输出的精度差异。由于浮点运算的精度限制简单的绝对差值或相对差值判断不足以覆盖所有场景需要设计一套科学的精度对比方案。1.2 设计目标标准化采用业界认可的生态算子精度标准MERE/MARE全面性覆盖正常值域、小值域、相消位置等特殊场景科学性基于 IEEE 754 精度位数理论区分算子 bug 和 dtype 精度限制可配置支持算子自定义精度阈值1.3 适用范围计算 类算子的精度验证支持 float16、float32、bfloat16 等浮点类型支持单输出和多输出算子2. 核心算法2.1 误差指标采用生态算子开源精度标准的 MERE/MARE 指标平均相对误差MERE $$ \text{MERE} \text{avg}\left(\frac{|\text{actual} - \text{golden}|}{|\text{golden}| \epsilon}\right) $$其中 $\epsilon 10^{-7}$防止 golden 为 0 时除零。最大相对误差MARE $$ \text{MARE} \max\left(\frac{|\text{actual} - \text{golden}|}{|\text{golden}| \epsilon}\right) $$2.2 精度阈值表数据类型精度阈值 (Threshold)MARE 阈值 (10×Threshold)float16$2^{-10}$ ≈ 0.00098$2^{-6}$ ≈ 0.0156bfloat16$2^{-7}$ ≈ 0.00781$2^{-3}$ ≈ 0.125float32$2^{-13}$ ≈ 0.00012$2^{-9}$ ≈ 0.0022.3 基础通过标准正常值域通过条件 $$ \text{MERE} \text{threshold} \quad \land \quad \text{MARE} 10 \times \text{threshold} $$3. 小值域处理3.1 问题背景当 golden 值非常小接近 0时相对误差计算不稳定golden $10^{-6}$output $10^{-5}$相对误差 $|10^{-5} - 10^{-6}| / 10^{-6} 9$显然超过阈值但这可能是 dtype 精度限制而非算子错误3.2 小值域阈值表数据类型小值域阈值 (Small Value Threshold)小值域误差阈值 (Small Value Error)float16$2^{-11}$ ≈ $4.88 \times 10^{-4}$$2^{-16}$ ≈ $1.53 \times 10^{-5}$bfloat16$2^{-8}$ ≈ $3.91 \times 10^{-3}$$2^{-16}$ ≈ $1.53 \times 10^{-5}$float32$2^{-14}$ ≈ $6.10 \times 10^{-5}$$2^{-30}$ ≈ $9.31 \times 10^{-10}$3.3 错误计数定义ErrorCount统计小值域位置中绝对误差超过阈值的数量 $$ \text{ErrorCount} \sum \mathbb{I}\left(|\text{golden}| \text{threshold} \land |\text{actual} - \text{golden}| \text{error}\right) $$其中$\mathbb{I}(\cdot)$ 是指示函数条件成立为 1否则为 0threshold 为小值域阈值error 为小值域误差阈值3.4 小值域通过标准采用CPU 同精度对照方式将 NPU 表现与 CPU 同精度表现对比$$ \frac{\text{ErrorCount}{\text{npu}}}{\max(\text{ErrorCount}{\text{cpu}}, 1)} \leq 2 $$判断逻辑NPU 和 CPU 都有相近的错误数量 → dtype 精度限制 → 通过NPU 有大量错误CPU 几乎没有 → 算子精度问题 → 不通过4. 相消位置处理4.1 理论依据基于IEEE 754 浮点标准和Kahan 灾难性相消理论IEEE 754 精度位数不同 dtype 的尾数位数决定了有效数字范围dtype尾数位数相对精度有效数字FP3223 位$2^{-23} \approx 10^{-7}$~7 位FP1610 位$2^{-10} \approx 10^{-3}$~3 位BF167 位$2^{-7} \approx 10^{-2}$~2 位Kahan 灾难性相消当两个接近的大数相减时结果的有效位数急剧丢失。示例FP32 中两个 $10^4$ 量级的数相减得到 $10^{-3}$但精度只够表示 7 位有效数字结果相对于原操作数丢失精度可能输出为 0。4.2 相消检测条件科学的相消检测应基于精度位数理论# 检测条件 cancel_mask ( |output| cancel_zero_threshold # output 因相消接近零 AND |golden| cancel_boundary # golden 在精度边界附近 AND |golden| small_value_threshold # 排除小值域golden 不是极小值 AND is_valid # 是有效值非 NaN/Inf )4.3 相消阈值表阈值基于 dtype 精度位数设计dtypecancel_boundarycancel_zero_threshold说明FP32$2^{-8}$ ≈ 0.004$2^{-8}$ ≈ 0.004覆盖 $10^{-3}$ 范围相消FP16$2^{-5}$ ≈ 0.031$2^{-5}$ ≈ 0.031覆盖 $10^{-2}$ 范围相消BF16$2^{-3}$ ≈ 0.125$2^{-3}$ ≈ 0.125覆盖 $10^{-1}$ 范围相消阈值选择原则当 golden cancel_boundary 且 output ≈ 0 时判定为潜在相消位置阈值设置为比 dtype 精度稍大的值确保覆盖常见相消场景对于 FP32当操作数规模 ~$10^4$ 时结果 ~$10^{-3}$ 可能相消丢失4.4 相消位置通过标准同样采用CPU 同精度对照方式$$ \frac{\text{CancelErrorCount}{\text{npu}}}{\max(\text{CancelErrorCount}{\text{cpu}}, 1)} \leq 2 $$其中$\text{CancelErrorCount}$相消位置中相对误差超过 mare_threshold 的计数判断逻辑NPU 和 CPU 都因 FP32 精度位数限制产生相同的相消误差 → dtype 精度限制 → 通过NPU 产生误差CPU 正确计算 → 算子 bug → 不通过5. 完整通过标准5.1 三维度判断精度对比的最终通过条件为三个维度全部通过passed normal_passed small_value_passed cancel_passed维度通过条件正常值域MERE threshold 且 MARE 10×threshold小值域ErrorCount_npu / max(ErrorCount_cpu, 1) ≤ 2相消位置CancelErrorCount_npu / max(CancelErrorCount_cpu, 1) ≤ 25.2 处理流程┌─────────────────────────────────────────────────────────────┐ │ 精度对比流程 │ ├─────────────────────────────────────────────────────────────┤ │ 1. 计算 FP64 Golden高精度参考 │ │ 2. 计算 CPU 同精度输出用于对照 │ │ 3. 获取 NPU/算子输出 │ │ 4. 计算相对误差MERE/MARE │ │ 5. 判断三个维度 │ │ ├─ 正常值域标准 MERE/MARE 判断 │ │ ├─ 小值域ErrorCount 比值判断 │ │ │ 条件|golden| small_value_threshold │ │ └─ 相消位置CancelErrorCount 比值判断 │ │ 条件|output|≈0 AND |golden|在精度边界 │ │ 6. 综合判断通过/失败 │ └─────────────────────────────────────────────────────────────┘6. 实现细节6.1 文件结构src/kernel_eval/ ├── utils/ │ └── precision.py # 精度对比核心实现 └── eval/ ├── accuracy_eval.py # 精度评测器 └── evaluator.py # 评测流程计算CPU输出6.2 核心函数compare_tensorsprecision.py输入NPU output、FP64 golden、dtype、threshold、CPU output输出CompareResult含三个维度的判断结果evaluateaccuracy_eval.py调用 compare_tensors 进行精度对比返回 AccuracyResultevaluate_caseevaluator.py计算 FP64 Golden计算 CPU 同精度输出执行 NPU 算子调用精度对比6.3 CPU 输出计算# 使用原始 dtype 的输入调用 golden_fn cpu_inputs [item.cpu() for item in input_tensors] cpu_params param_builder.build_call_params(golden_fn, case, cpu_inputs) with torch.no_grad(): cpu_out golden_fn(**cpu_params) # 传入精度对比函数 accuracy_result evaluate( ai_outputnpu_output, golden_outputfp64_golden, cpu_outputcpu_out, # 关键传入CPU输出 ... )6.4 多输出处理对于多输出算子如 ApplyRotaryPosEmb 输出 query_out 和 key_outCPU 输出保留完整的 tuple/list 格式precision.py 的_normalize_outputs函数将多输出标准化为张量列表逐个张量对比汇总结果7. 特殊场景处理7.1 NaN 处理NPU 和 Golden 的 NaN 位置必须完全一致否则直接判定失败7.2 Inf 处理饱和边界场景FP32 → FP16 截断可能产生 Inf超过 65504单边 Inf 时替换为 dtype 最大有限值后继续比较双方都是 Inf 且符号相同 → 视为匹配7.3 整数类型整数类型要求精确匹配threshold 0。8. 配置说明8.1 全局阈值配置在precision.py中定义# 精度阈值 PRECISION_THRESHOLDS { float16: 2**-10, bfloat16: 2**-7, float32: 2**-13, } # 小值域阈值 SMALL_VALUE_THRESHOLDS { float16: 2**-11, bfloat16: 2**-8, float32: 2**-14, } # 小值域误差阈值 SMALL_VALUE_ERROR_THRESHOLDS { float16: 2**-16, bfloat16: 2**-16, float32: 2**-30, } # 相消边界阈值基于 IEEE 754 精度位数 CANCEL_BOUNDARY_THRESHOLDS { float32: 2**-8, # ≈ 0.004 float16: 2**-5, # ≈ 0.031 bfloat16: 2**-3, # ≈ 0.125 }8.2 算子自定义阈值在proto.yaml中配置precision_thresholds: float32: 0.005 # 自定义阈值 float16: 0.01 bfloat16: 0.018.3 阈值选择原则默认阈值基于 dtype 精度位数涉及三角函数的算子如 RoPE可适当放宽优化器算子如 Adam涉及累积误差可适当放宽不建议超过默认阈值的 10 倍9. 测试验证9.1 验证结果算子CPU 模式NPU 模式ApplyRotaryPosEmb100% (20/20)95% (19/20)ApplyAdamW100% (20/20)100% (20/20)9.2 边界场景验证场景预期结果说明相消NPU0, CPU0, golden1e-3通过IEEE 754 相消NPU和CPU一致相消NPU0, CPU1e-3, golden1e-3不通过NPU有bugCPU正确小值域NPUCPU 相同误差通过小值域比值≈1小值域NPU有误差 CPU无不通过NPU精度问题大数值golden0.1, NPU0不通过不满足相消条件10. 参考文献生态算子精度标准IEEE 754 浮点运算标准Kahan 灾难性相消理论numpy.allclose 组合容差机制附录 ACompareResult 数据结构dataclass class CompareResult: passed: bool # 最终通过判断 dtype: str # 数据类型 threshold: float # 精度阈值 mere: float # 平均相对误差 mare: float # 最大相对误差 max_diff: float # 最大绝对差异 mean_diff: float # 平均绝对差异 mismatch_count: int # 不匹配位置数 total_count: int # 总元素数 mismatch_ratio: float # 不匹配比例 small_value_error_count: int # 小值域 NPU 错误计数 small_value_cpu_error_count: int# 小值域 CPU 错误计数 small_value_total_count: int # 小值域位置总数 cancel_error_count: int # 相消位置 NPU 错误计数 cancel_cpu_error_count: int # 相消位置 CPU 错误计数 cancel_total_count: int # 相消位置总数 error_msg: Optional[str] # 错误信息附录 BIEEE 754 精度位数与阈值关系阈值基于 dtype 的精度位数设计dtype尾数位数相对精度cancel_boundary设计依据FP3223$10^{-7}$$2^{-8} \approx 0.004$7位有效数字$10^4$操作数相消得$10^{-3}$FP1610$10^{-3}$$2^{-5} \approx 0.031$3位有效数字$10^2$操作数相消得$10^{-2}$BF167$10^{-2}$$2^{-3} \approx 0.125$2位有效数字$10^1$操作数相消得$10^{-1}$相消示例FP32: $10^4 - 10^4 10^{-3}$但精度只够 7 位结果可能丢失设置 cancel_boundary $2^{-8} \approx 0.004$覆盖 $10^{-3}$ 范围【免费下载链接】cann-bench评测AI在处理CANN领域代码任务的能力涵盖算子生成、算子优化等领域支撑模型选型、训练效果评估统一量化评估标准识别Agent能力短板构建CANN领域评测平台推动AI能力在CANN领域的持续演进。项目地址: https://gitcode.com/cann/cann-bench创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考