From 45ef563bda0ee3027fa951d484802ffe87c19742 Mon Sep 17 00:00:00 2001 From: Andy Lee Date: Mon, 1 Sep 2025 14:10:08 -0700 Subject: [PATCH] fix: Configure Faiss with SVE optimization for ARM64 builds MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Set FAISS_OPT_LEVEL to "sve" for ARM64 architecture - Disable x86-specific SIMD instructions (AVX2, AVX512, SSE4.1) - Use ARM64-native SVE optimization as per Faiss conda build scripts - Add architecture detection and proper configuration messages Fixes compilation error: "xmmintrin.h: No such file or directory" on ubuntu-24.04-arm runners. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- packages/leann-backend-hnsw/CMakeLists.txt | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/packages/leann-backend-hnsw/CMakeLists.txt b/packages/leann-backend-hnsw/CMakeLists.txt index 12e19ef..2eff141 100644 --- a/packages/leann-backend-hnsw/CMakeLists.txt +++ b/packages/leann-backend-hnsw/CMakeLists.txt @@ -49,9 +49,18 @@ set(BUILD_TESTING OFF CACHE BOOL "" FORCE) set(FAISS_ENABLE_C_API OFF CACHE BOOL "" FORCE) set(FAISS_OPT_LEVEL "generic" CACHE STRING "" FORCE) -# Disable additional SIMD versions to speed up compilation +# Disable x86-specific SIMD optimizations (important for ARM64 compatibility) set(FAISS_ENABLE_AVX2 OFF CACHE BOOL "" FORCE) set(FAISS_ENABLE_AVX512 OFF CACHE BOOL "" FORCE) +set(FAISS_ENABLE_SSE4_1 OFF CACHE BOOL "" FORCE) + +# ARM64-specific configuration +if(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|arm64") + message(STATUS "Configuring Faiss for ARM64 architecture") + # Use SVE optimization level for ARM64 (as seen in Faiss conda build) + set(FAISS_OPT_LEVEL "sve" CACHE STRING "" FORCE) + message(STATUS "Setting FAISS_OPT_LEVEL to 'sve' for ARM64") +endif() # Additional optimization options from INSTALL.md set(CMAKE_BUILD_TYPE "Release" CACHE STRING "" FORCE)