NVIDIA / NVIDIA/cuvs

Unify SCANN and IVF-PQ helper functions

Open
#1,182 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

feature request
Dominant language
Cuda
Stars
854
Forks
236
Avg merge
3d 3h
Merged PRs (30d)
62

Description

There are many algorithmic steps shared between IVF-PQ and SCANN algorithms, but they often differ slightly from each other. Where possible, we should define common utility functions. This is a tracker issue to list these operations

  • Compute residuals: IVF-PQ applies rotation while SCANN does not.
  • raft::matrix::sample_rows sample multiple matrices at the same time (SCANN samples dataset and corresponding cluster labels).
  • train pq_codebook
  • process and fill codes

Other

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reviewing the listed IVF-PQ and SCANN operations and the cublas_device_pointer_mode declaration in cpp/include/raft/linalg/detail/cublas_wrappers.hpp. Map the existing implementations for residuals, matrix sampling, PQ codebook training, and code processing, then confirm done when shared utilities cover the applicable differences and the wrapper is public.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
machine-learning, search
Issue type
Refactor
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.