Counting Quotient Filter
A general-purpose counting filter
A general-purpose counting filter that is small, fast, and cache-friendly. It supports counting, deletions, resizing, merging, and concurrent access, and scales out of RAM to SSD.
Projects
15 projects in 4 areas, released with code, benchmarks, and the papers behind them.
Compact approximate-membership data structures: counting, vectorized, adaptive, and range filters with provable guarantees.
A general-purpose counting filter
A general-purpose counting filter that is small, fast, and cache-friendly. It supports counting, deletions, resizing, merging, and concurrent access, and scales out of RAM to SSD.
Overcoming the time/space trade-off in filter design
Uses power-of-two-choices hashing and SIMD to deliver consistently high throughput across load factors, overcoming the classic time/space trade-off.
SIMD-accelerated filter
An AVX-512 filter benchmarked against the VQF, CQF, and prefix filter, and integrated into WiredTiger to screen negative queries.
A quotient filter that adapts to false positives
A quotient filter that adapts to false positives by extending fingerprints, so the same false positive never repeats, while keeping cache efficiency and mergeability.
Online adaptive quotient filters
Uses ski-rental analysis to decide when adapting to a false positive is worth the disk I/O, which makes it 2-competitive on total I/O.
Adaptive, expandable range filter
The first range filter that guarantees a bounded false-positive rate for any query distribution, including adversarial ones. It never forgets a false positive.
Fast, concurrent hash tables that stay stable and efficient at high load factors.
High-performance hash tables through stability and low associativity
A fast, concurrent, resizable hash table that achieves both stability and low associativity. It runs on DRAM and persistent memory.
Linear probing with consistent performance at high load
Redistributes tombstones within small windows instead of halting for global rebuilds, so linear probing stays fast even at 95% load.
Building blocks for GPU applications: memory management, hash tables, and filters designed for thousands of concurrent threads.
High-performance filters for GPUs
The Two-Choice Filter and the GPU Quotient Filter: fast set membership and counting on the GPU, up to 4.4× faster than earlier GPU filters.
Concurrent GPU hash tables
A library of thread-safe GPU hash tables and the building blocks for new ones, covering chaining, cuckoo, double, iceberg, and power-of-two-choice hashing.
General-purpose GPU memory manager
Lets GPU threads malloc and free allocations of any size inside kernels, with no host calls. Built on van Emde Boas trees to keep fragmentation low.
GPU-native infrastructure for vector search, retrieval, and LLM serving.
GPU-native approximate nearest neighbor search
A Vamana-graph ANNS index with RaBitQ quantization that runs index construction and queries entirely on the GPU, and scales to billion-vector datasets.
GPU-native KV injection for personalized LLM serving
An LLM inference framework that precomputes KV caches for memory chunks and injects the retrieved ones directly on the GPU. Time-to-first-token stays nearly flat as more memory is retrieved.
GPU-accelerated out-of-core suffix array construction
Builds exact suffix arrays of LLM-scale corpora on a single GPU server, for corpora many times larger than GPU memory, and searches them with a batched query engine. 3.0–8.2× faster than infini-gram end to end.