The IQN backward kernel writes f32 via atomicAdd into d_h_s2_buf
(allocated as CudaSlice<f32>). But apply_iqn_trunk_gradient called
bf16_to_f32_kernel on this buffer, reinterpreting f32 bits as bf16.
This produced garbage/NaN that poisoned the trunk gradient on H100.
Replace with direct f32 DtoD copy — no cast needed.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>