You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[FEA] Benchmark GPU-built Faiss IndexHNSWCagra on a separate CPU-only host #2731
Is your feature request related to a problem? Please describe.
A common deployment builds CAGRA on a GPU worker, converts it to Faiss IndexHNSWCagra, and searches the exported index on a CPU-only machine. We want to benchmark build time on the GPU machine and recall and latency on the actual CPU search machine.
cuVS Bench has a faiss_gpu_cagra_hnsw configuration that builds CAGRA and searches the converted Faiss index, but its backend is marked requires_gpu: true. The existing faiss_cpu_hnsw_flat backend loads IndexHNSWFlat, so it does not provide a CPU-only replay path for an exported IndexHNSWCagra. As a result, customers need a separate benchmark harness and must join the results manually.
Describe the solution you'd like
Support a split cuVS Bench workflow:
On the GPU host, build CAGRA using the Faiss backend, convert it to IndexHNSWCagra, save the index, and export build and conversion measurements with a configuration manifest.
Let the customer transfer the saved index and benchmark inputs using their own storage or deployment process.
On a CPU-only host, load that saved IndexHNSWCagra without initializing or requiring a GPU. Sweep efSearch and, where applicable, index conversion choices such as base_level_only.
Measure exact recall, latency, and throughput with configurable query batch size and CPU threads.
Export results in a form that can be joined to the GPU build results by configuration and plotted as recall versus CPU search latency, with build time available for each point.
Please also document the supported manual workflow available today for building and exporting on one machine and benchmarking the index on a separate CPU-only machine. A command or configuration example would help customers use it before an integrated workflow is available.
Describe alternatives you've considered
The existing faiss_gpu_cagra_hnsw backend can measure CPU search on a GPU-equipped host, but that does not measure the customer's CPU-only search machine. Customers can export with Faiss, write their own CPU harness around faiss.read_index and SearchParametersHNSW, and combine its output with cuVS Bench build results. That approach works, but duplicates benchmark logic and complicates reproducibility.
Activity