Skip to content

ベンチマーク ​

Celox は、各バックエンドおよび Verilator との間でコンパイル時間とシミュレーション 速度を継続的に計測しています。ダッシュボードは傾向の確認に使うもので、すべての RTL 設計の性能を予測するものではありません。

ダッシュボード ​

完全なベンチマーク行列と履歴の生データは 外部ダッシュボードで確認できます。

ワークロード ​

グループ測定対象
コンパイル時間 (CodSpeed)フロントエンド、最適化、レイアウト、native/Cranelift コード生成の全工程
Counter順序状態の更新とクロックイベントのオーバーヘッド
標準ライブラリ組み合わせ回路、順序回路、構造化データパス
TypeScript テストベンチN-API 呼び出し、型付き信号アクセス、スケジューラ
Verilator 比較同等の生成シミュレータによる基準値
Heliodor Linux設計全体のコンパイル、ホスト側テストベンチを含む実行時間、tiered の起動時間・総時間

コンパイルと実行は分けて報告します。コンパイルが速くても生成コードが速いとは 限らず、マイクロベンチマークだけで設計全体の性能は判断できません。

結果の読み方 ​

通常の Benchmark workflow は Rust・Verilator・TypeScript を一つのジョブで順番に 実行するため、その run 内では同じ VM・CPU で比較できます。CPU とランナーの情報は bench-host 成果物に保存します。別 run は異なる CPU に割り当てられる場合があるため、 履歴の小さな差だけでコミットの効果を判断しないでください。 大規模な Heliodor も時間内に収まる構成は 同じホストで比較します。ARM の 4 hart は 2 組、8 hart はバックエンド別のジョブに分け、 同じグループ内で同じ CPU を使います。

  • 同じワークロード、バックエンド、リビジョン、ホスト環境を比較する。
  • 共有 CI ランナー上の小さな差は、再現するまでノイズとして扱う。
  • 実行速度は十分に長いワークロードで判断する。
  • 開発時の反復時間にはシミュレータ作成時間も含める。
  • 最適化設定は実際に使う設計で検証する。

Heliodor では固定入力の追加ワークロードを使います。測定方法は Heliodor Linux ベンチマークを参照してください。 ダッシュボードではネイティブバックエンドと同期版の Veryl-CC を比較し、Celox と Veryl-CC の tiered 実行では開始までの時間と完了までの総時間も表示します。 Cranelift 単独の起動時間は大幅に長く、この比較用グラフを読みにくくするため掲載しません。 Heliodor のグラフは、異なるランナー間の結果を直接比較しないよう CPU アーキテクチャ別に分けています。すべてのグラフの値軸は 0 から始まります。

ローカル実行 ​

bash
# CodSpeed によるコンパイル時間ベンチマーク
cargo install cargo-codspeed --locked --version 5.0.1
cargo codspeed build --locked -p celox --bench compilation
cargo codspeed run -p celox

# Rust ベンチマーク
cargo bench -p celox

# TypeScript / N-API ベンチマーク
pnpm bench

# Verilator 比較(Verilator と C++ ツールチェーンが必要)
bash scripts/run-verilator-bench.sh

# VCD 比較(Python 3 も必要。波形の一致を検証してから計測)
python3 scripts/compare-vcd-verilator.py

VCD の測定条件と結果には、 idle・sparse・dense の各負荷で、記録なし/ありを比較した結果をまとめています。

CodSpeed ワークフローは毎日 02:17 UTC(11:17 JST)にデフォルトブランチで 実行し、任意のブランチでの手動実行にも対応します。pull request、merge queue、 push では実行しません。決定的な CPU simulation の測定結果を CodSpeed に送信し、 リポジトリの CodSpeed 回帰しきい値に従って過去の測定と比較します。 master と develop では、実行失敗や性能解析の失敗時に CodSpeed is failing on <branch> Issue を作成・更新し、次の実行と解析が 成功すると閉じます。解析結果の欠落や未完了も失敗として報告します。 Issue には実行へのリンクと、性能低下の場合は比較結果とベンチマークの詳細を 含めます。ローカル実行ではベンチマーク suite が動作することだけを確認します。

ローカル計測は、同じマシン上で 2 つのリビジョンを比較する場合に最も有効です。 CI 履歴は、単発の小さな差より長期的な傾向の確認に向いています。