Skip to main content

build_cpu_reference

Function build_cpu_reference 

Source
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.