From 1540b402b5552c19c5de524b98a0ab451a6911a2 Mon Sep 17 00:00:00 2001 From: meiravgri Date: Wed, 10 Dec 2025 11:47:26 +0000 Subject: [PATCH 1/2] point SVS to dev/fix-unmasked-read with svx fix to sanitztier crashes disable svs binaries --- cmake/svs.cmake | 2 ++ deps/ScalableVectorSearch | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/cmake/svs.cmake b/cmake/svs.cmake index d27ef8259..efbabd6c6 100644 --- a/cmake/svs.cmake +++ b/cmake/svs.cmake @@ -21,6 +21,7 @@ include(CMakeDependentOption) # elsewhere let user disable SVS cmake_dependent_option(USE_SVS "Build with SVS library support" ON "SVS_SUPPORTED" OFF) +set(SVS_LVQ_SUPPORTED 0) if(USE_SVS) message(STATUS "SVS support enabled") # Configure SVS build @@ -47,6 +48,7 @@ if(USE_SVS) endif() cmake_dependent_option(SVS_SHARED_LIB "Use SVS pre-compiled shared library" ON "USE_SVS AND GLIBC_FOUND AND SVS_LVQ_SUPPORTED" OFF) + set(SVS_SHARED_LIB OFF CACHE BOOL "Force disable SVS shared library" FORCE) if (CMAKE_CXX_COMPILER_ID MATCHES "Clang") if (GLIBC_2_28_FOUND) set(SVS_URL "https://github.com/intel/ScalableVectorSearch/releases/download/v0.0.11/svs-shared-library-0.0.11-reduced-clang.tar.gz" CACHE STRING "SVS URL") diff --git a/deps/ScalableVectorSearch b/deps/ScalableVectorSearch index d88aec879..f271dc97e 160000 --- a/deps/ScalableVectorSearch +++ b/deps/ScalableVectorSearch @@ -1 +1 @@ -Subproject commit d88aec87934952c935bbecb89aa1576dfcf2ed0e +Subproject commit f271dc97ed4e23b5c059014b90c27da20bbf017e From 7104c8eecaa09e1698388bab8303d0a98c6a378d Mon Sep 17 00:00:00 2001 From: meiravgri Date: Wed, 10 Dec 2025 12:11:54 +0000 Subject: [PATCH 2/2] Take Rafik's test from #858 --- tests/unit/test_svs.cpp | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/tests/unit/test_svs.cpp b/tests/unit/test_svs.cpp index c1dc27a8a..1915aabf8 100644 --- a/tests/unit/test_svs.cpp +++ b/tests/unit/test_svs.cpp @@ -3158,6 +3158,44 @@ TEST(SVSTest, scalar_quantization_query) { } } +TEST(SVSTest, compute_distance) { + // Test svs::distance computation for custom data allocations and alignments + using namespace svs::distance; + + const size_t dim = 4; + uint8_t *raw_a = (uint8_t *)malloc(dim * sizeof(float) + 1); + uint8_t *raw_b = (uint8_t *)malloc(dim * sizeof(float) + 1); + float *a = reinterpret_cast(raw_a + 1); + float *b = reinterpret_cast(raw_b + 1); + // float* a = (float*)malloc(dim * sizeof(float) + 1); + // float* b = (float*)malloc(dim * sizeof(float) + 1); + + for (size_t i = 0; i < dim; i++) { + a[i] = static_cast(i); + b[i] = static_cast(i * 2); + } + + auto dist_l2 = svs::distance::compute(svs::DistanceL2{}, std::span(a, dim), std::span(b, dim)); + auto dist_ip = svs::distance::compute(svs::DistanceIP{}, std::span(a, dim), std::span(b, dim)); + + auto dist_l2_avx2 = + svs::distance::L2Impl::compute(a, b, + svs::lib::MaybeStatic( + dim)); + auto dist_ip_avx2 = + svs::distance::IPImpl::compute(a, b, + svs::lib::MaybeStatic( + dim)); + + EXPECT_DOUBLE_EQ(dist_l2, dist_l2_avx2); + EXPECT_DOUBLE_EQ(dist_ip, dist_ip_avx2); + + free(raw_a); + free(raw_b); +} + #else // HAVE_SVS TEST(SVSTest, svs_not_supported) {