diff --git a/.github/workflows/build_and_test.yaml b/.github/workflows/build_and_test.yaml index d23310b1..36cd25fd 100644 --- a/.github/workflows/build_and_test.yaml +++ b/.github/workflows/build_and_test.yaml @@ -12,7 +12,7 @@ env: BUILD_TYPE: Debug jobs: - test: + test_quake: runs-on: ubuntu-latest container: image: ghcr.io/marius-team/quake/ubuntu-latest:latest @@ -44,4 +44,38 @@ jobs: test/cpp/quake_tests --gtest_filter=IndexPartitionTest.* test/cpp/quake_tests --gtest_filter=DynamicInvertedListTest.* test/cpp/quake_tests --gtest_filter=ListScanLatencyEstimatorTest.* - test/cpp/quake_tests --gtest_filter=DynamicIVFTest.* \ No newline at end of file + test/cpp/quake_tests --gtest_filter=DynamicIVFTest.* + test_quake_with_asan: + runs-on: ubuntu-latest + container: + image: ghcr.io/marius-team/quake/ubuntu-latest:latest + steps: + - uses: actions/checkout@v4 + with: + submodules: true + fetch-depth: 0 + + - name: Build project + run: | + git config --global --add safe.directory '*' + eval "$(conda shell.bash hook)" + conda activate test-env + mkdir -p build + cd build + cmake -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \ + -DQUAKE_USE_NUMA=OFF \ + -DQUAKE_ENABLE_GPU=OFF \ + -DBUILD_TESTS=ON \ + -DQUAKE_USE_AVX512=OFF \ + -DQUAKE_USE_ASAN=ON \ + ../ + make bindings -j2 + make quake_tests -j2 + + - name: Run tests + run: | + cd build + test/cpp/quake_tests --gtest_filter=IndexPartitionTest.* + test/cpp/quake_tests --gtest_filter=DynamicInvertedListTest.* +# test/cpp/quake_tests --gtest_filter=ListScanLatencyEstimatorTest.* +# test/cpp/quake_tests --gtest_filter=DynamicIVFTest.* \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index b0ab0e31..53e4c7f5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -155,16 +155,19 @@ endif() target_link_libraries(${PROJECT_NAME} PUBLIC ${LINK_LIBS}) +# --------------------------------------------------------------- +# Sanitizers +# --------------------------------------------------------------- IF(CMAKE_BUILD_TYPE MATCHES Debug AND QUAKE_USE_TSAN) message("Using thread sanitizer") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=thread") - set(CMAKE_MODULE_LINKER_FLAGS "{$CMAKE_MODULE_LINKER_FLAGS} -fsanitize=thread") -ENDIF(CMAKE_BUILD_TYPE MATCHES Debug AND QUAKE_USE_ASAN) + set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -fsanitize=thread") +ENDIF(CMAKE_BUILD_TYPE MATCHES Debug AND QUAKE_USE_TSAN) IF(CMAKE_BUILD_TYPE MATCHES Debug AND QUAKE_USE_ASAN) message("Using address sanitizer") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address -fsanitize=leak") - set(CMAKE_MODULE_LINKER_FLAGS "{$CMAKE_MODULE_LINKER_FLAGS} -fsanitize=address -fsanitize=leak") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address") + set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -fsanitize=address") ENDIF(CMAKE_BUILD_TYPE MATCHES Debug AND QUAKE_USE_ASAN) # --------------------------------------------------------------- @@ -212,14 +215,21 @@ endif() # --------------------------------------------------------------- message(STATUS "--------- Final Configuration Summary ---------") message(STATUS "Build type: ${CMAKE_BUILD_TYPE}") -message(STATUS "GPU Enabled: ${FAISS_ENABLE_GPU}") +message(STATUS "GPU Enabled: ${QUAKE_ENABLE_GPU}") +message(STATUS "AVX512 Enabled: ${QUAKE_USE_AVX512}") message(STATUS "NUMA Enabled: ${QUAKE_USE_NUMA}") message(STATUS "Python used: ${Python3_EXECUTABLE}") message(STATUS "Torch Path: ${TorchPath}") +message(STATUS "OpenMP Enabled: ${OpenMP_CXX_FOUND}") +message(STATUS "OpenMP CXX Flags: ${OpenMP_CXX_FLAGS}") message(STATUS "MKL_ARCH: ${MKL_ARCH}") message(STATUS "MKL_ROOT: ${MKL_ROOT}") message(STATUS "MKL_LINK: ${MKL_LINK}") message(STATUS "MKL_INTERFACE_FULL: ${MKL_INTERFACE_FULL}") message(STATUS "MKL_THREADING: ${MKL_THREADING}") message(STATUS "MKL_MPI: ${MKL_MPI}") +message(STATUS "CMAKE_CXX_FLAGS: ${CMAKE_CXX_FLAGS}") +message(STATUS "CMAKE_MODULE_LINKER_FLAGS: ${CMAKE_MODULE_LINKER_FLAGS}") +message(STATUS "Address Sanitizer: ${QUAKE_USE_ASAN}") +message(STATUS "Thread Sanitizer: ${QUAKE_USE_TSAN}") message(STATUS "------------------------------------------------") \ No newline at end of file