Follow-up from #3459.
The merged half-precision MXFP8 rowwise path still reduces BF16/FP16 pairs through ptx::abs_max_2x before converting the block maximum to E8M0. A mixed finite + NaN pair can therefore lose the NaN during the reduction and produce a finite scale instead of the exceptional E8M0 value 255.
The same issue affects the bidimensional path because thread_amax is already derived from that reduction before the row/column block maxima are combined.
Current merged code still contains:
- ptx::abs_max_2x(thread_amax_2x, ...) in the half-precision rowwise reduction;
- no focused mixed finite+NaN regression for rowwise or bidimensional MXFP8 scale generation.
Suggested fix:
- make the half-precision reduction explicitly NaN-preserving before scale generation;
- add mixed finite+NaN regressions for both rowwise and bidimensional scaling and compare the produced scale/payload behavior with the established MXFP8 path.
This was the remaining review blocker on #3459 when it merged.
Follow-up from #3459.
The merged half-precision MXFP8 rowwise path still reduces BF16/FP16 pairs through ptx::abs_max_2x before converting the block maximum to E8M0. A mixed finite + NaN pair can therefore lose the NaN during the reduction and produce a finite scale instead of the exceptional E8M0 value 255.
The same issue affects the bidimensional path because thread_amax is already derived from that reduction before the row/column block maxima are combined.
Current merged code still contains:
Suggested fix:
This was the remaining review blocker on #3459 when it merged.