-
Notifications
You must be signed in to change notification settings - Fork 88
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
cuco::bloom_filter #101
cuco::bloom_filter #101
Conversation
Can one of the admins verify this patch? |
1261426
to
2e68593
Compare
ok to test |
Meh, forgot that I don't have the permissions to fire up the CI. This PR is ready to test and ready for review. |
b55e7da
to
2ca505f
Compare
add to whitelist |
okay to test |
ok to test |
add to whitelist |
rerun tests |
1 similar comment
rerun tests |
* in the filter. | ||
* | ||
* @tparam block_size The size of the thread block | ||
* @tparam InputIt Device accessible input iterator whose `value_type` is |
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.
As I understand input iterators don't enforce equality_comparable
property (unlike legacy input iterators or random access iterators). If I'm not mistaken, we might need to rewrite (first + tid) < last
as auto size = distance(first, last); tid < size
or require legacy input iterators in the documentation. I'm not particularly strong in the field of iterator concepts, so correct me if I'm wrong 😅
@sleeepyjack can you resolve conflicts? |
on it |
60dcc65
to
5578405
Compare
I'm dropping the Here are some benchmark results on A100 80GB L2-resident vs. non-resident filter:
|
@sleeepyjack we would love to see this work pushed forward so we can utilize this. Is there anything that we can do to help here? |
@kkraus14 I can move this up on my task list and hammer out a new draft PR tomorrow so we can get started on discussing the last few design questions. I'll keep you posted. |
Superseeded by #573 |
Superseeds #101 Implementation of a GPU "Blocked Bloom Filter". This PR is an updated/optimized version of #101 and features the following improvements: - Incorporate the new library design - Improve performance by computing the key's bit pattern based on a single hash value instead of using a double hashing derivative --------- Co-authored-by: Yunsong Wang <[email protected]>
Adds a new class called
cuco::bloom_filter
for approximate set membership queries.It is used to test whether an element is a member of a set. False positive matches are possible, but false negatives are not – in other words, a query returns either "possibly in set" or "definitely not in set". Elements can be added to the set, but not removed; the more items added, the larger the probability of false positives.
The type of implementation used here is known as a "partitioned" or "pattern-blocked" bloom filter.
This PR comes with examples, benchmarks, as well as unit tests.