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.