diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 000000000..f60e31d3f --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,29 @@ +# Copyright 2025 Intel Corporation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +version: 2 +updates: + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "monthly" + commit-message: + prefix: "chore(actions)" + labels: + - dependencies + - actions + groups: + github-actions: + patterns: + - "*" diff --git a/.github/renovate.json b/.github/renovate.json deleted file mode 100644 index 93afd4a43..000000000 --- a/.github/renovate.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "$schema": "https://docs.renovatebot.com/renovate-schema.json", - "extends": [ - "config:recommended" - ] -} diff --git a/docker/x86_64/build-cpp-runtime-bindings.sh b/.github/scripts/build-cpp-runtime-bindings.sh similarity index 100% rename from docker/x86_64/build-cpp-runtime-bindings.sh rename to .github/scripts/build-cpp-runtime-bindings.sh diff --git a/docker/x86_64/test-cpp-runtime-bindings.sh b/.github/scripts/test-cpp-runtime-bindings.sh similarity index 58% rename from docker/x86_64/test-cpp-runtime-bindings.sh rename to .github/scripts/test-cpp-runtime-bindings.sh index 959756af1..f7008b022 100644 --- a/docker/x86_64/test-cpp-runtime-bindings.sh +++ b/.github/scripts/test-cpp-runtime-bindings.sh @@ -15,6 +15,9 @@ set -e +# Prefix can be set to validate on different architectures via SDE +RUN_PREFIX="${RUN_PREFIX:-}" + # Source environment setup (for compiler and MKL) source /etc/bashrc || true @@ -46,6 +49,29 @@ echo "-----------------------------------------------" echo " FAISS C++ tests: " ./tests/faiss_test --gtest_filter=SVS.* echo "-----------------------------------------------" +echo " FAISS-SVS C++ examples: " +make 10-SVS-Vamana-LVQ 11-SVS-Vamana-LeanVec +# Check if running on Intel hardware (LVQ/LeanVec require Intel-specific instructions) +if grep -q "GenuineIntel" /proc/cpuinfo; then + $RUN_PREFIX ./tutorial/cpp/10-SVS-Vamana-LVQ + $RUN_PREFIX ./tutorial/cpp/11-SVS-Vamana-LeanVec +else + echo "Non-Intel CPU detected - LVQ/LeanVec examples expected to fail" + set +e + ./tutorial/cpp/10-SVS-Vamana-LVQ + exit_code_10=$? + ./tutorial/cpp/11-SVS-Vamana-LeanVec + exit_code_11=$? + set -e + + if [ $exit_code_10 -ne 0 ] && [ $exit_code_11 -ne 0 ]; then + echo "XFAIL: Examples failed as expected on non-Intel hardware" + else + echo "UNEXPECTED: One or more tests passed on non-Intel hardware (exit codes: $exit_code_10, $exit_code_11)" + exit 1 + fi +fi +echo "-----------------------------------------------" echo " FAISS python bindings: " cd faiss/python/ python setup.py build @@ -53,3 +79,22 @@ echo "-----------------------------------------------" echo " FAISS python tests: " cd ../../../tests/ PYTHONPATH=../build/faiss/python/build/lib/ OMP_NUM_THREADS=8 python -m unittest test_svs_py.py +echo "-----------------------------------------------" +echo " FAISS-SVS python examples: " +cd ../tutorial/python/ +if grep -q "GenuineIntel" /proc/cpuinfo; then + PYTHONPATH=../../build/faiss/python/build/lib/ OMP_NUM_THREADS=8 $RUN_PREFIX python 11-SVS.py +else + echo "Non-Intel CPU detected - SVS python example expected to fail" + set +e + PYTHONPATH=../../build/faiss/python/build/lib/ OMP_NUM_THREADS=8 python 11-SVS.py + exit_code=$? + set -e + + if [ $exit_code -ne 0 ]; then + echo "XFAIL: Python example failed as expected on non-Intel hardware" + else + echo "UNEXPECTED: Python example passed on non-Intel hardware" + exit 1 + fi +fi diff --git a/.github/workflows/build-cpp-runtime-bindings.yml b/.github/workflows/build-cpp-runtime-bindings.yml index cd2ab3bc5..e4e1f65d1 100644 --- a/.github/workflows/build-cpp-runtime-bindings.yml +++ b/.github/workflows/build-cpp-runtime-bindings.yml @@ -44,7 +44,7 @@ jobs: fail-fast: false steps: - - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + - uses: actions/checkout@v6 - name: Build Docker image run: | @@ -58,17 +58,17 @@ jobs: -e ENABLE_LVQ_LEANVEC=${{ matrix.enable_lvq_leanvec }} \ -e SUFFIX=${{ matrix.suffix }} \ svs-manylinux228:latest \ - /bin/bash -c "chmod +x docker/x86_64/build-cpp-runtime-bindings.sh && ./docker/x86_64/build-cpp-runtime-bindings.sh" + /bin/bash .github/scripts/build-cpp-runtime-bindings.sh - name: Upload cpp runtime bindings artifacts - uses: actions/upload-artifact@v6 + uses: actions/upload-artifact@v4 with: name: svs-cpp-runtime-bindings${{ matrix.suffix }} path: svs-cpp-runtime-bindings${{ matrix.suffix }}.tar.gz retention-days: 7 # Reduce retention due to size - name: Upload conda package artifacts - uses: actions/upload-artifact@v6 + uses: actions/upload-artifact@v4 with: name: libsvs-runtime-conda${{ matrix.suffix }} path: conda-bld/linux-64/libsvs-runtime-*.conda @@ -81,7 +81,7 @@ jobs: -v ${{ github.workspace }}:/workspace \ -w /workspace \ svs-manylinux228:latest \ - /bin/bash -c "source /etc/bashrc || true && ctest --test-dir bindings/cpp/build_cpp_bindings/tests --output-on-failure --verbose" + /bin/bash -c "source /etc/bashrc || true && ctest --test-dir bindings/cpp/build_cpp_bindings/tests --output-on-failure --no-tests=error --verbose" # Run full test script using the built artifacts test: @@ -97,7 +97,7 @@ jobs: suffix: "-public-only" steps: - - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + - uses: actions/checkout@v6 - name: Build Docker image run: | @@ -105,7 +105,7 @@ jobs: # Need to download for a new job - name: Download conda package - uses: actions/download-artifact@v7 + uses: actions/download-artifact@v4 with: name: libsvs-runtime-conda${{ matrix.suffix }} path: runtime_conda @@ -122,4 +122,4 @@ jobs: -w /workspace \ -e SUFFIX=${{ matrix.suffix }} \ svs-manylinux228:latest \ - /bin/bash -c "chmod +x docker/x86_64/test-cpp-runtime-bindings.sh && ./docker/x86_64/test-cpp-runtime-bindings.sh" + /bin/bash .github/scripts/test-cpp-runtime-bindings.sh diff --git a/.github/workflows/build-linux-arm.yml b/.github/workflows/build-linux-arm.yml index 146a4d9bc..111dff250 100644 --- a/.github/workflows/build-linux-arm.yml +++ b/.github/workflows/build-linux-arm.yml @@ -45,7 +45,7 @@ jobs: cc: clang-15 steps: - - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + - uses: actions/checkout@v6 - name: Configure build working-directory: ${{ runner.temp }} diff --git a/.github/workflows/build-linux.yml b/.github/workflows/build-linux.yml index 8ca642acc..6a583ab14 100644 --- a/.github/workflows/build-linux.yml +++ b/.github/workflows/build-linux.yml @@ -67,7 +67,7 @@ jobs: ivf: ON steps: - - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + - uses: actions/checkout@v6 - name: Install MKL timeout-minutes: 5 run: | diff --git a/.github/workflows/build-macos.yaml b/.github/workflows/build-macos.yaml index 6b2e3641f..55cbc3c44 100644 --- a/.github/workflows/build-macos.yaml +++ b/.github/workflows/build-macos.yaml @@ -44,7 +44,7 @@ jobs: needs_prefix: true steps: - - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + - uses: actions/checkout@v6 - name: Install Compiler run: | diff --git a/.github/workflows/cibuildwheel.yml b/.github/workflows/cibuildwheel.yml index b3833d5ca..c7edce0d8 100644 --- a/.github/workflows/cibuildwheel.yml +++ b/.github/workflows/cibuildwheel.yml @@ -33,7 +33,7 @@ jobs: runs-on: ubuntu-22.04 steps: - - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + - uses: actions/checkout@v6 - name: Build Container run: | diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml index 5ee719ce8..6a186f15d 100644 --- a/.github/workflows/pre-commit.yml +++ b/.github/workflows/pre-commit.yml @@ -21,7 +21,7 @@ jobs: pre-commit: runs-on: ubuntu-24.04 steps: - - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + - uses: actions/checkout@v6 - uses: actions/setup-python@v6 with: python-version: '3.12' diff --git a/.github/workflows/skywalking-eyes.yml b/.github/workflows/skywalking-eyes.yml index d91409d6f..a67c83390 100644 --- a/.github/workflows/skywalking-eyes.yml +++ b/.github/workflows/skywalking-eyes.yml @@ -34,7 +34,7 @@ jobs: runs-on: ubuntu-24.04 steps: - name: Checkout code - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 + uses: actions/checkout@v6 - name: Run check uses: apache/skywalking-eyes/header@61275cc80d0798a405cb070f7d3a8aaf7cf2c2c1 # v0.8.0 with: diff --git a/bindings/cpp/CMakeLists.txt b/bindings/cpp/CMakeLists.txt index 122e5c8f7..00b5e51e1 100644 --- a/bindings/cpp/CMakeLists.txt +++ b/bindings/cpp/CMakeLists.txt @@ -98,14 +98,14 @@ if (SVS_RUNTIME_ENABLE_LVQ_LEANVEC) else() # Links to LTO-enabled static library, requires GCC/G++ 11.2 if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "11.2" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS "11.3") - set(SVS_URL "https://github.com/intel/ScalableVectorSearch/releases/download/v1.0.0-dev/svs-shared-library-1.0.0-NIGHTLY-20251119-807-lto.tar.gz" + set(SVS_URL "https://github.com/intel/ScalableVectorSearch/releases/download/v0.1.0/svs-shared-library-0.1.0-lto.tar.gz" CACHE STRING "URL to download SVS shared library") else() message(WARNING "Pre-built LVQ/LeanVec SVS library requires GCC/G++ v.11.2 to apply LTO optimizations." "Current compiler: ${CMAKE_CXX_COMPILER_ID} ${CMAKE_CXX_COMPILER_VERSION}" ) - set(SVS_URL "https://github.com/intel/ScalableVectorSearch/releases/download/v0.0.11/svs-shared-library-0.0.11.tar.gz" + set(SVS_URL "https://github.com/intel/ScalableVectorSearch/releases/download/v0.1.0/svs-shared-library-0.1.0.tar.gz" CACHE STRING "URL to download SVS shared library") endif() include(FetchContent) diff --git a/examples/cpp/shared/CMakeLists.txt b/examples/cpp/shared/CMakeLists.txt index 84002c23f..8875ec95b 100644 --- a/examples/cpp/shared/CMakeLists.txt +++ b/examples/cpp/shared/CMakeLists.txt @@ -24,7 +24,7 @@ find_package(svs QUIET) if(NOT svs_FOUND) # If sourcing from pip/conda, the following steps are not necessary, simplifying workflow # If not found, download tarball from GitHub release and follow steps to fetch and find - set(SVS_URL "https://github.com/intel/ScalableVectorSearch/releases/download/v0.0.11/svs-shared-library-0.0.11.tar.gz" CACHE STRINGS "URL to download SVS shared library tarball if not found in system") + set(SVS_URL "https://github.com/intel/ScalableVectorSearch/releases/download/v0.1.0/svs-shared-library-0.1.0.tar.gz" CACHE STRINGS "URL to download SVS shared library tarball if not found in system") message(STATUS "SVS not found in system, downloading from: ${SVS_URL}")