# 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 ```bash 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(将来) ```bash HAKMEM_BENCH_FAST_MODE=1 HAKMEM_PROFILE=MIXED_TINYV3_C7_FAST_PGO (要定義) ``` ### OBSERVE ```bash # 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