Support IVF-RaBitQ in cuVS Library#1866
Merged
Merged
Conversation
- Currently built as a separate library. - To be merged with existing `cuvs_objs` library. - Dependency on `Eigen` yet to be removed.
- RABITQ_BENCH_TEST for standalone testing; to be removed as integration work is completed. - CUVS_IVF_RABITQ_ANN_BENCH for benchmarking as part of ANN benchmarking suite
- `bits_per_dim` = `ex_bits` + 1 - Also update supported range of `bits_per_dim` to 2-9 inclusive
* Fix cuVS build issues with RaBitQ * Align line formatting && Delete unused variables in robust_prune.cuh
…q' into jamxia_cuvs_ivf_rabitq
* Download Eigen automatically by rapids-cmake * Disable FAISS and DISKANN benchmarks * add config files and update readme * Update Readme and openai_1M config * Update python bench command line * update README * update README --------- Co-authored-by: James Xia <jamxia@nvidia.com>
- Error-checking - Stream-ordered CUDA calls
Contributor
|
/ok to test ca903cf |
Contributor
|
/ok to test a2e0344 |
Contributor
|
/ok to test 87353b1 |
In the streaming build path the full dataset stays on host, but k-means label assignment called cuvs::cluster::kmeans::predict directly on the host dataset view. predict launches device kernels, so the GPU dereferenced a host pointer. This fix computes cluster labels in device-sized batches: copy each streaming_batch_size-row chunk to the GPU and predict into the matching slice of `labels`. This keeps predict operating on device memory while respecting the device-memory budget that motivates streaming. Non-streaming paths are unchanged.
Contributor
|
/ok to test 5929527 |
lowener
reviewed
Jun 16, 2026
- Convert unnecessary shared variable to local variable - Remove stale references to BF16 - Remove dead code and clean up function signature
Contributor
|
/ok to test a17cf0d |
tfeher
approved these changes
Jun 18, 2026
tfeher
left a comment
Contributor
There was a problem hiding this comment.
Thanks Jifan for contributing this feature and thanks James for ensuring that the code is well integrated into cuvs! The PR looks good to me.
Contributor
|
/ok to test 90eaea0 |
Contributor
|
/merge |
rapids-bot Bot
pushed a commit
that referenced
this pull request
Jun 29, 2026
Add ivf-rabitq paper in references since #1866 is now merged. Authors: - Anupam (https://github.com/aamijar) Approvers: - Corey J. Nolet (https://github.com/cjnolet) URL: #1877
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.
This PR introduces IVF-RaBitQ, a GPU-native ANNS solution that integrates the cluster-based method IVF with RaBitQ quantization into an efficient GPU index build/search pipeline. It can achieve a strong recall–throughput trade-off while having fast index build speed and a small storage footprint.