-
Notifications
You must be signed in to change notification settings - Fork 74
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Expose search function with pre-filter for ANN #302
Merged
rapids-bot
merged 54 commits into
rapidsai:branch-24.10
from
lowener:24.10-search-filter
Oct 2, 2024
Merged
Changes from 5 commits
Commits
Show all changes
54 commits
Select commit
Hold shift + click to select a range
0dbe5b2
[WIP] CAGRA - separable compilation for distance computation
achirkin 93b0439
Merge branch 'branch-24.10' into enh-cagra-separable-compilation
achirkin ba52b13
Fix style
achirkin 434e50a
Add missing multi-kernel implementation
achirkin 6352550
Move common code out of virtual functions scope (aiming for more inli…
achirkin d161f79
Make small descriptor functions into fields
achirkin 35c3813
Minor updates to improve reg count
achirkin 4b5dcd3
Refactor distance_core -> compute_distance, and update the instance list
achirkin e5878db
Merge remote-tracking branch 'rapidsai/branch-24.10' into enh-cagra-s…
achirkin 385a8c4
Make the compute_distance instances controlled from a single place
achirkin 3f77cda
Refactor usage of init_kernel to make sure it instantiated in the sam…
achirkin ddb0488
Reduce the register usage in distance functions
achirkin c244ead
Partially implemented manual dispatch
achirkin 7eb6a27
Merge branch 'branch-24.10' into enh-cagra-separable-compilation
achirkin ff2fdbe
Finish manual dispatch
achirkin 78a9809
Change instance generator to have blockdim/team_size ratio 16
achirkin 6082bf7
Trying various minor things to reduce register spilling
achirkin fc7d832
Move the metric parameter to the compute_distance template
achirkin 6763bf7
Expose search() with optional filter for ANN
lowener 118808e
Further reduce register pressure by moving code out of the non-inlina…
achirkin 4e254fc
Merge branch 'branch-24.10' into 24.10-search-filter
lowener abec125
Manually unroll device::team_sum
achirkin cf0101c
Remove the test of a compute_distance instance that is not compiled (…
achirkin b3e6d26
Hide previously not hidden kernels
achirkin f231828
Merge branch 'branch-24.10' into enh-cagra-separable-compilation
achirkin e4cb424
Fix CAGRA filter test
lowener dc75f7a
Reduce register usage by minimizing the part of descriptor struct pas…
achirkin 6630a99
Further reduce the size size of the dataset descriptor and add explic…
achirkin 790e79c
Cache dataset descriptors to recover small batch performance
achirkin 7599331
Reduce the register usage in compute_distance_standard further
achirkin 4d9241e
Reduce the generated code volume
achirkin 5fdcdd0
More explicit ldg cache behavior and a few smaller things
achirkin 5984596
Simplify vpq indexing arithmetics a bit
achirkin 337d990
Fix style
lowener 6eb34be
Merge branch 'branch-24.10' into 24.10-search-filter
lowener af0cc12
Bring back the fatbin.ld link option
achirkin 9023e68
relax the config for checking the raft_cutlass symbol exclusion (see …
achirkin 99d2bd3
Merge branch 'branch-24.10' into enh-cagra-separable-compilation
achirkin 75a2dac
Merge branch 'branch-24.10' into enh-cagra-separable-compilation
achirkin 6a1b898
Merge branch 'branch-24.10' into enh-cagra-separable-compilation
achirkin c1eed0e
Merge branch 'branch-24.10' into enh-cagra-separable-compilation
achirkin d4673cf
Merge branch 'branch-24.10' into enh-cagra-separable-compilation
achirkin a78797f
Merge branch 'branch-24.10' into 24.10-search-filter
lowener 0046a73
Merge branch 'branch-24.10' into enh-cagra-separable-compilation
achirkin 267902e
Merge branch 'branch-24.10' into enh-cagra-separable-compilation
achirkin 4ae3fa5
Merge remote-tracking branch 'achirkin/enh-cagra-separable-compilatio…
lowener b145d6d
Add base_filter to ANN API
lowener d357b99
Merge branch 'branch-24.10' into 24.10-search-filter
lowener 66f633c
Fix details, finalize merge
lowener 9e3a4ca
Fix documentation and parameter names
lowener e6e9f3b
Use references in public API of pre-filtering
lowener 9bdd8f6
Merge branch 'branch-24.10' into 24.10-search-filter
lowener 9386a9e
Unify none_ivf_sample_filter with none_cagra_sample_filter
lowener e258866
Add Bruteforce Prefilter API
lowener File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains 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
This file contains 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
This file contains 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
This file contains 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
Oops, something went wrong.
Oops, something went wrong.
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We should be able to support both bitset and bitmap using inheritance (and without having to instantiate two explicit templates), right?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This could work on the host API side if we do dynamic casts on the host side down the line (before passing it to device) and do not add any virtual methods to the filter struct (so that the objects we pass to device don't have virtual tables).
(otherwise it gets very complicated and potentially slow)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, inheritance doesn't work as well on device side so the filter can't dynamically choose the right virtual function. Doing a dynamic cast on the host side can work so I will try that approach