1212# the License.
1313# =============================================================================
1414
15+ list (APPEND CMAKE_MODULE_PATH "${CUVS_SOURCE_DIR} " )
16+
1517# ##################################################################################################
1618# * benchmark options ------------------------------------------------------------------------------
1719
@@ -39,31 +41,18 @@ option(CUVS_ANN_BENCH_SINGLE_EXE
3941
4042find_package (Threads REQUIRED )
4143
44+ set (CUVS_ANN_BENCH_USE_FAISS ON )
45+ set (CUVS_FAISS_ENABLE_GPU ON )
46+ set (CUVS_USE_FAISS_STATIC ON )
47+
4248if (BUILD_CPU_ONLY)
4349 set (CUVS_FAISS_ENABLE_GPU OFF )
44- set (CUVS_ANN_BENCH_USE_FAISS_GPU_FLAT OFF )
45- set (CUVS_ANN_BENCH_USE_FAISS_GPU_IVF_FLAT OFF )
46- set (CUVS_ANN_BENCH_USE_FAISS_GPU_IVF_PQ OFF )
4750 set (CUVS_ANN_BENCH_USE_CUVS_IVF_FLAT OFF )
4851 set (CUVS_ANN_BENCH_USE_CUVS_IVF_PQ OFF )
4952 set (CUVS_ANN_BENCH_USE_CUVS_CAGRA OFF )
5053 set (CUVS_ANN_BENCH_USE_CUVS_BRUTE_FORCE OFF )
5154 set (CUVS_ANN_BENCH_USE_CUVS_CAGRA_HNSWLIB OFF )
5255 set (CUVS_ANN_BENCH_USE_GGNN OFF )
53- else ()
54- set (CUVS_FAISS_ENABLE_GPU ON )
55- endif ()
56-
57- set (CUVS_ANN_BENCH_USE_FAISS OFF )
58- if (CUVS_ANN_BENCH_USE_FAISS_GPU_FLAT
59- OR CUVS_ANN_BENCH_USE_FAISS_GPU_IVF_PQ
60- OR CUVS_ANN_BENCH_USE_FAISS_GPU_IVF_FLAT
61- OR CUVS_ANN_BENCH_USE_FAISS_CPU_FLAT
62- OR CUVS_ANN_BENCH_USE_FAISS_CPU_IVF_PQ
63- OR CUVS_ANN_BENCH_USE_FAISS_CPU_IVF_FLAT
64- )
65- set (CUVS_ANN_BENCH_USE_FAISS ON )
66- set (CUVS_USE_FAISS_STATIC ON )
6756endif ()
6857
6958set (CUVS_ANN_BENCH_USE_CUVS OFF )
@@ -80,21 +69,17 @@ endif()
8069# * Fetch requirements -------------------------------------------------------------
8170
8271if (CUVS_ANN_BENCH_USE_HNSWLIB OR CUVS_ANN_BENCH_USE_CUVS_CAGRA_HNSWLIB)
83- include (cmake/thirdparty/get_hnswlib.cmake )
72+ include (cmake/thirdparty/get_hnswlib )
8473endif ()
8574
86- include (cmake/thirdparty/get_nlohmann_json.cmake )
75+ include (cmake/thirdparty/get_nlohmann_json )
8776
8877if (CUVS_ANN_BENCH_USE_GGNN)
89- include (cmake/thirdparty/get_ggnn.cmake )
78+ include (cmake/thirdparty/get_ggnn )
9079endif ()
9180
9281if (CUVS_ANN_BENCH_USE_FAISS)
93- # We need to ensure that faiss has all the conda information. So we currently use the very ugly
94- # hammer of `link_libraries` to ensure that all targets in this directory and the faiss directory
95- # will have the conda includes/link dirs
96- link_libraries ($<TARGET_NAME_IF_EXISTS :conda_env >)
97- include (cmake/thirdparty/get_faiss.cmake )
82+ include (cmake/thirdparty/get_faiss )
9883endif ()
9984
10085# ##################################################################################################
@@ -154,8 +139,6 @@ function(ConfigureAnnBench)
154139 $<$<BOOL :${GPU_BUILD} >:CUDA ::cudart_static >
155140 $<TARGET_NAME_IF_EXISTS :OpenMP ::OpenMP_CXX >
156141 $<TARGET_NAME_IF_EXISTS :conda_env >
157- -static-libgcc
158- -static-libstdc++
159142 )
160143
161144 set_target_properties (
@@ -210,131 +193,123 @@ endif()
210193
211194if (CUVS_ANN_BENCH_USE_HNSWLIB)
212195 ConfigureAnnBench (
213- NAME HNSWLIB PATH bench/ann/ src/hnswlib/hnswlib_benchmark.cpp LINKS hnswlib::hnswlib
196+ NAME HNSWLIB PATH src/hnswlib/hnswlib_benchmark.cpp LINKS hnswlib::hnswlib
214197 )
215198
216199endif ()
217200
218201if (CUVS_ANN_BENCH_USE_CUVS_IVF_PQ)
219202 ConfigureAnnBench (
220- NAME CUVS_IVF_PQ PATH bench/ann/src/cuvs/cuvs_benchmark.cu
221- $<$<BOOL :${CUVS_ANN_BENCH_USE_CUVS_IVF_PQ} >:bench /ann /src /cuvs /cuvs_ivf_pq .cu > LINKS cuvs
203+ NAME CUVS_IVF_PQ
204+ PATH
205+ src/cuvs/cuvs_benchmark.cu
206+ src/cuvs/cuvs_ivf_pq.cu
207+ LINKS cuvs
222208 )
223209endif ()
224210
225211if (CUVS_ANN_BENCH_USE_CUVS_IVF_FLAT)
226212 ConfigureAnnBench (
227- NAME CUVS_IVF_FLAT PATH bench/ann/src/cuvs/cuvs_benchmark.cu
228- $<$<BOOL :${CUVS_ANN_BENCH_USE_CUVS_IVF_FLAT} >:bench /ann /src /cuvs /cuvs_ivf_flat .cu > LINKS cuvs
213+ NAME CUVS_IVF_FLAT
214+ PATH
215+ src/cuvs/cuvs_benchmark.cu
216+ src/cuvs/cuvs_ivf_flat.cu
217+ LINKS
218+ cuvs
229219 )
230220endif ()
231221
232222if (CUVS_ANN_BENCH_USE_CUVS_BRUTE_FORCE)
233- ConfigureAnnBench (NAME CUVS_BRUTE_FORCE PATH bench/ann/ src/cuvs/cuvs_benchmark.cu LINKS cuvs )
223+ ConfigureAnnBench (NAME CUVS_BRUTE_FORCE PATH src/cuvs/cuvs_benchmark.cu LINKS cuvs )
234224endif ()
235225
236226if (CUVS_ANN_BENCH_USE_CUVS_CAGRA)
237227 ConfigureAnnBench (
238228 NAME
239229 CUVS_CAGRA
240230 PATH
241- bench/ann/ src/cuvs/cuvs_benchmark.cu
242- $<$< BOOL : ${CUVS_ANN_BENCH_USE_CUVS_CAGRA} >: bench / ann / src /cuvs /cuvs_cagra_float .cu >
243- $<$< BOOL : ${CUVS_ANN_BENCH_USE_CUVS_CAGRA} >: bench / ann / src /cuvs /cuvs_cagra_half .cu >
244- $<$< BOOL : ${CUVS_ANN_BENCH_USE_CUVS_CAGRA} >: bench / ann / src /cuvs /cuvs_cagra_int8_t .cu >
245- $<$< BOOL : ${CUVS_ANN_BENCH_USE_CUVS_CAGRA} >: bench / ann / src /cuvs /cuvs_cagra_uint8_t .cu >
231+ src/cuvs/cuvs_benchmark.cu
232+ src/cuvs/cuvs_cagra_float.cu
233+ src/cuvs/cuvs_cagra_half.cu
234+ src/cuvs/cuvs_cagra_int8_t.cu
235+ src/cuvs/cuvs_cagra_uint8_t.cu
246236 LINKS
247237 cuvs
248238 )
249239endif ()
250240
251241if (CUVS_ANN_BENCH_USE_CUVS_CAGRA_HNSWLIB)
252242 ConfigureAnnBench (
253- NAME CUVS_CAGRA_HNSWLIB PATH bench/ann/ src/cuvs/cuvs_cagra_hnswlib.cu LINKS cuvs
243+ NAME CUVS_CAGRA_HNSWLIB PATH src/cuvs/cuvs_cagra_hnswlib.cu LINKS cuvs
254244 hnswlib::hnswlib
255245 )
256246endif ()
257247
258- set (CUVS_FAISS_TARGETS faiss::faiss)
259- if (TARGET faiss::faiss_avx2)
260- set (CUVS_FAISS_TARGETS faiss::faiss_avx2)
261- endif ()
262-
263248message ("CUVS_FAISS_TARGETS: ${CUVS_FAISS_TARGETS} " )
264249message ("CUDAToolkit_LIBRARY_DIR: ${CUDAToolkit_LIBRARY_DIR} " )
265250if (CUVS_ANN_BENCH_USE_FAISS_CPU_FLAT)
266251 ConfigureAnnBench (
267- NAME FAISS_CPU_FLAT PATH bench/ann/ src/faiss/faiss_cpu_benchmark.cpp LINKS
252+ NAME FAISS_CPU_FLAT PATH src/faiss/faiss_cpu_benchmark.cpp LINKS
268253 ${CUVS_FAISS_TARGETS}
269254 )
270255endif ()
271256
272257if (CUVS_ANN_BENCH_USE_FAISS_CPU_IVF_FLAT)
273258 ConfigureAnnBench (
274- NAME FAISS_CPU_IVF_FLAT PATH bench/ann/ src/faiss/faiss_cpu_benchmark.cpp LINKS
259+ NAME FAISS_CPU_IVF_FLAT PATH src/faiss/faiss_cpu_benchmark.cpp LINKS
275260 ${CUVS_FAISS_TARGETS}
276261 )
277262endif ()
278263
279264if (CUVS_ANN_BENCH_USE_FAISS_CPU_IVF_PQ)
280265 ConfigureAnnBench (
281- NAME FAISS_CPU_IVF_PQ PATH bench/ann/ src/faiss/faiss_cpu_benchmark.cpp LINKS
266+ NAME FAISS_CPU_IVF_PQ PATH src/faiss/faiss_cpu_benchmark.cpp LINKS
282267 ${CUVS_FAISS_TARGETS}
283268 )
284269endif ()
285270
286- if (CUVS_ANN_BENCH_USE_FAISS_GPU_IVF_FLAT)
271+ if (CUVS_ANN_BENCH_USE_FAISS_GPU_IVF_FLAT AND CUVS_FAISS_ENABLE_GPU )
287272 ConfigureAnnBench (
288- NAME FAISS_GPU_IVF_FLAT PATH bench/ann/ src/faiss/faiss_gpu_benchmark.cu LINKS
273+ NAME FAISS_GPU_IVF_FLAT PATH src/faiss/faiss_gpu_benchmark.cu LINKS
289274 ${CUVS_FAISS_TARGETS}
290275 )
291276endif ()
292277
293- if (CUVS_ANN_BENCH_USE_FAISS_GPU_IVF_PQ)
278+ if (CUVS_ANN_BENCH_USE_FAISS_GPU_IVF_PQ AND CUVS_FAISS_ENABLE_GPU )
294279 ConfigureAnnBench (
295- NAME FAISS_GPU_IVF_PQ PATH bench/ann/ src/faiss/faiss_gpu_benchmark.cu LINKS
280+ NAME FAISS_GPU_IVF_PQ PATH src/faiss/faiss_gpu_benchmark.cu LINKS
296281 ${CUVS_FAISS_TARGETS}
297282 )
298283endif ()
299284
300- if (CUVS_ANN_BENCH_USE_FAISS_GPU_FLAT)
285+ if (CUVS_ANN_BENCH_USE_FAISS_GPU_FLAT AND CUVS_FAISS_ENABLE_GPU )
301286 ConfigureAnnBench (
302- NAME FAISS_GPU_FLAT PATH bench/ann/ src/faiss/faiss_gpu_benchmark.cu LINKS ${CUVS_FAISS_TARGETS}
287+ NAME FAISS_GPU_FLAT PATH src/faiss/faiss_gpu_benchmark.cu LINKS ${CUVS_FAISS_TARGETS}
303288 )
304289endif ()
305290
306291if (CUVS_ANN_BENCH_USE_GGNN)
307- include (cmake/thirdparty/get_glog.cmake )
292+ include (cmake/thirdparty/get_glog )
308293 ConfigureAnnBench (
309- NAME GGNN PATH bench/ann/ src/ggnn/ggnn_benchmark.cu LINKS glog::glog ggnn::ggnn CUDA::curand
294+ NAME GGNN PATH src/ggnn/ggnn_benchmark.cu LINKS glog::glog ggnn::ggnn CUDA::curand
310295 )
311296endif ()
312297
313298# ##################################################################################################
314299# * Dynamically-loading ANN_BENCH executable -------------------------------------------------------
315300if (CUVS_ANN_BENCH_SINGLE_EXE)
316- add_executable (ANN_BENCH bench/ann/src/common/benchmark.cpp )
317-
318- # Build and link static version of the GBench to keep ANN_BENCH self-contained.
319- get_target_property (TMP_PROP benchmark::benchmark SOURCES )
320- add_library (benchmark_static STATIC ${TMP_PROP} )
321- get_target_property (TMP_PROP benchmark::benchmark INCLUDE_DIRECTORIES )
322- target_include_directories (benchmark_static PUBLIC ${TMP_PROP} )
323- get_target_property (TMP_PROP benchmark::benchmark LINK_LIBRARIES )
324- target_link_libraries (benchmark_static PUBLIC ${TMP_PROP} )
301+ add_executable (ANN_BENCH src/common/benchmark.cpp )
325302
326303 target_include_directories (ANN_BENCH PRIVATE ${CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES} )
327304
328305 target_link_libraries (
329306 ANN_BENCH
330307 PRIVATE raft::raft
331308 nlohmann_json::nlohmann_json
332- benchmark_static
309+ benchmark::benchmark
333310 dl
334- -static-libgcc
335311 fmt::fmt-header-only
336312 spdlog::spdlog_header_only
337- -static-libstdc++
338313 $<$<BOOL :${NVTX3_HEADERS_FOUND} >:CUDA ::nvtx3 >
339314 )
340315 set_target_properties (
0 commit comments