What's Changed
🚨 Breaking Changes
- Use HNSW GPU Hierarchy by Default by @julianmi in #1617
- Backport "Default to static linking of libcudart" by @KyleFromNVIDIA in #1918
- enforce a floor on libnvjitlink, build wheels with CUDA 13.0.x, test wheels against mix of CTK versions by @jameslamb in #1862
🐛 Bug Fixes
- Add float16 support for CAGRA extend by @lowener in #1620
- Fix C examples CUDAToolkit dependency by @tfeher in #1626
- clang-tidy: remove AnalyzeTemporaryDtors key by @achirkin in #1778
- Fix build.sh: build cuvs_c for examples and fix --gpu-arch parsing by @achirkin in #1779
- Better handling of batching of search in MG replicated mode by @viclafargue in #1718
- Add nvjitlink to cuda-toolkit pip extras for cusparse compatibility by @bdice in #1794
- [REVIEW] Fix: for balanced kmeans use grid.x for adjust_centers to avoid grid.y overflow for >262K centroids by @Nischal1729 in #1805
- Fix thrust header by @aamijar in #1817
- Fix persistent CAGRA regressions by @achirkin in #1800
- Fix thrust header by @aamijar in #1825
- Set
cudaFuncAttributeMaxDynamicSharedMemorySizewith thread-safety by @mythrocks in #1771 - [REVIEW] Move from
thrust::make_counting_iteratortocuda::make_counting_iteratorby @mythrocks in #1826 - Fixed cuvs benchmark debug build issue (linker step fail) by @irina-resh-nvda in #1599
- Graph degree equals intermediate graph degree bug fix by @irina-resh-nvda in #1834
- FAISS patch for
thrust_counting_iterator.hby @aamijar in #1844 - Use 1D grid calculations in
epsilon_neighborhoodby @divyegala in #1847 - Fix setting CAGRA graph build algo to iterative search by default by @achirkin in #1864
- Faiss suppress warning 611 by @aamijar in #1879
- Pin faiss to 1.14.0 by @aamijar in #1885
- Make some minor fixes to JIT+LTO functionality by @KyleFromNVIDIA in #1896
- Revert "Default to static linking of libcudart" by @KyleFromNVIDIA in #1925
- Fix hanging pytests by @aamijar in #1924
- Disallow programmatic stream serialization in JIT kernel launches by @divyegala in #1932
- IVF-Flat: fix irrelevant assert in the fused kernel mode by @achirkin in #1941
- [REVIEW] cuVS bench: Fix cudaFuncSetAttribute not being called when CAGRA search switches kernel variants by @irina-resh-nvda in #1851
- Pin openblas for aarch64 by @tarang-jain in #1965
- Null JIT kernel launch config by @divyegala in #1974
- [BUG] Fix Vamana Serialization by @tarang-jain in #1966
📖 Documentation
- remove docs references to cuvs-bench-datasets, install a C compiler in pre-commit env by @jameslamb in #1736
- Adding simple tarball install to build and install docs by @cjnolet in #1868
- Fixing nccl link in tarball install instructions by @cjnolet in #1887
- Add developer and user guides for JIT by @divyegala in #1876
- PCA docs by @aamijar in #1949
- Fix a few typos and
.rstlink syntax by @jrbourbeau in #1973 - Update docs footer year by @aamijar in #1958
- Doc improvements by @aamijar in #1978
🚀 New Features
- JIT compile
interleaved_scan_kernelfor CUDA 13 by @divyegala in #1405 - [REVIEW] L1 distance support for iterative search CAGRA build by @yan-zaretskiy in #1831
- [FEA] Inertia Computation for Balanced KMeans and Add Option for Weighted Inertia by @tarang-jain in #1880
- PCA preprocessor by @aamijar in #1808
- [FEA] Add Batching to KMeans by @tarang-jain in #1886
🛠️ Improvements
- Automatic Partition Count Derivation for ACE by @julianmi in #1603
- Add filter for cagra::merge by @benfred in #1496
- Ivf_flat extends golang APIs by @cpegeric in #1600
- Drop Python 3.10 support by @gforsyth in #1748
- tighten wheel size limits, expand CI-skipping logic, other small build changes by @jameslamb in #1751
- Migrate hash strategy to use the new cuco::static_map by @PointKernel in #1462
- Update raft headers by @aamijar in #1763
- remove pip.conf migration code in CI scripts, update CI-skipping rules by @jameslamb in #1760
- Convert non-type template parameters to runtime parameters in CAGRA search to cut binary size by @seunghwak in #1498
- Rename lanczos by @aamijar in #1759
- CI: build with CUDA 13.1.1 by @jameslamb in #1766
- Fixes for stricter compilers by @maxwbuckley in #1703
- fix cpu_search call by including
kargument by @benfred in #1785 - Use GHA id-token for
sccache-distauth token by @trxcllnt in #1790 - Remove
cagra_optimize.hppby @aamijar in #1791 - Remove unused use_norms constant from kernel_sm60.cuh by @maxwbuckley in #1705
- Remove unused variable read_idx from query loop by @maxwbuckley in #1706
- remove gitutils by @jameslamb in #1797
- refactor: build wheels and conda packages using Python limited API by @gforsyth in #1788
- Add pluggable backend architecture to cuvs-bench by @jnke2016 in #1536
- Use Specific CCCL Includes by @divyegala in #1806
- Replace
thrust::tuplewithcuda::std::tupleby @miscco in #1811 - check-nightly-ci: update to new version by @jameslamb in #1813
- check-nightly-ci: remove testing config by @jameslamb in #1824
- Refactor JIT LTO kernel generation by @KyleFromNVIDIA in #1812
- Move
test_compute_matrix_product.pytocpp/testsby @KyleFromNVIDIA in #1836 - Drop uses of
thrust/functional.hby @miscco in #1835 - Better
ncvparam spectral embedding edge case by @aamijar in #1828 - Modernize the uses of raft in cuVS by @achirkin in #1837
- refactor(limited api): add explicit
wheel.py-apitopyproject.toml
by @gforsyth in #1852 - Update Cython lower bound pin to 3.2.2 by @vyasr in #1858
- Add support for Python 3.14 by @gforsyth in #1845
- fix(rust): change Index::search to take &self instead of self by @zbennett10 in #1839
- Remove pytest upper bound pin by @vyasr in #1867
- Readme: vecflow paper in references by @aamijar in #1874
- Refactor knn graph build params to remove
graph_build_types.hppby @jinsolp in #1235 - Remove IndexWrapper by @aamijar in #1792
- Use C linkage for JIT LTO kernels by @divyegala in #1909
- Prevent nested parallelism in HNSW bench by @julianmi in #1895
- Add a script to check for breaking C ABI changes by @benfred in #1749
- Improve the IVF-PQ Coarse Batch Size Workspace Estimation by @julianmi in #1937
- ScaNN: Fix AVQ prefetch by @rmaschal in #1899
New Contributors
- @cpegeric made their first contribution in #1600
- @PointKernel made their first contribution in #1462
- @seunghwak made their first contribution in #1498
- @Nischal1729 made their first contribution in #1805
- @jnke2016 made their first contribution in #1536
- @zbennett10 made their first contribution in #1839
- @jrbourbeau made their first contribution in #1973
Full Changelog: v26.04.00a...v26.04.00