Skip to content

[P9-2] マトリクス実行スクリプト (run_matrix) と実行定義 YAML を追加する #95

Description

@thawk105

親イシュー: #28 / 旧 #38 を分割したうちの 1 つ(P9 系の 3 分割のうち 2/3)。
依存: #94(構造化 JSON 出力)が完了していると綺麗に実装できる。未完でも
テキスト出力のパースで暫定実装は可能なため、厳密なブロッカーではない。

現状(2026-05-15)

  • マトリクス実行用のスクリプトは存在しない。トップレベルに scripts/
    script/ ディレクトリもなく、run_matrix.py 相当のものは皆無
    find でヒットする Python は third_party/ 配下のみ)。
  • 各プロトコル配下に旧来の bash スクリプト群 cc/<protocol>/script/*.sh
    (例: cc/silo/script/ycsb-xth.sh)はあるが、以下の理由で現行ビルドと乖離:
    • make clean; make 前提(現行は CMake ビルド)
    • ホスト名(dbs11 / chris41)ハードコード
    • grep / awk / bc でテキスト出力をパースする旧式
    • バイナリパスが旧構造(../silo.exe)。現行は build/cc/<protocol>/<workload>_<protocol>.exe
  • cmake/ProtocolHelpers.cmakeccbench_write_protocol_matrix()
    cmake 実行時に build/PROTOCOL_MATRIX.md(プロトコル×ワークロード対応表)を
    既に自動生成している。これは「ビルド対象の一覧」であって実行オーケストレーション
    ではないが、run_matrix が「どの <workload>_<protocol>.exe が存在するか」を知る
    入力として再利用できる。
  • 対象プロトコルは P7 で cc/occ/(ビルド不能で放置されていた)が撤去され、
    cicada / d2pl / ermia / mocc / mvto / oze / si / silo / ss2pl / tictoc
    10 個。run_matrix のマトリクス定義もこの 10 個を前提にする。

やること

  • scripts/run_matrix.py を作成する
  • マトリクス定義 YAML のスキーマを決め、サンプル定義をリポジトリに置く
  • バイナリ存在チェックに build/PROTOCOL_MATRIX.md を利用するか、
    build/cc/ のグロブで代替するかを決める
  • docs/ に run_matrix の使い方を追記する(_ja / _en セットで)

完了条件

  • scripts/run_matrix.py <matrix.yaml> がマトリクス YAML を読み込み、
    定義された全 (protocol, workload, params) の組をビルド済みバイナリで一括実行できる
  • 各 run の結果が出力ディレクトリに構造化されて保存される
  • マトリクス YAML のサンプルと使い方が docs 化されている

備考

  • 実験の再現性向上・論文投稿時の結果引用容易化に寄与する。
  • cc/<protocol>/script/*.sh を置き換える/整理するかは本イシューのスコープ外
    (必要なら別途切り出す)。

Metadata

Metadata

Assignees

No one assigned

    Labels

    iceboxFrozen for later. Thaw when the time is right.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions