@@ -72,11 +72,22 @@ else ()
7272 set (_SHOULD_USE_INTEL_TBB OFF )
7373endif ()
7474
75+ # Probe for BLAS support
76+ set (CMAKE_FIND_LIBRARY_PREFIXES ";lib" )
77+ find_package (BLAS QUIET )
78+ if (BLAS_FOUND)
79+ set (_SHOULD_USE_BLAS ON )
80+ else ()
81+ set (_SHOULD_USE_BLAS OFF )
82+ endif ()
83+
7584option (USE_INTEL_TBB "Use Intel TBB for parallel STL algorithms" ${_SHOULD_USE_INTEL_TBB} )
7685option (USE_NVIDIA_CCCL "Use Nvidia CCCL for CUDA acceleration" ${_SHOULD_USE_NVIDIA_CCCL} )
86+ option (USE_BLAS "Use BLAS for linear algebra" ${_SHOULD_USE_BLAS} )
7787
7888message (STATUS "USE_INTEL_TBB: ${USE_INTEL_TBB} " )
7989message (STATUS "USE_NVIDIA_CCCL: ${USE_NVIDIA_CCCL} " )
90+ message (STATUS "USE_BLAS: ${USE_BLAS} " )
8091
8192# ------------------------------------------------------------------------------
8293# Dependencies
@@ -102,13 +113,14 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -w")
102113# ~~~
103114#
104115# Moreover, CMake sometimes fails to find it on Windows: https://stackoverflow.com/a/78335726/2766161
105- set ( CMAKE_FIND_LIBRARY_PREFIXES ";lib" )
106- find_package (BLAS REQUIRED)
116+ if (USE_BLAS )
117+ find_package (BLAS REQUIRED)
107118
108- include (CheckFunctionExists)
109- check_function_exists(openblas_set_num_threads LESS_SLOW_HAS_OPENBLAS_SET_NUM_THREADS)
110- if (LESS_SLOW_HAS_OPENBLAS_SET_NUM_THREADS)
111- add_definitions (-DLESS_SLOW_HAS_OPENBLAS_SET_NUM_THREADS)
119+ include (CheckFunctionExists)
120+ check_function_exists(openblas_set_num_threads LESS_SLOW_HAS_OPENBLAS_SET_NUM_THREADS)
121+ if (LESS_SLOW_HAS_OPENBLAS_SET_NUM_THREADS)
122+ add_definitions (-D LESS_SLOW_HAS_OPENBLAS_SET_NUM_THREADS)
123+ endif ()
112124endif ()
113125
114126# GTest (required by Google Benchmark)
@@ -346,7 +358,7 @@ if (CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64|amd64|AMD64|x64")
346358elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|ARM64|arm64" )
347359 if (APPLE )
348360 set (CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} -march=armv8.6-a+bf16" )
349- endif ()
361+ endif ()
350362 set_source_files_properties (less_slow_aarch64.S PROPERTIES LANGUAGE ASM)
351363 target_sources (less_slow PRIVATE less_slow_aarch64.S)
352364endif ()
@@ -431,6 +443,7 @@ endif ()
431443# ------------------------------------------------------------------------------
432444target_compile_definitions (less_slow PRIVATE USE_NVIDIA_CCCL=$<BOOL :${USE_NVIDIA_CCCL} >)
433445target_compile_definitions (less_slow PRIVATE USE_INTEL_TBB=$<BOOL :${USE_INTEL_TBB} >)
446+ target_compile_definitions (less_slow PRIVATE USE_BLAS=$<BOOL :${USE_BLAS} >)
434447target_link_libraries (
435448 less_slow
436449 PRIVATE Threads::Threads
@@ -448,9 +461,12 @@ target_link_libraries(
448461 absl::flat_hash_map
449462 nlohmann_json::nlohmann_json
450463 Eigen3::Eigen
451- ${BLAS_LIBRARIES}
452464)
453465
466+ if (USE_BLAS)
467+ target_link_libraries (less_slow PRIVATE ${BLAS_LIBRARIES} )
468+ endif ()
469+
454470if (CMAKE_SYSTEM_NAME STREQUAL "Linux" )
455471 # target_include_directories(less_slow PRIVATE ${LIBURING_INCLUDE_DIRS})
456472 target_link_libraries (less_slow PRIVATE ${LIBURING_LIBRARIES} )
0 commit comments