@@ -44,20 +44,24 @@ endmacro()
4444# CMake's SWIG wrappers only allow tweaking certain settings at source level, so
4545# we duplicate the source in order to override the module name.
4646configure_file (swigfaiss.swig ${CMAKE_CURRENT_SOURCE_DIR} /swigfaiss_avx2.swig COPYONLY )
47+ configure_file (swigfaiss.swig ${CMAKE_CURRENT_SOURCE_DIR} /swigfaiss_avx512.swig COPYONLY )
4748
4849configure_swigfaiss(swigfaiss.swig)
4950configure_swigfaiss(swigfaiss_avx2.swig)
51+ configure_swigfaiss(swigfaiss_avx512.swig)
5052
5153if (TARGET faiss)
5254 # Manually add headers as extra dependencies of swigfaiss.
5355 set (SWIG_MODULE_swigfaiss_EXTRA_DEPS)
5456 foreach (h ${FAISS_HEADERS} )
5557 list (APPEND SWIG_MODULE_swigfaiss_EXTRA_DEPS "${faiss_SOURCE_DIR} /faiss/${h} " )
5658 list (APPEND SWIG_MODULE_swigfaiss_avx2_EXTRA_DEPS "${faiss_SOURCE_DIR} /faiss/${h} " )
59+ list (APPEND SWIG_MODULE_swigfaiss_avx512_EXTRA_DEPS "${faiss_SOURCE_DIR} /faiss/${h} " )
5760 endforeach ()
5861 foreach (h ${FAISS_GPU_HEADERS} )
5962 list (APPEND SWIG_MODULE_swigfaiss_EXTRA_DEPS "${faiss_SOURCE_DIR} /faiss/gpu/${h} " )
6063 list (APPEND SWIG_MODULE_swigfaiss_avx2_EXTRA_DEPS "${faiss_SOURCE_DIR} /faiss/gpu/${h} " )
64+ list (APPEND SWIG_MODULE_swigfaiss_avx512_EXTRA_DEPS "${faiss_SOURCE_DIR} /faiss/gpu/${h} " )
6165 endforeach ()
6266else ()
6367 find_package (faiss REQUIRED)
@@ -82,14 +86,28 @@ if(NOT FAISS_OPT_LEVEL STREQUAL "avx2")
8286 set_target_properties (swigfaiss_avx2 PROPERTIES EXCLUDE_FROM_ALL TRUE )
8387endif ()
8488
89+ set_property (SOURCE swigfaiss_avx512.swig
90+ PROPERTY SWIG_MODULE_NAME swigfaiss_avx512)
91+ swig_add_library(swigfaiss_avx512
92+ TYPE SHARED
93+ LANGUAGE python
94+ SOURCES swigfaiss_avx512.swig
95+ )
96+ set_property (TARGET swigfaiss_avx512 PROPERTY SWIG_COMPILE_OPTIONS -doxygen)
97+ if (NOT FAISS_OPT_LEVEL STREQUAL "avx512" )
98+ set_target_properties (swigfaiss_avx512 PROPERTIES EXCLUDE_FROM_ALL TRUE )
99+ endif ()
100+
85101if (NOT WIN32 )
86102 # NOTE: Python does not recognize the dylib extension.
87103 set_target_properties (swigfaiss PROPERTIES SUFFIX .so)
88104 set_target_properties (swigfaiss_avx2 PROPERTIES SUFFIX .so)
105+ set_target_properties (swigfaiss_avx512 PROPERTIES SUFFIX .so)
89106else ()
90107 # we need bigobj for the swig wrapper
91108 target_compile_options (swigfaiss PRIVATE /bigobj)
92109 target_compile_options (swigfaiss_avx2 PRIVATE /bigobj)
110+ target_compile_options (swigfaiss_avx512 PRIVATE /bigobj)
93111endif ()
94112
95113if (FAISS_ENABLE_GPU)
@@ -99,6 +117,7 @@ if(FAISS_ENABLE_GPU)
99117 endif ()
100118 target_link_libraries (swigfaiss PRIVATE CUDA::cudart $<$<BOOL :${FAISS_ENABLE_RAFT} >:raft::raft> $<$<BOOL :${FAISS_ENABLE_RAFT} >:nvidia::cutlass::cutlass>)
101119 target_link_libraries (swigfaiss_avx2 PRIVATE CUDA::cudart $<$<BOOL :${FAISS_ENABLE_RAFT} >:raft::raft> $<$<BOOL :${FAISS_ENABLE_RAFT} >:nvidia::cutlass::cutlass>)
120+ target_link_libraries (swigfaiss_avx512 PRIVATE CUDA::cudart $<$<BOOL :${FAISS_ENABLE_RAFT} >:raft::raft> $<$<BOOL :${FAISS_ENABLE_RAFT} >:nvidia::cutlass::cutlass>)
102121endif ()
103122
104123find_package (OpenMP REQUIRED)
@@ -117,10 +136,18 @@ target_link_libraries(swigfaiss_avx2 PRIVATE
117136 OpenMP::OpenMP_CXX
118137)
119138
139+ target_link_libraries (swigfaiss_avx512 PRIVATE
140+ faiss_avx512
141+ Python::Module
142+ Python::NumPy
143+ OpenMP::OpenMP_CXX
144+ )
145+
120146# Hack so that python_callbacks.h can be included as
121147# `#include <faiss/python/python_callbacks.h>`.
122148target_include_directories (swigfaiss PRIVATE ${PROJECT_SOURCE_DIR} /../..)
123149target_include_directories (swigfaiss_avx2 PRIVATE ${PROJECT_SOURCE_DIR} /../..)
150+ target_include_directories (swigfaiss_avx512 PRIVATE ${PROJECT_SOURCE_DIR} /../..)
124151
125152find_package (Python REQUIRED
126153 COMPONENTS Development NumPy
@@ -140,6 +167,7 @@ target_include_directories(faiss_python_callbacks PRIVATE ${Python_INCLUDE_DIRS}
140167
141168target_link_libraries (swigfaiss PRIVATE faiss_python_callbacks)
142169target_link_libraries (swigfaiss_avx2 PRIVATE faiss_python_callbacks)
170+ target_link_libraries (swigfaiss_avx512 PRIVATE faiss_python_callbacks)
143171
144172configure_file (setup.py setup.py COPYONLY )
145173configure_file (__init__.py __init__.py COPYONLY )
0 commit comments