49 lines
1.4 KiB
Markdown
49 lines
1.4 KiB
Markdown
# Traversal Policy Boundary Microbench
|
|
|
|
Purpose: separate the current traversal hot path into game/encoding overhead,
|
|
single-request policy boundary overhead, and batched forward lower bounds.
|
|
|
|
Run:
|
|
|
|
```bash
|
|
uv run python experiments/traversal_policy_boundary/bench_policy_boundary.py \
|
|
--traversals 32 \
|
|
--runs 5 \
|
|
--warmup 1 \
|
|
--corpus-size 512 \
|
|
--component-repeats 4 \
|
|
--forward-repeats 32 \
|
|
--device cpu
|
|
```
|
|
|
|
CUDA spot check:
|
|
|
|
```bash
|
|
uv run python experiments/traversal_policy_boundary/bench_policy_boundary.py \
|
|
--traversals 8 \
|
|
--runs 3 \
|
|
--warmup 1 \
|
|
--corpus-size 512 \
|
|
--component-repeats 2 \
|
|
--forward-repeats 32 \
|
|
--device cuda \
|
|
--output experiments/traversal_policy_boundary/results_cuda.json
|
|
```
|
|
|
|
2026-05-07 results, `legacy/deep-cfr/configs/default.yaml`, RTX 3090 host:
|
|
|
|
| Device | Component | Median us/call | p95 us/call |
|
|
| --- | --- | ---: | ---: |
|
|
| CPU | encode + legal | 3.10 | 3.81 |
|
|
| CPU | push + pop | 0.15 | 0.22 |
|
|
| CPU | policy boundary bs=1 | 111.50 | 125.46 |
|
|
| CPU | torch forward bs=64 | 12.84 | 13.14 |
|
|
| CUDA | encode + legal | 3.16 | 3.88 |
|
|
| CUDA | push + pop | 0.16 | 0.25 |
|
|
| CUDA | policy boundary bs=1 | 181.30 | 194.77 |
|
|
| CUDA | torch forward bs=64 | 2.55 | 2.75 |
|
|
|
|
Interpretation: the game mechanics and state encoding are not the dominant
|
|
cost. The current one-row policy boundary dominates, and CUDA only becomes
|
|
attractive once requests are actually batched.
|