Files
foxhunt/crates
jgrusewski 2e06d86e43 fix: replace aliased SAXPY with in-place scale kernel (fixes __restrict__ NaN bug)
The C51+MSE gradient blending passed the same pointer as both y (output)
and x (input) to dqn_saxpy_f32_kernel. That kernel has __restrict__ on
both parameters, promising the compiler they don't alias. When they DO
alias, NVCC's no-alias optimizations produce undefined behavior (NaN
from register corruption).

Added dqn_scale_f32_kernel (y[i] *= alpha) — single-pointer variant
with no __restrict__, no aliasing possible. The two self-aliased SAXPY
calls are replaced with scale+SAXPY pairs using distinct pointers.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-04 11:18:29 +02:00
..