Adding basic support of benchmarks into CMake for single, double, single complex and double complex cases. Each benchmarking target has a suffix to identify the data type, for example ./benchmark_gemm3m_COMPLEX_DOUBLE is a gemm3m.c source compiled with COMPLEX and DOUBLE macros defined
This commit is contained in:
parent
b1ae777afb
commit
8698f9e37f
|
@ -452,6 +452,34 @@ if (BUILD_SHARED_LIBS AND NOT ${SYMBOLPREFIX}${SYMBOLSUFFIX} STREQUAL "")
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if (BUILD_TESTING)
|
||||||
|
find_package(OpenMP REQUIRED)
|
||||||
|
file(GLOB SOURCES "benchmark/*.c")
|
||||||
|
foreach(source ${SOURCES})
|
||||||
|
get_filename_component(name ${source} NAME_WE)
|
||||||
|
if ((NOT ${name} STREQUAL "zdot-intel") AND (NOT ${name} STREQUAL "cula_wrapper"))
|
||||||
|
set(defines DEFAULT COMPLEX DOUBLE "COMPLEX\;DOUBLE")
|
||||||
|
foreach(define ${defines})
|
||||||
|
set(target_name "benchmark_${name}")
|
||||||
|
if (NOT "${define}" STREQUAL "DEFAULT")
|
||||||
|
string(JOIN "_" define_str ${define})
|
||||||
|
set(target_name "${target_name}_${define_str}")
|
||||||
|
endif()
|
||||||
|
if ((NOT ${target_name} STREQUAL "benchmark_imax_COMPLEX") AND (NOT ${target_name} STREQUAL "benchmark_imax_COMPLEX_DOUBLE") AND
|
||||||
|
(NOT ${target_name} STREQUAL "benchmark_imin_COMPLEX") AND (NOT ${target_name} STREQUAL "benchmark_imin_COMPLEX_DOUBLE") AND
|
||||||
|
(NOT ${target_name} STREQUAL "benchmark_max_COMPLEX") AND (NOT ${target_name} STREQUAL "benchmark_max_COMPLEX_DOUBLE") AND
|
||||||
|
(NOT ${target_name} STREQUAL "benchmark_min_COMPLEX") AND (NOT ${target_name} STREQUAL "benchmark_min_COMPLEX_DOUBLE"))
|
||||||
|
add_executable(${target_name} ${source})
|
||||||
|
target_include_directories(${target_name} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR})
|
||||||
|
target_link_libraries(${target_name} ${OpenBLAS_LIBNAME} OpenMP::OpenMP_C)
|
||||||
|
if (NOT "${define}" STREQUAL "DEFAULT")
|
||||||
|
target_compile_definitions(${target_name} PRIVATE ${define})
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
endforeach()
|
||||||
|
endif()
|
||||||
|
endforeach()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
|
||||||
# Install project
|
# Install project
|
||||||
|
|
Loading…
Reference in New Issue