Files
hakmem/docs/analysis/PHASE63_FAST_PROFILE_FIXED_BUILD_INSTRUCTIONS.md

97 lines
3.4 KiB
Markdown
Raw Normal View History

# Phase 63: FAST Profile-Fixed Buildcompile-time 定数化で +510% を狙う)
背景:
- Phase 60 / 62A が示した通り、alloc/free hot path は LTO で既にかなり最適化されており、**micro-opt は layout tax で負けやすい**。
- +510% を狙うには「同じ層を保ったまま、**実行時 gate を compile-time 定数に落として DCE**」が最も現実的。
- これは Box Theory に反しない:**“FAST専用の build profile 箱”**として分離し、Standard/OBSERVE は維持する。
目的:
- FAST build でのみ、主要ノブを compile-time 定数化して分岐・lazy-init を消し、**+510%** を狙う。
- 学習層は存在を保持しつつ **FAST では FROZEN常に false**に落とすStandard/OBSERVE は従来どおり)。
成功基準:
- FAST build の Mixed 10-run mean で **+2.0% 以上 = GO**
- build 変更は layout も動くため閾値を上げる(過去の -2% precedent を踏まえる)。
- ±2.0% = NEUTRALfreeze
- -2.0% 以下 = NO-GOrevert
計測の正:
- `BENCH_BIN=./bench_random_mixed_hakmem_minimal scripts/run_mixed_10_cleanenv.sh`
- profile は `MIXED_TINYV3_C7_SAFE`Speed-firstを正にする
---
## Step 1: Build flagSSOT
`core/hakmem_build_flags.h` に追加:
- `HAKMEM_FAST_PROFILE_FIXED=0/1`default 0
FAST 専用ターゲットで `-DHAKMEM_FAST_PROFILE_FIXED=1` を渡す。
---
## Step 2: “固定すべき gate” のリスト化(まず 5〜8 個に限定)
候補(例):
- `tiny_front_v3_enabled()` → 1
- `tiny_front_v3_lut_enabled()` → 1
- `tiny_front_v3_c7_ultra_enabled()` → 1
- `tiny_metadata_cache_enabled()` → 0FAST正では不要なら
- `small_learner_v2_enabled()` / `learner_v7_enabled()` → 0
- `front_fastlane_enabled()` → 1既にプリセットで 1
- `fastlane_direct_enabled()` → 1既にプリセットで 1
ルール:
- “FASTプリセットで常にON/OFF” が確定しているものだけを固定化する。
- それ以外は runtime gate を維持(符号反転を避ける)。
---
## Step 3: 各 gate を build flag で定数化
方針:
- `#if HAKMEM_FAST_PROFILE_FIXED` のときだけ `return true/false;`
- それ以外は既存実装ENV snapshot / lazy initを維持
注意:
- 新しい関数分割は増やさないlayout tax 回避)。
- `__builtin_expect` は “ENVで変わる条件” には付けないPhase 19 の教訓)。
---
## Step 4: FAST v4 ターゲット追加(別バイナリ)
`Makefile`:
- `bench_random_mixed_hakmem_fast_fixed` などの新ターゲットを追加
- `bench_random_mixed_hakmem_minimal` をベースに、追加 CFLAGS で `HAKMEM_FAST_PROFILE_FIXED=1`
例:
- `make bench_random_mixed_hakmem_fast_fixed`
- `BENCH_BIN=./bench_random_mixed_hakmem_fast_fixed scripts/run_mixed_10_cleanenv.sh`
---
## Step 5: A/B10-run
Abaseline:
- `bench_random_mixed_hakmem_minimal`
Btreatment:
- `bench_random_mixed_hakmem_fast_fixed`
判定:
- GO: +2.0% 以上
- NEUTRAL: ±2.0%
- NO-GO: -2.0% 以下
必須で併記:
- mean / median / CV
- `perf stat -e cycles,instructions,branches,branch-misses,iTLB-load-misses,dTLB-load-misses,cache-misses`200M iters
---
## Rollback
- `HAKMEM_FAST_PROFILE_FIXED=0`(既定)
- FAST v4 ターゲットは research として残してよいが、Standard/OBSERVE への影響を出さない。