2.8 KiB
2.8 KiB
SSOT Build Modes: Standard / FAST / OBSERVE の役割定義
目的
ベンチマーク測定において、ビルドモードと測定モードを分離し、 各フェーズで何を測定するかを明確化する。
3つのモード
1. Standard Build (-DNDEBUG)
- 役割: 本番相当、最適化最大
- 使用: Phase 89+ 本格 SSOT(A/B テスト、GO/NO-GO 判定)
- スクリプト:
scripts/run_mixed_10_cleanenv.sh - 出力: Throughput(最終スコア)
- 特性: LTO, -O3, frame-pointer 削除、統計安定性:CV < 2%
2. FAST Build (HAKMEM_BENCH_FAST_MODE=1)
- 役割: 最大パフォーマンス引き出し(PGO、キャッシュ最適化)
- 使用: 性能天井確認、設計上限検証
- スクリプト:
scripts/run_mixed_fast_pgo_ssot.sh(要作成) - 出力: Throughput(ceiling reference)
- 特性: Profile-Guided Optimization, aggressive inlining
3. OBSERVE Build
- 役割: 経路確認、フローダンプ
- 使用: ENV ドリフト検出、設定妥当性確認
- スクリプト:
scripts/run_mixed_observe_ssot.sh - 出力: 詳細統計(inline slots 活動、unified cache hit/miss、legacy fallback 呼び出し)
- 特性: メトリクス収集、診断情報
SSOT 測定手順(標準パターン)
流れ
1. OBSERVE (diagnosis)
→ 経路が正しいか確認(「LEGACY used AND C6 INLINE SLOTS ACTIVE」の判定)
→ ENV 設定ドリフトを検出
2. Standard SSOT (control + treatment)
→ IFL=0 (control) 10-run
→ IFL=1 (treatment) 10-run
→ 統計的に有意な差があるか判定
3. if NO-GO → FAST build で ceiling 確認
→ design は correct か、implementation は correct か の切り分け
各モードの環境管理
Standard
HAKMEM_BENCH_MIN_SIZE=16 HAKMEM_BENCH_MAX_SIZE=1040
HAKMEM_BENCH_C5_ONLY=0 HAKMEM_BENCH_C6_ONLY=0 HAKMEM_BENCH_C7_ONLY=0
HAKMEM_PROFILE=MIXED_TINYV3_C7_SAFE
FAST(将来)
HAKMEM_BENCH_FAST_MODE=1
HAKMEM_PROFILE=MIXED_TINYV3_C7_FAST_PGO (要定義)
OBSERVE
# Standard + diagnostic metrics
HAKMEM_UNIFIED_CACHE_STATS_COMPILED=1
HAKMEM_INLINE_SLOTS_OVERFLOW_STATS=1
GO/NO-GO 判定基準
| 指標 | 基準 | 判定 |
|---|---|---|
| 改善度 | ≥ +1.0% | GO |
| CV(変動係数) | < 3% | 統計安定 |
| 回帰 | < -1.0% | NO-GO(重大) |
| 観測スコア | baseline × 1.018 以上 | strong GO |
参考:Phase 91 (C6 IFL) の例
OBSERVE 結果:
- 経路確認:✓ LEGACY used AND inline slots active
- スコア:51.47M ops/s
Standard SSOT 結果:
- Control (IFL=0):52.05M ops/s, CV 1.2%
- Treatment (IFL=1):52.25M ops/s, CV 1.5%
- 改善度:+0.38%
- 判定:NEUTRAL(目標未達)→ NO-GO