Skip to content

Support IVF-RaBitQ in cuVS Library#1866

Merged
rapids-bot[bot] merged 203 commits into
NVIDIA:mainfrom
Stardust-SJF:cuvs_ivf_rabitq
Jun 23, 2026
Merged

Support IVF-RaBitQ in cuVS Library#1866
rapids-bot[bot] merged 203 commits into
NVIDIA:mainfrom
Stardust-SJF:cuvs_ivf_rabitq

Conversation

@Stardust-SJF

Copy link
Copy Markdown
Contributor

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.

jamxia155 and others added 30 commits November 3, 2025 08:03
- 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
* 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
@divyegala

Copy link
Copy Markdown
Contributor

/ok to test ca903cf

@divyegala

Copy link
Copy Markdown
Contributor

/ok to test a2e0344

@tfeher

tfeher commented Jun 11, 2026

Copy link
Copy Markdown
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.
@tfeher

tfeher commented Jun 11, 2026

Copy link
Copy Markdown
Contributor

/ok to test 5929527

Comment thread cpp/src/neighbors/ivf_rabitq/gpu_index/quantizer_gpu.cu
Comment thread cpp/src/neighbors/ivf_rabitq/gpu_index/quantizer_gpu.cu Outdated
Comment thread cpp/src/neighbors/ivf_rabitq/gpu_index/searcher_gpu_shared_mem_opt.cu Outdated
Comment thread cpp/src/neighbors/ivf_rabitq/gpu_index/searcher_gpu_shared_mem_opt.cu Outdated
- Convert unnecessary shared variable to local variable
- Remove stale references to BF16
- Remove dead code and clean up function signature

@lowener lowener left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@lowener

lowener commented Jun 17, 2026

Copy link
Copy Markdown
Contributor

/ok to test a17cf0d

@tfeher tfeher left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Comment thread python/cuvs/cuvs/tests/test_compute_matrix_product.py Outdated
@tfeher
tfeher removed request for a team and msarahan June 18, 2026 00:24
@tfeher

tfeher commented Jun 19, 2026

Copy link
Copy Markdown
Contributor

/ok to test 90eaea0

@tfeher

tfeher commented Jun 23, 2026

Copy link
Copy Markdown
Contributor

/merge

@rapids-bot
rapids-bot Bot merged commit 71306ec into NVIDIA:main Jun 23, 2026
398 of 406 checks passed
@github-project-automation github-project-automation Bot moved this from In Progress to Done in Unstructured Data Processing Jun 23, 2026
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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

C++ feature request New feature or request non-breaking Introduces a non-breaking change

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

[FEA] IVF-RaBitQ Index

8 participants