Files
hakmem/docs/analysis/SSOT_BUILD_MODES.md
2025-12-19 03:45:01 +09:00

2.8 KiB
Raw Blame History

SSOT Build Modes: Standard / FAST / OBSERVE の役割定義

目的

ベンチマーク測定において、ビルドモード測定モードを分離し、 各フェーズで何を測定するかを明確化する。


3つのモード

1. Standard Build (-DNDEBUG)

  • 役割: 本番相当、最適化最大
  • 使用: Phase 89+ 本格 SSOTA/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(要作成)
  • 出力: Throughputceiling 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