AotPrep collections_hot matmul tuning and bench tweaks

This commit is contained in:
nyash-codex
2025-11-14 13:36:20 +09:00
parent 13f21334c9
commit f1fa182a4b
17 changed files with 760 additions and 219 deletions

View File

@ -54,7 +54,7 @@ Current effort: keep baking new hoist/CSE patterns so `arraymap`, `matmul`, and
| `branch` | 75.00% | 目標達成(≤125%)。 |
| `arraymap` | 150.00% | Array/Map hot-path + binop CSE をさらに磨いて 125% を目指す |
| `chip8` | 25.00% | 十分速いFAST_INT/hoist が効いている |
| `kilo` | 0.21% (N=200,000) | EXE モード既定 N 200k に自動調整C 参照の方が重い構成のため比率は極小 |
| `kilo` | 0.21% (N=200,000) | LLVM backend では EXE 経路を強制し既定 N 200k に自動調整C 参照の方が重い構成のため比率は極小 |
| `sieve` | 200.00% | `NYASH_VERIFY_RET_PURITY=1` ON での測定auto キー判定がまだ保守的 |
| `matmul` | 300.00% | まだ 3 重ループの Array/Map get/set が支配自動 CSE auto map key を詰める予定 |
| `linidx` | 100.00% | Linear index case is at parity; hoist + CSE already helps share SSA. |
@ -63,7 +63,7 @@ Current effort: keep baking new hoist/CSE patterns so `arraymap`, `matmul`, and
### Notes
- You can rerun any case with the command above; `NYASH_LLVM_SKIP_BUILD=1` keeps repeated ny-llvmc builds cheap once the binaries are ready.
- `kilo` C 参照側が重く既定 N=5,000,000 だと長時間化するためEXE モードかつ N 未指定では既定 N 200,000 に自動調整するようにしました`tools/perf/microbench.sh`)。必要なら `--n <value>` で上書きしてください
- `kilo` C 参照側が重く既定 N=5,000,000 だと長時間化するためLLVM backend では常に EXE 経路既定 N=200,000 で測定するようにしました`tools/perf/microbench.sh` `--backend llvm` 時に自動で `--exe` + `N=200000` 相当へ調整します)。必要なら `--n <value>` で上書きしてください
- `lang/src/llvm_ir/boxes/aot_prep/README.md` StrlenFold / LoopHoist / ConstDedup / CollectionsHot のパス一覧をまとめNYASH_AOT_MAP_KEY_MODE={h|i64|hh|auto} の切り替えも説明しています今後は hoist/collections の強化で arraymap/matmul/maplin/sieve 125% 以内に引き下げる施策を続けます
- 代表測定では `NYASH_VERIFY_RET_PURITY=1` を有効化しReturn 直前の副作用を Fail-Fast で検出しながら回していますごく軽微なハンドルboxcallの変化が 23× に跳ねることがある点をご留意ください)。