8000 Improve Vamana index build performance and recall by bkarsin · Pull Request #1032 · rapidsai/cuvs · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Improve Vamana index build performance and recall #1032

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

Open
wants to merge 14 commits into
base: branch-25.08
Choose a base branch
from

Conversation

bkarsin
Copy link
Contributor
@bkarsin bkarsin commented Jun 19, 2025

Series of optimizations for the Vamana index build implementation including:

  • Reduce shared memory usage by the main kernels: GreedySearch and RobustPrune
  • Replace cub::blockSort with manual merge that reduces shared memory and improves perf
  • Remove other cub Sort calls to separate k 8000 ernel to improve resource utilization
  • Other changes to resource allocation and management to improve performance

Other changes that significantly improve recall (closing most of the gap with CPU build and giving the option to further improve recall with parameters):

  • Re-worked the RobustPrune kernel to use a multi-pass "occlusion" approach. This closes 60-80% of the recall gap seen between previous GPU Vamana and CPU DiskANN.
  • Changed the "vamana_iters" parameter to a float to allow fractional iterations. This lets us precisely control recall vs. performance to close the gap (or surpass CPU recall).

Further optimizations are underway, but this first round address many needs of users to both improve performance and recall.

@bkarsin bkarsin requested review from a team as code owners June 19, 2025 01:04
Copy link
copy-pr-bot bot commented Jun 19, 2025

This pull request requires additional validation before any workflows can run on NVIDIA's runners.

Pull request vetters can view their responsibilities here.

Contributors can view more details about this message here.

@bkarsin bkarsin added improvement Improves an existing functionality non-breaking Introduces a non-breaking change C++ and removed cpp CMake labels Jun 19, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
C++ improvement Improves an existing functionality non-breaking Introduces a non-breaking change
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant
0