testfloat_expr_cli 教程

本教程介绍如何用二进制运行器执行 Berkeley TestFloat 向量文件。该运行器通过 floating-conformance --backend testfloat 调用;下文以 testfloat 简称这条命令。

快速入门

用 TestFloat 的 testfloat_gen(由 just conformance fetch binary 安装)生成向量并运行:

testfloat_gen -level 1 -rnear_even -tininessafter f64_mul > f64_mul.tv
testfloat --function f64_mul --rounding rnear_even --tininess after f64_mul.tv
TestFloat execution summary
function: f64_mul
rounding: rnear_even
tininess: after
cases: …
selected cases: …
passed cases: …
failed cases: 0

日常任务

与生成器选项保持一致

传入与生成器相同的函数、舍入模式和微小性(tininess)判定方式;若向量是用 -exact 生成的,还要加上 --exact:

testfloat_gen -rminMag -exact f32_roundToInt > r.tv
testfloat --function f32_roundToInt --rounding rminMag --exact r.tv

对大文件分片

testfloat --function f128_mulAdd --shard-count 8 --shard-index 3 --json big.tv

分片 i 运行索引对分片数取模等于 i 的向量。

供脚本使用的 JSON

--json 打印 function、rounding、tininess、exact、totalCases、selectedCases、passedCases、failedCases 和 failedIds(FUNCTION:LINE)。

深入了解

  • just conformance run binary --level 1 --tininess after --tininess before 规划完整矩阵,将 testfloat_gen 的输出分块流式写入临时文件,对每一块运行此运行器,并把基于行号的 id 重新映射为全局向量编号。
  • testfloat_expr 教程 解释了通过规则。

常见陷阱

  • 只能有一个文件。 第二个路径会报错。
  • 舍入模式默认为 rnear_even。 务必传入生成器所用的模式。
  • id 是所传文件中的行号。 将数据流拆分为块时,需要自行记录偏移量。

后续步骤