親イシュー: #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.cmake の ccbench_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 <matrix.yaml> がマトリクス YAML を読み込み、
定義された全 (protocol, workload, params) の組をビルド済みバイナリで一括実行できる
- 各 run の結果が出力ディレクトリに構造化されて保存される
- マトリクス YAML のサンプルと使い方が docs 化されている
備考
- 実験の再現性向上・論文投稿時の結果引用容易化に寄与する。
- 旧
cc/<protocol>/script/*.sh を置き換える/整理するかは本イシューのスコープ外
(必要なら別途切り出す)。
親イシュー: #28 / 旧 #38 を分割したうちの 1 つ(P9 系の 3 分割のうち 2/3)。
依存: #94(構造化 JSON 出力)が完了していると綺麗に実装できる。未完でも
テキスト出力のパースで暫定実装は可能なため、厳密なブロッカーではない。
現状(2026-05-15)
scripts/もscript/ディレクトリもなく、run_matrix.py相当のものは皆無(
findでヒットする Python はthird_party/配下のみ)。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>.execmake/ProtocolHelpers.cmakeのccbench_write_protocol_matrix()がcmake実行時にbuild/PROTOCOL_MATRIX.md(プロトコル×ワークロード対応表)を既に自動生成している。これは「ビルド対象の一覧」であって実行オーケストレーション
ではないが、run_matrix が「どの
<workload>_<protocol>.exeが存在するか」を知る入力として再利用できる。
cc/occ/(ビルド不能で放置されていた)が撤去され、cicada / d2pl / ermia / mocc / mvto / oze / si / silo / ss2pl / tictocの10 個。run_matrix のマトリクス定義もこの 10 個を前提にする。
やること
scripts/run_matrix.pyを作成するYAML で宣言的に定義する
build/cc/<protocol>/<workload>_<protocol>.exeを順次実行し、結果を出力ディレクトリへ保存する
--output-format=json --output=<dir>/<run>.jsonを使う想定([P9-1] ベンチバイナリに構造化 (JSON) 出力を追加する #94 未完の間はテキスト出力の保存でも可)
build/PROTOCOL_MATRIX.mdを利用するか、build/cc/のグロブで代替するかを決めるdocs/に run_matrix の使い方を追記する(_ja/_enセットで)完了条件
scripts/run_matrix.py <matrix.yaml>がマトリクス YAML を読み込み、定義された全 (protocol, workload, params) の組をビルド済みバイナリで一括実行できる
備考
cc/<protocol>/script/*.shを置き換える/整理するかは本イシューのスコープ外(必要なら別途切り出す)。