testfloat_expr_cli チュートリアル

このチュートリアルでは、2 進ランナーで 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

日常的なタスク

生成器のオプションに合わせる

生成器と同じ関数、丸め、極小性を渡し、ベクトルが -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 チュートリアル で説明しています。

よくある落とし穴

  • ファイルはちょうど 1 つ。 2 つ目のパスはエラーになります。
  • 丸めの既定は rnear_even です。 必ず生成器のモードを渡してください。
  • ID は渡したファイルの行番号です。 ストリームをチャンクに分割する場合は、オフセットを自分で管理してください。

次のステップ