Skip to content

Commit

Permalink
Initial ppc64le support
Browse files Browse the repository at this point in the history
Signed-off-by: mgiessing <[email protected]>
  • Loading branch information
mgiessing committed Oct 24, 2023
1 parent 69613c0 commit 5c6ca8d
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 2 deletions.
31 changes: 31 additions & 0 deletions cmake/libs/libfaiss.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,13 @@ if(__AARCH64)
target_link_libraries(knowhere_utils PUBLIC glog::glog)
endif()

# ToDo: Add distances_vsx.cc for powerpc64 SIMD acceleration
if(__PPC64)
set(UTILS_SRC src/simd/hook.cc src/simd/distances_ref.cc)
add_library(knowhere_utils STATIC ${UTILS_SRC})
target_link_libraries(knowhere_utils PUBLIC glog::glog)
endif()

if(LINUX)
set(BLA_VENDOR OpenBLAS)
endif()
Expand Down Expand Up @@ -125,3 +132,27 @@ if(__AARCH64)
${LAPACK_LIBRARIES} knowhere_utils)
target_compile_definitions(faiss PRIVATE FINTEGER=int)
endif()

if(__PPC64)
knowhere_file_glob(GLOB FAISS_AVX_SRCS thirdparty/faiss/faiss/impl/*avx.cpp)

list(REMOVE_ITEM FAISS_SRCS ${FAISS_AVX_SRCS})
add_library(faiss STATIC ${FAISS_SRCS})

target_compile_options(
faiss
PRIVATE $<$<COMPILE_LANGUAGE:CXX>:
-mcpu=native
-mvsx
-Wno-sign-compare
-Wno-unused-variable
-Wno-reorder
-Wno-unused-local-typedefs
-Wno-unused-function
-Wno-strict-aliasing>)

add_dependencies(faiss knowhere_utils)
target_link_libraries(faiss PUBLIC OpenMP::OpenMP_CXX ${BLAS_LIBRARIES}
${LAPACK_LIBRARIES} knowhere_utils)
target_compile_definitions(faiss PRIVATE FINTEGER=int)
endif()
5 changes: 3 additions & 2 deletions cmake/utils/platform_check.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,10 @@ include(CheckSymbolExists)
macro(detect_target_arch)
check_symbol_exists(__aarch64__ "" __AARCH64)
check_symbol_exists(__x86_64__ "" __X86_64)
check_symbol_exists(__powerpc64__ "" __PPC64)

if(NOT __AARCH64 AND NOT __X86_64)
message(FATAL "knowhere only support amd64 and arm64.")
if(NOT __AARCH64 AND NOT __X86_64 AND NOT __PPC64)
message(FATAL "knowhere only support amd64, ppc64 and arm64 architecture.")
endif()
endmacro()

Expand Down

0 comments on commit 5c6ca8d

Please sign in to comment.