dzmingli_vs_floating/bench_common チュートリアル

このページでは dzmingli_vs_floating の bench_common 実行ファイルを実行し、レコードを保存し、数値を読む前に実行が完全か確認します。

クイックスタート

リポジトリのルートで:

moon run --release src/dzmingli_vs_floating/bench_common --target native \
  | sed -n '/^{/p' > artifacts/dzmingli_vs_floating/common_digits.jsonl

このコマンドは native 向けのリリースビルドをコンパイルし、各データセットをオラクルで検証し、両実装を計測して artifacts/dzmingli_vs_floating/common_digits.html を書き出します。HTML ファイルはブラウザで開いてください。

日常的な作業

ホストを記録する

Mare Mark は与えられた事実だけを記録します。コマンドラインで設定してください:

MARE_CPU="Apple M4" MARE_OS="macOS 26.5" MARE_BUILD_MODE=release \
  moon run --release src/dzmingli_vs_floating/bench_common --target native

未設定の変数は unknown または unspecified として記録されます。

実行が完全か確認する

すべての Mare Mark の summary レコードは "complete":true を含み、すべての validation レコードは "status":"valid" でなければなりません(DzmingLi については、スケーリングの実行で 4,096 桁以降の失敗は想定どおりです):

grep -c '"type":"validation"' artifacts/dzmingli_vs_floating/common_digits.jsonl
grep '"type":"validation"' artifacts/dzmingli_vs_floating/common_digits.jsonl | grep -vc '"status":"valid"'

比較レコードを読む

"comparison" の各行は一つの演算とサイズに対応します。*_median_us フィールドは演算一回あたりのマイクロ秒の中央値、速度比のフィールドは GDA の中央値を DzmingLi の中央値で割ったもので、decision は 3 % のしきい値を適用します。

さらに進んで

出版用の図は、パッケージのチュートリアルのとおり tools/ の Python レイアウトで JSONL から描けます。サイズや演算を変えるには main.mbt を編集してください。ライブラリ関数は演算のリストと展開したサイズのリストを引数に取ります。

よくある落とし穴

  • --release と --target native で実行してください。デバッグビルドや他のターゲットでは比較可能な数値は得られず、他のターゲットではそもそも実行されません。
  • 異なるターゲットやホストのレコードを一つのレポートにまとめないでください。
  • 完全なレポートの後に 0 以外で終了するのは検証が失敗したという意味で、計測がクラッシュしたわけではありません。

次のステップ