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 是所传文件中的行号。 将数据流拆分为块时,需要自行记录偏移量。