pub fn expand_blocks_to_groups(
spec: &GroupLayout,
reqs: &[BlockReadRequest],
) -> Vec<ReadRequest>Expand description
Expand each BlockReadRequest into the exact 2·nkv per-head ReadRequests
the un-coalesced path issues, in the SAME order the caller loops emit
(interleaved K(kh), V(kh) for kh in 0..nkv) with device destinations
at dst + kh·gs (K) and dst + (nkv+kh)·gs (V).
This is the SINGLE source of the per-head fan-out: the default read_blocks
/ write_block_from_host trait impls AND the unit tests consume it, so the
RDMA/Cascade backends (which inherit the default) can never drift from the
caller-side per-head layout, and byte-identity is pinned host-side.