ctx.softmax_scale, ctx.cmp_ratio, ctx.ori_mask_mode, ctx.cmp_mask_mode,
ctx.ori_win_left, ctx.ori_win_right, ctx.layout_q, ctx.layout_kv,
)
d_query = grads[0]
d_ori_kv = grads[1] if state.ori_kv is not None else None
d_cmp_kv = grads[2] if state.cmp_kv is not None else None
d_sinks = grads[3] if state.sinks is not None else None
# grads[4], grads[5] = ori/cmp_softmax_l1_norm — discarded here.
# 21 positional forward args (ctx excluded):
# query, ori_kv, cmp_kv, cu_seq_lens_q, cu_seq_lens_ori_kv, cu_seq_lens_cmp_kv,
# ori_sparse_indices, cmp_sparse_indices, sinks,