Files
foxhunt/crates
jgrusewski 3d04c24eaf fix(cuda): GPU-counted unique_actions via bitmask OR-reduction in metrics kernel
unique_actions was hardcoded to 5 in the GPU backtest path, making the
diversity penalty (0.8 max weight) always return 0.0 — another dead
objective component. CPU backtest path correctly computed it via HashSet.

Added 5-bit bitmask OR-reduction: each thread sets bit(action_id) during
the existing per-step loop, then a single OR-reduction across the block
produces the union. __popc() gives unique count in one PTX instruction.

Memory efficiency: reuses s_sorted shared memory (sequential staging —
OR-reduction completes before bitonic sort overwrites it). No extra
shared memory arrays needed. Output expanded from 13→14 floats/window.

Combined with the previous commit, this restores gradient signal for
100% of the multi-objective function: composite (60%), HFT activity
(25%), stability (15%), and diversity penalty (soft signal).

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