pub fn build_cpu_reference(
num_procs: u32,
blocks_per_proc: u32,
facts_per_proc: u32,
intra_edges: &[(u32, u32, u32)],
inter_edges: &[(u32, u32, u32, u32)],
flow_gen: &[(u32, u32, u32)],
flow_kill: &[(u32, u32, u32)],
) -> (Vec<u32>, Vec<u32>)Expand description
Returns (row_ptr, col_idx) in the dense index space
idx(p, b, f) = p * blocks * facts + b * facts + f. This is
the space every traversal kernel operates in - packing via
crate::graph::exploded::encode_node is only used at the I/O boundary when the
caller needs to report results as (proc, block, fact)
triples. The two spaces coincide only in the degenerate case
blocks_per_proc == 1 << BLOCK_BITS and facts_per_proc == 1 << FACT_BITS;
the dense layout works for any dimensions that fit in
32-bit encoding.