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 は渡したファイルの行番号です。 ストリームをチャンクに分割する場合は、オフセットを自分で管理してください。