|
GPU-Accelerated Cuckoo Filter
|
Bucket structure that holds the fingerprint and tags for a given bucket. More...
Public Types | |
| using | WordType = typename Config::WordType |
Public Member Functions | |
| __host__ __device__ __forceinline__ TagType | extractTag (WordType packed, size_t tagIdx) const |
| __host__ __device__ __forceinline__ WordType | replaceTag (WordType packed, size_t tagIdx, TagType newTag) const |
| template<size_t N> | |
| __device__ __forceinline__ void | load128Bit (size_t startIdx, WordType(&out)[N]) const |
| Loads words using 128-bit vectorized loads into a fixed-size array. | |
| __device__ bool | contains (TagType tag) const |
| Checks if a tag is present in the bucket using vectorized loads. | |
Static Public Member Functions | |
| template<size_t N> | |
| __device__ static __forceinline__ bool | checkWords (const WordType(&loaded)[N], WordType replicatedTag) |
| Checks an array of loaded words for a matching tag using SWAR. | |
Public Attributes | |
| cuda::std::atomic< WordType > | packedTags [wordCount] |
Static Public Attributes | |
| static constexpr size_t | tagsPerWord = sizeof(WordType) / sizeof(TagType) |
| static constexpr size_t | wordCount = bucketSize / tagsPerWord |
Bucket structure that holds the fingerprint and tags for a given bucket.
The bucket is divided into words, where each word contains one or more fingerprints depending on tag size.
This optimisation allows us to avoid having to perform atomic operations on every fingerprint in the bucket, the extra computational overhead is negligible.
For efficiency reasons, the number of fingerprints per word is enforced to be a power of 2, same goes for the total number of fingerprints in the bucket.
Definition at line 228 of file CuckooFilter.cuh.
| using cuckoogpu::Filter< Config >::Bucket::WordType = typename Config::WordType |
Definition at line 231 of file CuckooFilter.cuh.
|
inlinestatic |
Checks an array of loaded words for a matching tag using SWAR.
Definition at line 260 of file CuckooFilter.cuh.
|
inline |
Checks if a tag is present in the bucket using vectorized loads.
Automatically selects the best load width based on bucket size and architecture.
Definition at line 294 of file CuckooFilter.cuh.
|
inline |
Definition at line 244 of file CuckooFilter.cuh.
|
inline |
Loads words using 128-bit vectorized loads into a fixed-size array.
Definition at line 274 of file CuckooFilter.cuh.
|
inline |
Definition at line 249 of file CuckooFilter.cuh.
| cuda::std::atomic<WordType> cuckoogpu::Filter< Config >::Bucket::packedTags[wordCount] |
Definition at line 241 of file CuckooFilter.cuh.
|
staticconstexpr |
Definition at line 233 of file CuckooFilter.cuh.
|
staticconstexpr |
Definition at line 238 of file CuckooFilter.cuh.