You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
FIRE rank-1 (contiguity): _flat_1d_view did `array.reshape((array.size,))` -- reshape preserves the
non-contiguity of the prepared FP8 inputs (q_fp8/kv_fp8 from per-token/tensor scaling) -> tvm-ffi
DLPack rejects (Tensor is not contiguous), re-raised by the force_path_c guard. Fix:
`mx.contiguous(array.reshape((array.size,)))` (no-op when contiguous, dtype-preserving). One helper,
every fwd/bwd dispatch routes through it.
FIRE rank-4 (NaN dkv): the no-owner-output bwd route allocated dkv via tvm-ffi out_idx
(uninitialized NaN-poison) while the kernel T.atomic_add ACCUMULATES into dkv -> 128/128 NaN. An
in-kernel T.clear is unsafe (no cross-block global barrier -> clearing block races other blocks'
scatters), so allocate dq/dkv as mx.zeros on the graph branch and route both cases through the
single owner-output out=(dq,dkv) dispatch -> self-clearing regardless of allocator state.
Metal: sparse_mla_fp8-prepared-small parity max_abs 1.22e-4 PASS; no-owner dkv finite 0/128 NaN
(was 128/128); test_..._clears_atomic_dkv FAIL->PASS; test_tilelang_sparse_mla_fp8.py 55/1 -> 56/0.
No fallback (force_path_c fail-loud raises preserved).
0 commit comments