Repository navigation
Optimise bitpacked filtering for valid runs and buffer filtering - #10281
Open
robert3005 wants to merge 2 commits into
Open
robert3005 wants to merge 2 commits into
robert3005 wants to merge 2 commits into
Conversation
…rializing indices BitPacked's filter kernel only handled very sparse masks (below 3-9% density), and for those it materialized the mask's `usize` indices first; any denser mask unpacked the whole array before filtering. The kernel now walks the selection one 1024-value FastLanes chunk at a time: from the mask's cached slices when it has them (as FixedSizeList element masks do) and otherwise straight from the bitmap. Empty chunks are skipped, fully selected chunks unpack directly into the output, chunks with few selected values use `unchecked_unpack_indices` on a small stack array, and the rest unpack into an L1-resident scratch chunk that is compacted with run copies, a branch-free loop or a trailing-zeros walk per mask word. Dense masks with scattered values still decline the kernel, so the vectorized canonical filter handles them. Adds a `bitpacking_filter` benchmark covering primitive i32 and FSL<i32> elements bit-packed to 16 bits. Each iteration builds a fresh mask so cached indices are not reused across iterations. Signed-off-by: Claude <noreply@anthropic.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GEPn56FBLoa8Yq6jexAwWL
Signed-off-by: Claude <noreply@anthropic.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GEPn56FBLoa8Yq6jexAwWL
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Previous code assumed indices but these are almost never cached. Instead we handle the slices (which can be produced by lists) and bit buffers which are the default