Files
foxhunt/crates/ml/examples
jgrusewski a22e6420b6 perf(cuda): Wave 4 — CUDA Graph capture for evaluate_dqn_graphed()
Capture the full DQN backtest step loop (gather → forward → DtoD →
env_step × max_len) as a replayable CUDA Graph:

- evaluate_dqn_graphed(): captures on first call via
  CudaStream::begin_capture/end_capture, replays cached graph on
  subsequent calls. Falls back to evaluate_dqn() on any failure.
- invalidate_dqn_graph(): discards cached graph when weights change.
- SendSyncGraph: newtype wrapper for CudaGraph (single-threaded use).
- Full unrolled capture: each step's step_i32 argument is baked in at
  capture time, avoiding GPU-resident step counter complexity.

Eliminates ~5-10μs per kernel launch × 4 kernels × max_len steps
of CUDA driver overhead per evaluation.

evaluate_baseline.rs: added --cuda-graphs CLI flag to opt in.

14 backtest evaluator tests pass, 0 clippy errors.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 22:45:13 +01:00
..