Skip to main content

ifds_gpu_step

Function ifds_gpu_step 

Source
pub fn ifds_gpu_step(
    shape: IfdsShape,
    frontier_in: &str,
    frontier_out: &str,
) -> Result<Program, String>
Expand description

Emit one GPU BFS step over the exploded supergraph.

The returned Program reads the (pg_nodes, pg_edge_offsets, pg_edge_targets, pg_edge_kind_mask, pg_node_tags) ProgramGraph buffers (preferably populated by dispatching [build_ifds_csr_program]) plus the named frontier_in bitset, and writes the expanded frontier to frontier_out.

Convergence is a host loop: repeatedly dispatch this Program alternating the two frontier buffers; when a dispatch produces no new bits, fixpoint is reached.

allow_mask = u32::MAX accepts every edge kind - the exploded supergraph does not differentiate edge kinds, so that is the right choice.