Skip to content

Active-set block skipping for label propagation rounds 2+#136

Open
ekg wants to merge 1 commit intorust-2from
label-prop-block-skip
Open

Active-set block skipping for label propagation rounds 2+#136
ekg wants to merge 1 commit intorust-2from
label-prop-block-skip

Conversation

@ekg
Copy link
Copy Markdown
Collaborator

@ekg ekg commented Mar 26, 2026

Summary

After each round's pointer jumping, track which positions changed labels in an AtomicBitVec. In subsequent rounds, skip blocks where no source or target endpoint was in the changed set.

This is correct because unchanged positions cannot benefit from re-hooking — the label propagation only creates new connections when labels differ.

Results (466-seq MHC/C4, seqwish engine)

  • Round 1: 38s, 0 skipped (all blocks processed)
  • Round 2: 7.5s, 1.5M skipped
  • Round 3: 1s, 56M skipped (of 58M)
  • Rounds 4+: ~1s each, 58M skipped

Total phase 2: ~50s vs ~62s without skip. Seqwish pipeline: 2m17s (vs 2m26s baseline on this branch).

Output identical: 2727 nodes, 52047bp, 3686 links.

Also adds pointer_jump_tracking() and hook_range_tracking() to LabelProp.

After each round's pointer jumping, track which positions changed labels
in an AtomicBitVec. In subsequent rounds, skip blocks where no source
or target endpoint position was in the changed set. This is correct
because unchanged positions cannot benefit from re-hooking.

Round 3+ skip 56-58M of 58M blocks (~1s per round vs ~8s without skip).
Round 2 skips 1.5M blocks (most positions change after round 1).
Total phase 2: ~50s vs ~62s. Output identical (2727 nodes, 52047bp).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant