Releases: rapidsai/cuvs
Releases · rapidsai/cuvs
v25.10.00
🚨 Breaking Changes
- [Java] Uniform toHost/toDevice to work across all CuVSMatrix classes (#1328) @ldematte
- Use int64_t for getters in the cagra/ivf_flat c-api (#1272) @benfred
- [REVIEW][Java] Rename destroyIndex() to close(), extend AutoCloseable (#1252) @ldematte
- Removing deprecated batching code specific to NN Descent (#1249) @jinsolp
- MG C API (#1160) @viclafargue
🐛 Bug Fixes
- Update
cpp/cmake/config.jsonforConfigureTest()(#1385) @KyleFromNVIDIA - Fix k-means++ root rank race condition (#1359) @csadorf
- Fix inadvertent uses of copy constructor in mdarrays across cuVS (#1330) @achirkin
- Refactor CMakeLists to support static only builds of libcuvs (#1317) @robertmaynard
- Fix pq_compressed file created by SSD Vamana build (#1313) @bkarsin
- Revert "[Java]Binary and scalar quantization (#1104)" (#1274) @mythrocks
- Fix balanced kmeans API (#1268) @enp1s0
- [BUG] NEIGHBORS_ALL_NEIGHBORS_TEST build ignores --no-mg (#1230) @enp1s0
- Add error handling for CPU-only bench (#1203) @lowener
- Make duplicate removal in all neighbors robust to distance drift across batches (#1185) @jinsolp
- Fix single GPU sharded search merge (#1094) @viclafargue
- Processing mutual reachability dist in connect_knn_graph for host data (#1093) @jinsolp
- [Java][Fix] Multithreaded querying fails without synchronization (#1082) @chatman
📖 Documentation
- Add Vamana C rst Docs to toctree (#1399) @tarang-jain
- Regroup overloads in docs (#1377) @lowener
- [DOCS] Update IVF Docs with Supported Distance Metrics (#1365) @tarang-jain
- Add note about Linux-only support for cuVS pre-compiled packages (#1306) @stic
- Documentation Fixes (#1301) @benfred
- Docs for spectral embedding (#1299) @aamijar
- Improve NN Descent documentation (#1246) @jinsolp
- Add NN.extend and kmeans to Python doc (#1217) @lowener
🚀 New Features
- [REVIEW] [Java] Option to build fat-jars with native dependencies included (#1296) @mythrocks
- Updates needed when building with CUDA 13 (#1219) @robertmaynard
- [Java] Add CAGRA index graph accessor/build from graph (host memory) (#1216) @ldematte
- [Feat] Add Dockerfile for reproducible installation (#1195) @rhdong
- Vamana C / Python API (#1112) @tarang-jain
- Mutual Reachability in all-neighbors API (#1016) @jinsolp
- CAGRA Build + DiskANN Search cuvs-bench Wrapper (#899) @tarang-jain
🛠️ Improvements
- Patch FAISS for missing Thrust includes (#1398) @bdice
- Empty commit to trigger a build (#1363) @msarahan
- [Review][Java] Refactor: extract interface from CuVSMatrixBaseImpl (#1361) @ldematte
- use CUDA 13.0.1 CI images (#1353) @jameslamb
- Treat warnings as errors in doc builds + MG ANNs Python API doc update (#1350) @viclafargue
- [Java] Support row strides in CuVSMatrix (#1345) @ldematte
- [Java] Adding tests to use CuVSDeviceMatrix (device memory) directly as a CagraIndex input dataset (#1340) @ldematte
- Improve performance of assigning clusters in batched all_neighbors (#1336) @jinsolp
- Configure repo for automatic release notes generation (#1334) @AyodeAwe
- [Java] Buffered device matrix builder (#1332) @ldematte
- Remove UCX-Py/UCXX from release script (#1331) @pentschev
- [Java] Uniform toHost/toDevice to work across all CuVSMatrix classes (#1328) @ldematte
- [Java] Add
libcuvs<-> cuvs-java version check (#1327) @ldematte - update dependencies: use cuda-toolkit wheels (#1326) @jameslamb
- Add cagra.extend bindings for python (#1324) @benfred
- [Java] Make
cudaGetDevicePropertiescompatible with CUDA 12 and 13 based on symbol presence (#1323) @ldematte - Use branch-25.10 again (#1319) @jameslamb
- [Review][Java] Add detailed error message for
libcuvsload failure to UnsupportedProvider/UnsupportedOperationExceptions (#1316) @ldematte - [Java] Add reason(s) to UnsupportedProvider/UnsupportedOperationExceptions (#1314) @ldematte
- MG Python API (#1307) @viclafargue
- Fix redundant memset (#1305) @vinaydes
- Expose pq-centers to C and Python (#1303) @benfred
- Port
raft::neighbors::epsilon_neighborhoodto cuvs (#1294) @aamijar - ScaNN: Overlapped gather for AVQ (#1286) @rmaschal
- Update rapids-dependency-file-generator (#1285) @KyleFromNVIDIA
- [Review][Java] Expand
CagraIndex#searchto accept more types (int8 and int32) (#1283) @ldematte - All neighbors C and Python bindings (#1282) @viclafargue
- Build and test with CUDA 13.0.0 (#1273) @jameslamb
- Use int64_t for getters in the cagra/ivf_flat c-api (#1272) @benfred
- [Java][C] Expose GPUInfo (#1267) @ldematte
- Add rust bindings for kmeans (#1266) @benfred
- [REVIEW] Add a public API for CAGRA graph optimize (#1260) @abc99lr
- Fix debug build (#1258) @lowener
- Run
cargo fmtin the pre-commit hooks (#1255) @benfred - [REVIEW][Java] Rename destroyIndex() to close(), extend AutoCloseable (#1252) @ldematte
- Removing deprecated batching code specific to NN Descent (#1249) @jinsolp
- Pin Latest Faiss Version (#1247) @tarang-jain
- Use build cluster in devcontainers (#1240) @trxcllnt
- Use rapids_cuda_enable_fatbin_compression (#1239) @robertmaynard
- [Improvement] Replace Calls to thrust::transform with raft::linalg (#1238) @tarang-jain
- [Java] CuVSMatrix for device memory (#1232) @ldematte
- Drop log level for CAGRA trace messages (#1229) @mythrocks
- Update rapids_config to handle user defined branch name (#1227) @robertmaynard
- Reduce noise in Java tests (#1226) @mythrocks
- Update another instance of rapids-build-backend (#1225) @KyleFromNVIDIA
- Fix missing sync_stream in ScaNN build (#1224) @rmaschal
- [Java] Exception-safe RMM Allocations (#1215) @mythrocks
- Update rapids-build-backend to 0.4.1 (#1214) @KyleFromNVIDIA
- Removing filter templates in ivfpq for binary size reduction (#1211) @jinsolp
- ci(labeler): update labeler action to @v5 (#1210) @gforsyth
- [Java] Add decorator for synchronized CuVSResource access (#1209) @ldematte
- Remove unused templated instances (#1204) @vinaydes
- Spectral Embedding precomputed graph api (#1197) @aamijar
- cuvs RAPIDS dependency now use the new rapids-cmake branch info (#1189) @robertmaynard
- Allow latest OS in devcontainers (#1169) @bdice
- MG C API (#1160) @viclafargue
- Merge support for tiered index (#1155) @benfred
- Update build infra to support new branching strategy (#1143) @robertmaynard
- [Java]Binary and scalar quantization (#1104) @punAhuja
- Improve Vamana index build performance and recall (#1032) @bkarsin
- Use GCC 14 in conda builds. (#1030) @vyasr
- Update SNMG ANN API testing (#1023) @viclafargue
[NIGHTLY] v25.12.00
🔗 Links
🚨 Breaking Changes
- Update cagra C API enums to have more long term stable values (#1436) @robertmaynard
- Refactor libcuvs_c header and source locations (#1357) @robertmaynard
- Using
all_neighborsfor mutual reachability (#1234) @jinsolp
🐛 Bug Fixes
- Properly guard usage of openmp function calls (#1435) @robertmaynard
- Fix C/Python serialization for FP16. Add python tests (#1429) @lowener
- cuvs_static properly adds C include dir to target_include_directories (#1426) @robertmaynard
- ANN_BENCH: Don't throw in noexcept do_deallocate (#1417) @achirkin
- Deallocation should be noexcept (#1416) @bdice
- Remove unneeded cutlass public build/install dependency (#1411) @robertmaynard
- Allow compilation when OpenMP is disabled (#1346) @robertmaynard
🚀 New Features
- Update cagra C API enums to have more long term stable values (#1436) @robertmaynard
- Unify binding headers (#1413) @robertmaynard
- Refactor libcuvs_c header and source locations (#1357) @robertmaynard
🛠️ Improvements
- Use pinned_host_memory_resource instead of pinned_memory_resource. (#1434) @bdice
- Enable
sccache-distconnection pool (#1431) @trxcllnt - Move eigen_solvers from raft (#1402) @aamijar
- Update
RAPIDS_BRANCH, codify changes inupdate-version.sh(#1368) @KyleFromNVIDIA - Using
all_neighborsfor mutual reachability (#1234) @jinsolp - CosineExpanded Distance Metric for CAGRA (#197) @tarang-jain
v25.08.00
🚨 Breaking Changes
- [Java] Using functions for mapping (#1007) @ldematte
- Remove CUDA 11 from dependencies.yaml (#962) @KyleFromNVIDIA
- Common knn graph build params (#949) @jinsolp
- stop uploading packages to downloads.rapids.ai (#940) @jameslamb
🐛 Bug Fixes
- [BUG] Fix Large Batch Preprocessing for NN Descent (#1166) @tarang-jain
- Fix TieredIndexIT, Scoped resource access change was missed (#1156) @punAhuja
- Fix for
hellingermetric (#1128) @viclafargue - Fix go CI failures (#1114) @benfred
- Conditionally post process distances in NN Descent for use with distance epilogue (#1108) @jinsolp
- [BUG] Disable flaky cpp test
AnnIVFFlatTestF_half.AnnIVFFlat/21(#1092) @julianmi - [BUG] Fix device access check in build_sorted_mst (#1083) @tarang-jain
- Pin Faiss Version to Last Stable Release (#1029) @tarang-jain
- Fix verify-copyright precommit hook (#1017) @benfred
- Adding GH_TOKEN pass-through to summarize job (#1011) @msarahan
- Reuse
<version_config.h>instead of separate version constants inc_api.h(#1003) @mythrocks - IVF-PQ coarse search: fix integer overflow and avoid excessive batch sizes (#999) @achirkin
- Fix C compile error in
tiered_index.h(#996) @mythrocks - Fix for NN Descent negative or NaN distances (#994) @jinsolp
- Adding int64 search for MG CAGRA (#975) @viclafargue
- [ANN_BENCH] Fix OpenMP Sections in Wrappers (#911) @tarang-jain
- [BUG] cuvs-bench data_export fixes (#863) @tarang-jain
📖 Documentation
- [ANN_BENCH] [DOCS] Add Vamana / DiskANN to cuvs-bench Docs (#1164) @tarang-jain
- Add Golang build instructions to build.rst (#1116) @mythrocks
- Minor correction for Java test instructions (#1081) @mythrocks
- add docs on CI workflow inputs (#1075) @jameslamb
- [REVIEW][Java] Add instructions on how to run a single test (#1004) @ldematte
🚀 New Features
- Binary CAGRA with NN Descent (#1133) @tarang-jain
- CAGRA build heuristics for HNSW (#1125) @achirkin
- BitwiseHamming distance for NN Descent (#1101) @jinsolp
ReachabilityPostProcessdistance epilogue for NN Descent (#1073) @jinsolp- Add brute force to
all_neighborsAPI (#1062) @jinsolp - [Java] Support for tiered index (#1028) @punAhuja
- Enable
build_sorted_mstwith data on host memory (#997) @jinsolp - Add C-API method to fetch cuVS version from Java. (#935) @mythrocks
- Spectral Embedding (#871) @aamijar
- [FEA] Build Single Linkage API (#820) @tarang-jain
🛠️ Improvements
- Check shape is initialized in cuvsMatrixSliceRows (#1193) @benfred
- Add error checking for our C example code (#1171) @benfred
- Removing all references to CUDA 11 from codebase (#1150) @cjnolet
- [Java]Fixed TieredIndexParams creation/destruction, calling cuvsTieredIndexParamsCreate (#1147) @punAhuja
- Fix update-version (#1135) @AyodeAwe
- Reducing binary size in
ivf_pqby deduplicating kernels (#1130) @jinsolp - fix(docker): use versioned
-latesttag for allrapidsaiimages (#1129) @gforsyth - SCaNN Index build (#1120) @rmaschal
- [Java] Extend
Datasetto work as an output data container (#1111) @ldematte - [Java] Fix HNSW params allocation (#1110) @ldematte
- [Java] Fix CAGRA params allocation (#1109) @ldematte
- [Java] Fix POM (#1106) @ldematte
- Enforce java codeowners for managing contents of
java/(#1103) @cjnolet - Reduce binary size of refine functions (#1095) @tfeher
- [Java] Introduce scoped resource access (#1089) @ldematte
- Expose graph and dataset accessors for CAGRA to C/Python (#1086) @benfred
- Add warning for unused GPU when
n_clusters < n_ranksin batchall_neighbors(#1072) @jinsolp - [Java] Tidy up
MemorySegments lifecycle (#1069) @ldematte - [Java] Refactor SearchResults implementation classes (#1067) @ldematte
- Use CUDA 12.9 in Conda, Devcontainers, Spark, GHA, etc. (#1063) @jakirkham
- Exporting changed
graph_build_paramsnamespace intoall_neighbors(#1060) @jinsolp - hnsw::from_cagra: avoid allocating the graph twice (#1057) @achirkin
- Improve memory efficiency for returning NN Descent distances (#1053) @jinsolp
- Deprecation notice for batching code specific to NN Descent (#1052) @jinsolp
- Remove nvidia and dask channels (#1050) @vyasr
- [Java] Enforce Java code format standard (#1049) @narangvivek10
- Make rust publish run after conda upload (#1047) @AyodeAwe
- refactor(cuda11): remove cuda11-only conda channels, cleanup docs (#1046) @gforsyth
- [Review][Java] Fix random segabort/segfault/double free problems (#1045) @ldematte
- [Java] Add Dataset based on
MemorySegment(#1034) @ldematte - [Java] Add Java API benchmarks (#1033) @ldematte
- fix(cli): Add validation for search-mode parameter (#1026) @mayani-nv
- [Java] Encapsulate on-heap float arrays into
Dataset(#1024) @ldematte - refactor(shellcheck): fix all remaining warnings/errors (#1019) @gforsyth
- Instantiate only specific RAFT linewise kernels (#1018) @aamijar
- Update nightly CI check to allow 30 days of failing nightly build. (#1008) @cjnolet
- [Java] Using functions for mapping (#1007) @ldematte
- [REVIEW][Java] Refactor CagraBuildAndSearchIT to explicitly express different execution modes (#1006) @ldematte
- [REVIEW][Java] Add jextract artifacts to gitignore (#1005) @ldematte
- Remove pytest pin (#998) @vyasr
- [java] Utility function for
cudaMemcpy(#983) @mythrocks - [java] Copy
pom.xmltotarget/on build (#981) @mythrocks - Remove CUDA 11 from dependencies.yaml (#962) @KyleFromNVIDIA
- refactor(rattler): remove cuda11 options and general cleanup (#961) @gforsyth
- Remove CUDA 11 devcontainers and update CI scripts (#960) @bdice
- Common knn graph build params (#949) @jinsolp
- stop uploading packages to downloads.rapids.ai (#940) @jameslamb
- Instantiate only specific RAFT reduction kernels (#925) @divyegala
- [Java] Replace the C wrapper layer with the Panama API-based Java implementation (#916) @narangvivek10
- Forward-merge branch-25.06 into branch-25.08 (#909) @gforsyth
- Forward-merge branch-25.06 into branch-25.08 (#897) @gforsyth
- Serialize Vamana index with SSD sector alignment per MSFT DiskANN format, generate quantized dataset for integration with DiskANN (#846) @jamxia155
- Add mean and median threshold modes to binary quantization (#716) @enp1s0
v25.06.01
🚨 Breaking Changes
🐛 Bug Fixes
- 25.06 hotfix for SNMG (#1027) @viclafargue
- Update rust/cuvs-sys (#990) @benfred
- Fix rust publishing step (#984) @benfred
- Fix failing CAGRA merge google tests for 25.06 (#974) @rhdong
- Fix for recent NCCL resource update (#968) @viclafargue
- Revert "Fix kmeans::predict argument order (#915)" (#951) @divyegala
- IVF-PQ tests: fix segfault when accessing empty lists (#933) @achirkin
- batch_load_iterator shall copy data located in host memory (#926) @tfeher
- Fix kmeans::predict argument order (#915) @enp1s0
- ANN_BENCH: fix the reported core count (#896) @achirkin
- CUVS_ANN_BENCH_SINGLE_EXE: find the mg library (#890) @achirkin
- [FIX] Revert negated InnerProduct distance for NN Descent (#859) @jinsolp
- IVF-PQ tests: fix segfault when accessing empty lists (#838) @achirkin
- [CuVS-Java] Automate panama bindings generation, Include IVF_PQ parameters in CAGRA index parameters and other changes (#831) @narangvivek10
- Ann-bench: fix unsafe lazy blobs (#828) @achirkin
- Fix test_brute_force conversion (#821) @lowener
- [FEA] New algos and updates/corrections to Faiss cuvs-bench (#677) @tarang-jain
📖 Documentation
- All-neighbors API docs (#944) @jinsolp
- cagra.rst: fitered -> filtered (#866) @eli-b
- [DOCS] Fix Integration Docs (Faiss) (#782) @tarang-jain
🚀 New Features
- Add IVF-PQ support in CAGRA index params in Python (#918) @lowener
- [Feat] Expose C API for CAGRA
merge(#860) @rhdong - Use NCCL wheels from PyPI for CUDA 12 builds (#827) @divyegala
- Add support for half in CAGRA+HNSW (#813) @lowener
- [CI] Enable Java test in CI workflow (#805) @rhdong
- Wrapper for all-neighbors knn graph building (#785) @jinsolp
- Add support of half dtype in IVF-FLAT (#730) @lowener
- IVF-PQ: low-precision coarse search (#715) @achirkin
- [Feat] Add support of logical merge in Cagra (#713) @rhdong
🛠️ Improvements
- Update score calculation for CAGRA-Q instance selection (#938) @enp1s0
- [FEA] Use Native Brute Force for Sparse Pairwise KNN (#927) @tarang-jain
- use 'rapids-init-pip' in wheel CI, other CI changes (#917) @jameslamb
- ANN_BENCH: Avoid repeated calls to raft::get_device_for_address in CAGRA search (#908) @achirkin
- [Java] New off-heap Dataset support for CAGRA and Bruteforce (#902) @chatman
- Finish CUDA 12.9 migration and use branch-25.06 workflows (#901) @bdice
- Update to clang 20 (#898) @bdice
- get Java artifacts from GitHub Actions artifact store (#893) @jameslamb
- Quote head_rev in conda recipes (#892) @bdice
- [Java] Exposing merge API for multiple CAGRA indices (#891) @punAhuja
- Expose ivf-flat centers to python/c (#888) @benfred
- CUDA 12.9 use updated compression flags (#887) @robertmaynard
- Expose ivf-pq centers to python/c (#881) @benfred
- Accept host inputs in python for ivf-pq build and extend (#880) @benfred
- Add tiered_index support (#879) @benfred
- Exclude librmm.so from auditwheel (#878) @bdice
- update.version.sh: remove broken reference, skip most CI on PRs that only modify update-version.sh (#875) @jameslamb
- Add support for Python 3.13 (#874) @gforsyth
- chore: lower wheel size threshold (#872) @gforsyth
- [Java] Adding support for prefiltering in CAGRA (#870) @punAhuja
- Change snmg index to use updated multi gpu resource API (#869) @jinsolp
- run shellcheck on all files, other small pre-commit updates (#865) @jameslamb
- Fix IVF PQ build metric for CAGRA (#862) @lowener
- ANN_BENCH: Expose parallel_mode parameter of FAISS CPU IVF implementation (#861) @achirkin
- Specify matplotlib version (#839) @benfred
- Use random tmp names for index files in tests (#837) @achirkin
- Download build artifacts from Github for CI (#834) @VenkateshJaya
- Add NN-Descent return_distances functionality to python/C (#833) @benfred
- Optimize hnsw::from_cagra<GPU> (#826) @achirkin
- Use vendored RAPIDS.cmake in example code. (#824) @bdice
- refactor(rattler): enable strict channel priority for builds (#823) @gforsyth
- Reduce device memory usage for CAGRA's graph optimization process (2-hop detour counting) (#822) @anaruse
- [cuvs_bench] distinguish search label from build label in data_export.py (#818) @jiangyinzuo
- Vendor RAPIDS.cmake (#816) @bdice
- Update libcuvs libraft ver to 25.06 in conda env (#808) @jinsolp
- Moving NN Descent class and struct declarations to
nn_descent_gnnd.hpp(#803) @jinsolp - Remove
@rapidsai/cuvs-build-codeowners(#783) @KyleFromNVIDIA - Moving wheel builds to specified location and uploading build artifacts to Github (#777) @VenkateshJaya
- Remove unused raft cagra header in add_nodes.cuh (#741) @jiangyinzuo
- Expose kmeans to python (#729) @benfred
- Update cuvs to properly create a NCCL::NCCL target (#720) @robertmaynard
- Optimize euclidean distance in host refine phase (#689) @anstellaire
- Moving MG functions into unified API +
raft::device_resources_snmgas device resource type for MG functions (#454) @viclafargue - Moving random ball cover (#218) @cjnolet
v25.06.00
🚨 Breaking Changes
🐛 Bug Fixes
- Fix failing CAGRA merge google tests for 25.06 (#974) @rhdong
- Fix for recent NCCL resource update (#968) @viclafargue
- Revert "Fix kmeans::predict argument order (#915)" (#951) @divyegala
- IVF-PQ tests: fix segfault when accessing empty lists (#933) @achirkin
- batch_load_iterator shall copy data located in host memory (#926) @tfeher
- Fix kmeans::predict argument order (#915) @enp1s0
- ANN_BENCH: fix the reported core count (#896) @achirkin
- CUVS_ANN_BENCH_SINGLE_EXE: find the mg library (#890) @achirkin
- [FIX] Revert negated InnerProduct distance for NN Descent (#859) @jinsolp
- IVF-PQ tests: fix segfault when accessing empty lists (#838) @achirkin
- [CuVS-Java] Automate panama bindings generation, Include IVF_PQ parameters in CAGRA index parameters and other changes (#831) @narangvivek10
- Ann-bench: fix unsafe lazy blobs (#828) @achirkin
- Fix test_brute_force conversion (#821) @lowener
- [FEA] New algos and updates/corrections to Faiss cuvs-bench (#677) @tarang-jain
📖 Documentation
- All-neighbors API docs (#944) @jinsolp
- cagra.rst: fitered -> filtered (#866) @eli-b
- [DOCS] Fix Integration Docs (Faiss) (#782) @tarang-jain
🚀 New Features
- Add IVF-PQ support in CAGRA index params in Python (#918) @lowener
- [Feat] Expose C API for CAGRA
merge(#860) @rhdong - Use NCCL wheels from PyPI for CUDA 12 builds (#827) @divyegala
- Add support for half in CAGRA+HNSW (#813) @lowener
- [CI] Enable Java test in CI workflow (#805) @rhdong
- Wrapper for all-neighbors knn graph building (#785) @jinsolp
- Add support of half dtype in IVF-FLAT (#730) @lowener
- IVF-PQ: low-precision coarse search (#715) @achirkin
- [Feat] Add support of logical merge in Cagra (#713) @rhdong
🛠️ Improvements
- Update score calculation for CAGRA-Q instance selection (#938) @enp1s0
- [FEA] Use Native Brute Force for Sparse Pairwise KNN (#927) @tarang-jain
- use 'rapids-init-pip' in wheel CI, other CI changes (#917) @jameslamb
- ANN_BENCH: Avoid repeated calls to raft::get_device_for_address in CAGRA search (#908) @achirkin
- [Java] New off-heap Dataset support for CAGRA and Bruteforce (#902) @chatman
- Finish CUDA 12.9 migration and use branch-25.06 workflows (#901) @bdice
- Update to clang 20 (#898) @bdice
- get Java artifacts from GitHub Actions artifact store (#893) @jameslamb
- Quote head_rev in conda recipes (#892) @bdice
- [Java] Exposing merge API for multiple CAGRA indices (#891) @punAhuja
- Expose ivf-flat centers to python/c (#888) @benfred
- CUDA 12.9 use updated compression flags (#887) @robertmaynard
- Expose ivf-pq centers to python/c (#881) @benfred
- Accept host inputs in python for ivf-pq build and extend (#880) @benfred
- Add tiered_index support (#879) @benfred
- Exclude librmm.so from auditwheel (#878) @bdice
- update.version.sh: remove broken reference, skip most CI on PRs that only modify update-version.sh (#875) @jameslamb
- Add support for Python 3.13 (#874) @gforsyth
- chore: lower wheel size threshold (#872) @gforsyth
- [Java] Adding support for prefiltering in CAGRA (#870) @punAhuja
- Change snmg index to use updated multi gpu resource API (#869) @jinsolp
- run shellcheck on all files, other small pre-commit updates (#865) @jameslamb
- Fix IVF PQ build metric for CAGRA (#862) @lowener
- ANN_BENCH: Expose parallel_mode parameter of FAISS CPU IVF implementation (#861) @achirkin
- Specify matplotlib version (#839) @benfred
- Use random tmp names for index files in tests (#837) @achirkin
- Download build artifacts from Github for CI (#834) @VenkateshJaya
- Add NN-Descent return_distances functionality to python/C (#833) @benfred
- Optimize hnsw::from_cagra<GPU> (#826) @achirkin
- Use vendored RAPIDS.cmake in example code. (#824) @bdice
- refactor(rattler): enable strict channel priority for builds (#823) @gforsyth
- Reduce device memory usage for CAGRA's graph optimization process (2-hop detour counting) (#822) @anaruse
- [cuvs_bench] distinguish search label from build label in data_export.py (#818) @jiangyinzuo
- Vendor RAPIDS.cmake (#816) @bdice
- Update libcuvs libraft ver to 25.06 in conda env (#808) @jinsolp
- Moving NN Descent class and struct declarations to
nn_descent_gnnd.hpp(#803) @jinsolp - Remove
@rapidsai/cuvs-build-codeowners(#783) @KyleFromNVIDIA - Moving wheel builds to specified location and uploading build artifacts to Github (#777) @VenkateshJaya
- Remove unused raft cagra header in add_nodes.cuh (#741) @jiangyinzuo
- Expose kmeans to python (#729) @benfred
- Update cuvs to properly create a NCCL::NCCL target (#720) @robertmaynard
- Optimize euclidean distance in host refine phase (#689) @anstellaire
- Moving MG functions into unified API +
raft::device_resources_snmgas device resource type for MG functions (#454) @viclafargue - Moving random ball cover (#218) @cjnolet
v25.04.00
🚨 Breaking Changes
🐛 Bug Fixes
- Use new build_patch_only argument (#780) @KyleFromNVIDIA
- Fix resource import so generate_groundtruth works (#774) @nvrohanv
- Relax max duplicates in batched NN Descent (#770) @jinsolp
- [BUG] Fix graph index sorting in CAGRA graph build by NN Descent (#763) @enp1s0
- cuvs-bench-cpu: avoid 'mkl' dependency on aarch64 (#750) @jameslamb
- ANN_BENCH: Fix segfault in CAGRA wrapper when moving its graph (#733) @achirkin
- Fix duplicate indices in batch NN Descent (#702) @jinsolp
📖 Documentation
🚀 New Features
L2SqrtExpandedmetric support for NN Descent (#790) @jinsolp- CAGRA search: int64_t indices in the API (#769) @achirkin
- Expose IVF PQ params in CAGRA C API (#768) @divyegala
- [Feat] Expose search with bitset C API for Brute Force (#717) @rhdong
- Diskann Benchmarking Wrapper (#260) @tarang-jain
🛠️ Improvements
- Use L4 instead of V100 (#797) @bdice
- Rust publishing updates (#789) @AyodeAwe
- Removing print statement (#786) @jinsolp
- Support passing a dataset to
FromCagra(#767) @ajit283 - add function to build specific gpu-arches [REVIEW] (#766) @nvrohanv
- feat(libcuvs): port libcuvs to rattler-build (#751) @gforsyth
- Consolidate Conda environment for Rust (#745) @KyleFromNVIDIA
- rename 'sklearn' conda dependency to 'scikit-learn' (#743) @jameslamb
- Reduce memory consumption of scalar quantizer (#736) @mfoerste4
- Use conda-build instead of conda-mambabuild (#723) @bdice
- Expand NVTX annotations in CAGRA build and HNSW (#711) @achirkin
- Replace
cub::TransformInputIteratorwiththrust::transform_iterator(#707) @miscco - Consolidate more Conda solves in CI (#701) @KyleFromNVIDIA
- Require CMake 3.30.4 (#691) @robertmaynard
- Create Conda CI test env in one step (#684) @KyleFromNVIDIA
- Use shared-workflows branch-25.04 (#669) @bdice
- Add
shellcheckto pre-commit and fix warnings (#662) @gforsyth - Add build_type input field for test.yaml (#661) @gforsyth
- Use
rapids-pip-retryin CI jobs that might need retries (#648) @gforsyth - Use new rapids-logger library (#644) @vyasr
- disallow fallback to Make in Python builds (#636) @jameslamb
- Add
verify-codeownershook (#633) @KyleFromNVIDIA - Forward-merge branch-25.02 into branch-25.04 (#632) @bdice
- Account for RAFT sparse types updates (#629) @divyegala
- Migrate to NVKS for amd64 CI runners (#627) @bdice
[NIGHTLY] v25.06.00
🔗 Links
🚨 Breaking Changes
🐛 Bug Fixes
- 25.06 hotfix for SNMG (#1027) @viclafargue
- Update rust/cuvs-sys (#990) @benfred
- Fix rust publishing step (#984) @benfred
- Fix failing CAGRA merge google tests for 25.06 (#974) @rhdong
- Fix for recent NCCL resource update (#968) @viclafargue
- Revert "Fix kmeans::predict argument order (#915)" (#951) @divyegala
- IVF-PQ tests: fix segfault when accessing empty lists (#933) @achirkin
- batch_load_iterator shall copy data located in host memory (#926) @tfeher
- Fix kmeans::predict argument order (#915) @enp1s0
- ANN_BENCH: fix the reported core count (#896) @achirkin
- CUVS_ANN_BENCH_SINGLE_EXE: find the mg library (#890) @achirkin
- [FIX] Revert negated InnerProduct distance for NN Descent (#859) @jinsolp
- IVF-PQ tests: fix segfault when accessing empty lists (#838) @achirkin
- [CuVS-Java] Automate panama bindings generation, Include IVF_PQ parameters in CAGRA index parameters and other changes (#831) @narangvivek10
- Ann-bench: fix unsafe lazy blobs (#828) @achirkin
- Fix test_brute_force conversion (#821) @lowener
- [FEA] New algos and updates/corrections to Faiss cuvs-bench (#677) @tarang-jain
📖 Documentation
- All-neighbors API docs (#944) @jinsolp
- cagra.rst: fitered -> filtered (#866) @eli-b
- [DOCS] Fix Integration Docs (Faiss) (#782) @tarang-jain
🚀 New Features
- Add IVF-PQ support in CAGRA index params in Python (#918) @lowener
- [Feat] Expose C API for CAGRA
merge(#860) @rhdong - Use NCCL wheels from PyPI for CUDA 12 builds (#827) @divyegala
- Add support for half in CAGRA+HNSW (#813) @lowener
- [CI] Enable Java test in CI workflow (#805) @rhdong
- Wrapper for all-neighbors knn graph building (#785) @jinsolp
- Add support of half dtype in IVF-FLAT (#730) @lowener
- IVF-PQ: low-precision coarse search (#715) @achirkin
- [Feat] Add support of logical merge in Cagra (#713) @rhdong
🛠️ Improvements
- Update score calculation for CAGRA-Q instance selection (#938) @enp1s0
- [FEA] Use Native Brute Force for Sparse Pairwise KNN (#927) @tarang-jain
- use 'rapids-init-pip' in wheel CI, other CI changes (#917) @jameslamb
- ANN_BENCH: Avoid repeated calls to raft::get_device_for_address in CAGRA search (#908) @achirkin
- [Java] New off-heap Dataset support for CAGRA and Bruteforce (#902) @chatman
- Finish CUDA 12.9 migration and use branch-25.06 workflows (#901) @bdice
- Update to clang 20 (#898) @bdice
- get Java artifacts from GitHub Actions artifact store (#893) @jameslamb
- Quote head_rev in conda recipes (#892) @bdice
- [Java] Exposing merge API for multiple CAGRA indices (#891) @punAhuja
- Expose ivf-flat centers to python/c (#888) @benfred
- CUDA 12.9 use updated compression flags (#887) @robertmaynard
- Expose ivf-pq centers to python/c (#881) @benfred
- Accept host inputs in python for ivf-pq build and extend (#880) @benfred
- Add tiered_index support (#879) @benfred
- Exclude librmm.so from auditwheel (#878) @bdice
- update.version.sh: remove broken reference, skip most CI on PRs that only modify update-version.sh (#875) @jameslamb
- Add support for Python 3.13 (#874) @gforsyth
- chore: lower wheel size threshold (#872) @gforsyth
- [Java] Adding support for prefiltering in CAGRA (#870) @punAhuja
- Change snmg index to use updated multi gpu resource API (#869) @jinsolp
- run shellcheck on all files, other small pre-commit updates (#865) @jameslamb
- Fix IVF PQ build metric for CAGRA (#862) @lowener
- ANN_BENCH: Expose parallel_mode parameter of FAISS CPU IVF implementation (#861) @achirkin
- Specify matplotlib version (#839) @benfred
- Use random tmp names for index files in tests (#837) @achirkin
- Download build artifacts from Github for CI (#834) @VenkateshJaya
- Add NN-Descent return_distances functionality to python/C (#833) @benfred
- Optimize hnsw::from_cagra<GPU> (#826) @achirkin
- Use vendored RAPIDS.cmake in example code. (#824) @bdice
- refactor(rattler): enable strict channel priority for builds (#823) @gforsyth
- Reduce device memory usage for CAGRA's graph optimization process (2-hop detour counting) (#822) @anaruse
- [cuvs_bench] distinguish search label from build label in data_export.py (#818) @jiangyinzuo
- Vendor RAPIDS.cmake (#816) @bdice
- Update libcuvs libraft ver to 25.06 in conda env (#808) @jinsolp
- Moving NN Descent class and struct declarations to
nn_descent_gnnd.hpp(#803) @jinsolp - Remove
@rapidsai/cuvs-build-codeowners(#783) @KyleFromNVIDIA - Moving wheel builds to specified location and uploading build artifacts to Github (#777) @VenkateshJaya
- Remove unused raft cagra header in add_nodes.cuh (#741) @jiangyinzuo
- Expose kmeans to python (#729) @benfred
- Update cuvs to properly create a NCCL::NCCL target (#720) @robertmaynard
- Optimize euclidean distance in host refine phase (#689) @anstellaire
- Moving MG functions into unified API +
raft::device_resources_snmgas device resource type for MG functions (#454) @viclafargue - Moving random ball cover (#218) @cjnolet
v25.02.01
🚨 Breaking Changes
- [Fix] Various fixes for 25.02.01 point release (#695) @rhdong
- update pip devcontainers to UCX 1.18, small update-version.sh fixes (#604) @jameslamb
- Improve the performance of CAGRA new vector addition with the default params (#569) @enp1s0
- Update for raft logger changes (#540) @vyasr
🐛 Bug Fixes
- [Fix] Various fixes for 25.02.01 point release (#695) @rhdong
- Fix ann-bench dataset blob integer overflow leading to incorrect data copy beyond 4B elems (#671) @achirkin
- Fix ann-bench deadlocking on HNSW destruction due to task locks (#667) @achirkin
- cuvs-bench Fixes (#654) @tarang-jain
- Fix std::lock_guard use for gcc 14 support (#639) @enp1s0
- Fix indexing bug when using parallelism to build CPU hierarchy in HNSW (#620) @divyegala
- add runtime dependency on libcuvs in cuvs wheels (#615) @jameslamb
- Temporarily skip CUDA 11 wheel CI (#599) @bdice
- [Fix] l2_exp random fail in half-float32 mixed precision on self-neighboring (#596) @rhdong
- Add CAGRA InnerProduct test and fix a bug (#595) @enp1s0
- fix cuvs_bench.run --groups options (#592) @jiangyinzuo
- Fix cagra_hnsw serialization when dataset is not part of index (#591) @tfeher
- fix create_pointset for throughput mode (#589) @jiangyinzuo
- Fix the use of constexpr in the dynamic batching header (#582) @achirkin
- Reduce the recall threshold for IVF-PQ low-precision LUT inner product tests (#573) @achirkin
- Small fixes to docs and pairwise distances (#570) @cjnolet
- [BUG] Fix CAGRA graph optimization bug (#565) @enp1s0
- Fix broken link to python doc (#564) @lowener
- Fix cagra::extend error message (#532) @enp1s0
- Fix Grace-specific issues in CAGRA (#527) @achirkin
📖 Documentation
- add docs for nn_descent (#668) @Intron7
- Fixing small typo in cuvs bench docs (#586) @cjnolet
- Fix typos in README (#543) @nvanbenschoten
- Use nvidia-sphinx-theme for docs (#528) @benfred
🚀 New Features
- Add deep-100M to datasets.yaml for cuvs-bench (#670) @tarang-jain
- Expose configuration singleton as a global context for ann-bench algos (#647) @achirkin
- ANN_BENCH enhanced dataset support (#624) @achirkin
- [Feat] Add Support for Index
mergein CAGRA (#618) @rhdong - HNSW GPU hierarchy (#616) @divyegala
- CAGRA binary Hamming distance support (#610) @enp1s0
- Add cuda 12.8 support (#605) @robertmaynard
- Add support for refinement with
uint32_tindex type (#563) @lowener - [Feat] Support
bitsetfilter for Brute Force (#560) @rhdong - Remove upper bounds on cuda-python to allow 12.6.2 and 11.8.5 (#508) @bdice
🛠️ Improvements
- [Opt] add required content to cuvs_java
pom.xml(#731) @rhdong - Add filtering to python for ivf_flat (#664) @benfred
- Expose binary quantizer to C and Python (#660) @benfred
- Add telemetry (#652) @gforsyth
- Revert docs builds to CI latest tag. (#643) @bdice
- Add float16 support in python for cagra/brute_force/ivf_pq and scalar quantizer (#637) @benfred
- Expose NN-Descent to C and Python (#635) @benfred
- Revert CUDA 12.8 shared workflow branch changes (#630) @vyasr
- cuvs-java: Rework the api to be Java 21 friendly (#628) @ChrisHegarty
- Build and test with CUDA 12.8.0 (#621) @bdice
- Add Scalar Quantization to the c and python apis (#617) @benfred
- Iteratively build graph index (#612) @anaruse
- update pip devcontainers to UCX 1.18, small update-version.sh fixes (#604) @jameslamb
- Reduce CAGRA test runtime (#602) @bdice
- Revert "Temporarily skip CUDA 11 wheel CI" (#601) @bdice
- introduce libcuvs wheels (#594) @jameslamb
- Normalize whitespace (#593) @bdice
- Rename test to tests. (#590) @bdice
- Use cuda.bindings layout. (#588) @bdice
- run_cuvs_pytests.sh uses proper test dir (#584) @robertmaynard
- expose col-major bfknn to python (#575) @benfred
- Run cuvs-bench pytests and end-to-end tests in CI (#574) @dantegd
- Expose col-major pairwise distances to python (#572) @benfred
- Improve the performance of CAGRA new vector addition with the default params (#569) @enp1s0
- Improve filtering documentation (#568) @lowener
- Use GCC 13 in CUDA 12 conda builds. (#567) @bdice
- Allow brute_force::build to work on host matrix dataset (#562) @benfred
- FAISS with cuVS enabled in cuvs-bench (#561) @tarang-jain
- Vamana build improvement and added docs (#558) @bkarsin
- Support raft's logger targets (#557) @vyasr
- Get Breathe from conda again (#554) @vyasr
- Check if nightlies have succeeded recently enough (#548) @vyasr
- Add support for float16 to the python pairwise distance api (#547) @benfred
- Additional Distances for CAGRA C and Python API (#546) @tarang-jain
- remove setup.cfg files, other packaging cleanup (#544) @jameslamb
- Fix CI for python cuvs_bench (#541) @benfred
- Update for raft logger changes (#540) @vyasr
- Change brute_force api to match ivf*/cagra (#536) @benfred
- Branch 25.02 merge 24.12 (#526) @benfred
- Update cuda-python lower bounds to 12.6.2 / 11.8.5 (#524) @bdice
- Automatic adjustment of itopk size according to filtering rate (#509) @anaruse
- prefer system install of UCX in devcontainers (#501) @jameslamb
- Adapt to rmm logger changes (#499) @vyasr
- Require approval to run CI on draft PRs (#498) @bdice
- Remove RAFT BUILD_ANN_BENCH option (#497) @bdice
- Update example code fetching rapids-cmake to use CUVS instead of RAFT (#493) @bdice
- Improve multi-CTA algorithm (#492) @anaruse
- Add filtering for CAGRA to C API (#452) @ajit283
- Initial cut for a cuVS Java API (#450) @chatman
- Add breaking change workflow trigger (#442) @AyodeAwe
- Expose
extend()in C API (#276) @ajit283 - Go API - [WIP] (#212) @ajit283
v24.12.00
🚨 Breaking Changes
- HNSW CPU Hierarchy (#465) @divyegala
- Use dashes in cuvs-bench package name. (#417) @bdice
🐛 Bug Fixes
- Skip IVF-PQ packing test for lists with not enough data (#512) @achirkin
- [BUG] Fix CAGRA filter (#489) @enp1s0
- Add
kIsSingleSourcetoPairwiseDistanceEpilogueElementwise(#485) @KyleFromNVIDIA - Fix include errors, header, and unsafe locks in iface.hpp (#467) @achirkin
- Fix an OOB error in device-side cuvs::neighbors::refine and CAGRA kern_prune (#460) @achirkin
- Put a ceiling on cuda-python (#445) @bdice
- Enable NVTX in cuvs-cagra-search component (#439) @achirkin
- BUG: CAGRA multi-cta illegal access with bad queries (#438) @achirkin
- Fix index overflow in edge cases of CAGRA graph optimize (#435) @achirkin
- Fix correct call to brute force in generate groundtruth of cuvs-bench (#427) @dantegd
- Use Python for sccache hit rate computation. (#420) @bdice
- Add
clickpackage tocuvs-benchconda recipe (#408) @divyegala - Fix NVTX annotations (#400) @achirkin
📖 Documentation
- [Doc] Fix CAGRA search sample code (#484) @enp1s0
- Fix broken link in README.md references (#473) @Azurethi
- Adding tech stack to docs (#448) @cjnolet
- Fix Question Retrieval notebook (#352) @lowener
🚀 New Features
- Add C++ API scalar quantization (#494) @mfoerste4
- HNSW CPU Hierarchy (#465) @divyegala
- Add serialization API to brute-force (#461) @lowener
- Add Question Retrieval notebook using Milvus (#451) @lowener
- Migrate feature diff for NN Descent from RAFT to cuVS (#421) @divyegala
- Add --no-lap-sync cmd option to ann-bench (#405) @achirkin
- Add
InnerProductandCosineExpandedmetric support in NN Descent (#177) @divyegala
🛠️ Improvements
- Update cuvs to match raft's cutlass changes (#516) @vyasr
- add a README for wheels (#504) @jameslamb
- Move check_input_array from pylibraft (#474) @benfred
- use different wheel-size thresholds based on CUDA version (#469) @jameslamb
- Modify cuvs-bench to be able to generate ground truth in CPU systems (#466) @dantegd
- enforce wheel size limits, README formatting in CI (#464) @jameslamb
- Moving spectral embedding and kernel gramm APIs to cuVS (#463) @cjnolet
- Migrate sparse knn and distances code from raft (#457) @benfred
- Don't presume pointers location infers usability. (#441) @robertmaynard
- call
enable_testingin root CMakeLists.txt (#437) @robertmaynard - CAGRA tech debt: distance descriptor and workspace memory (#436) @achirkin
- Add ci run_ scripts needed for build infra (#434) @robertmaynard
- Use environment variables in cache hit rate computation. (#422) @bdice
- Use dashes in cuvs-bench package name. (#417) @bdice
- We need to enable the c_api by default (#416) @robertmaynard
- print sccache stats in builds (#413) @jameslamb
- make conda installs in CI stricter (#406) @jameslamb
- Ivf c example (#404) @abner-ma
- Prune workflows based on changed files (#392) @KyleFromNVIDIA
- [WIP] Add pinned memory resource to C API (#311) @ajit283
- Dynamic Batching (#261) @achirkin
v24.10.00
🐛 Bug Fixes
- Use 64 bit types for dataset size calculation in CAGRA graph optimizer (#380) @tfeher
- Remove EXPLICIT_INSTANTIATE_ONLY macros (#358) @achirkin
- Fix order of operations for cosine IVF Flat (#329) @lowener
- Exclude any kernel symbol that uses cutlass (#314) @benfred
- [Fix] pin raft dependent to rapidsai (#299) @rhdong
- Fix dataset dimension in IVF-PQ C wrappers (#292) @tfeher
- Fix python ivf-pq for int8/uint8 dtypes (#271) @benfred
- FP16 API for CAGRA and IVF-PQ (#264) @tfeher
📖 Documentation
- More doc updates for 24.10 (#396) @cjnolet
- fix 404 in documentation link in readme (#395) @benfred
- Improving getting started materials (#342) @cjnolet
- Fix broken examples link in README. (#326) @bdice
- Recommend
miniforgefor conda install (#325) @bdice
🚀 New Features
- Port remaining scripts to
cuvs_bench(#368) @divyegala - [Feat] Relative change with
bitsetAPI feature #2439 in raft (#350) @rhdong - cuvs_bench plotting functions (#347) @dantegd
- CosineExpanded Metric for IVF-PQ (normalize inputs) (#346) @tarang-jain
- Python API for CAGRA+HNSW (#246) @divyegala
- C API for CAGRA+HNSW (#240) @divyegala
- SNMG ANN (#231) @viclafargue
- [FEA] Support for half-float mixed precise in brute-force (#225) @rhdong
🛠️ Improvements
- Remove cuvs-cagra-search from cuvs_static link (#388) @benfred
- Add a static library for cuvs (#382) @benfred
- Put the ann-bench large_workspace_resource in managed memory (#372) @achirkin
- Add multigpu kmeans fit function (#348) @benfred
- Update update-version.sh to use packaging lib (#344) @AyodeAwe
- remove NCCL pins in build and test environments (#341) @jameslamb
- Vamana/DiskANN index build (#339) @bkarsin
- Use CI workflow branch 'branch-24.10' again (#331) @jameslamb
- fix style checks on Python 3.12 (#328) @jameslamb
- Update flake8 to 7.1.1. (#327) @bdice
- Add function for calculating the mutual_reachability_graph (#323) @benfred
- Simplify libcuvs conda recipe. (#322) @bdice
- Refactor dependencies.yaml to use depends-on pattern. (#321) @bdice
- Update Python versions in cuvs_bench pyproject.toml. (#318) @bdice
- Brute force knn tile size heuristic (#316) @mfoerste4
- Euclidean distance example (#315) @abner-ma
- Migrate trustworthiness and silhouette_score stats from RAFT (#313) @benfred
- Add support for Python 3.12 (#312) @jameslamb
- Add
managedoption for RMM Pool memory resource to C API (#305) @ajit283 - Update rapidsai/pre-commit-hooks (#303) @KyleFromNVIDIA
- Expose search function with pre-filter for ANN (#302) @lowener
- Drop Python 3.9 support (#301) @jameslamb
- Use CUDA math wheels (#298) @KyleFromNVIDIA
- Remove NumPy <2 pin (#297) @seberg
- CAGRA - separable compilation for distance computation (#296) @achirkin
- Updating example notebooks (#294) @cjnolet
- Add RMM Pool memory resource to C API (#285) @ajit283
- Update pre-commit hooks (#283) @KyleFromNVIDIA
- Improve update-version.sh (#282) @bdice
- Use tool.scikit-build.cmake.version, set scikit-build-core minimum-version (#280) @jameslamb
- Add cuvs_bench.run python code and build (#279) @dantegd
- Add cuvs-bench to dependencies and conda environments (#275) @dantegd
- Update pip devcontainers to UCX v1.17.0 (#262) @jameslamb
- Adding example for tuning build and search params using Optuna (#257) @dpadmanabhan03
- Fixed link to build docs and corrected ivf_flat_example (#255) @mmccarty
- Merge branch-24.08 into branch-24.10 (#254) @jameslamb
- Persistent CAGRA kernel (#215) @achirkin
- [FEA] Support for Cosine distance in IVF-Flat (#179) @lowener