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 5db72dd6a..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 59% rename from docker/x86_64/test-cpp-runtime-bindings.sh rename to .github/scripts/test-cpp-runtime-bindings.sh index f0251294c..7619a3c98 100644 --- a/docker/x86_64/test-cpp-runtime-bindings.sh +++ b/.github/scripts/test-cpp-runtime-bindings.sh @@ -43,6 +43,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 + ./tutorial/cpp/10-SVS-Vamana-LVQ + ./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 @@ -50,3 +73,22 @@ echo "-----------------------------------------------" echo " FAISS python tests: " cd ../../../tests/ PYTHONPATH=../build/faiss/python/build/lib/ OMP_NUM_THREADS=8 python -m unittest test_svs.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 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 81ba47ec0..5cf892843 100644 --- a/.github/workflows/build-cpp-runtime-bindings.yml +++ b/.github/workflows/build-cpp-runtime-bindings.yml @@ -58,10 +58,10 @@ 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 @@ -74,7 +74,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: @@ -98,7 +98,7 @@ jobs: # Need to download for a new job - name: Download shared libraries - uses: actions/download-artifact@v7 + uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.0.0 with: name: svs-cpp-runtime-bindings${{ matrix.suffix }} path: runtime_lib @@ -115,4 +115,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/pre-commit.yml b/.github/workflows/pre-commit.yml index 5ee719ce8..5853a3376 100644 --- a/.github/workflows/pre-commit.yml +++ b/.github/workflows/pre-commit.yml @@ -22,7 +22,7 @@ jobs: runs-on: ubuntu-24.04 steps: - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - - uses: actions/setup-python@v6 + - uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0 with: python-version: '3.12' - - uses: pre-commit/action@v3.0.1 + - uses: pre-commit/action@2c7b3805fd2a0fd8c1884dcaebf91fc102a13ecd # v3.0.1 diff --git a/.github/workflows/skywalking-eyes.yml b/.github/workflows/skywalking-eyes.yml index d91409d6f..619c83433 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@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 - 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}")