Each task owns a disjoint BLOCK_SIZE-row slice of the result; the inner blocked kernel is unchanged. Needed for dg-gnn HetGAT training throughput (node-level [M,64]x[64,64] matmuls dominated single-threaded step time). Co-Authored-By: Claude Fable 5 <[email protected]>