Skip to content

Commit 8698f9e

Browse files
committed
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
1 parent b1ae777 commit 8698f9e

1 file changed

Lines changed: 28 additions & 0 deletions

File tree

CMakeLists.txt

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -452,6 +452,34 @@ if (BUILD_SHARED_LIBS AND NOT ${SYMBOLPREFIX}${SYMBOLSUFFIX} STREQUAL "")
452452
endif()
453453
endif()
454454
455+
if (BUILD_TESTING)
456+
find_package(OpenMP REQUIRED)
457+
file(GLOB SOURCES "benchmark/*.c")
458+
foreach(source ${SOURCES})
459+
get_filename_component(name ${source} NAME_WE)
460+
if ((NOT ${name} STREQUAL "zdot-intel") AND (NOT ${name} STREQUAL "cula_wrapper"))
461+
set(defines DEFAULT COMPLEX DOUBLE "COMPLEX\;DOUBLE")
462+
foreach(define ${defines})
463+
set(target_name "benchmark_${name}")
464+
if (NOT "${define}" STREQUAL "DEFAULT")
465+
string(JOIN "_" define_str ${define})
466+
set(target_name "${target_name}_${define_str}")
467+
endif()
468+
if ((NOT ${target_name} STREQUAL "benchmark_imax_COMPLEX") AND (NOT ${target_name} STREQUAL "benchmark_imax_COMPLEX_DOUBLE") AND
469+
(NOT ${target_name} STREQUAL "benchmark_imin_COMPLEX") AND (NOT ${target_name} STREQUAL "benchmark_imin_COMPLEX_DOUBLE") AND
470+
(NOT ${target_name} STREQUAL "benchmark_max_COMPLEX") AND (NOT ${target_name} STREQUAL "benchmark_max_COMPLEX_DOUBLE") AND
471+
(NOT ${target_name} STREQUAL "benchmark_min_COMPLEX") AND (NOT ${target_name} STREQUAL "benchmark_min_COMPLEX_DOUBLE"))
472+
add_executable(${target_name} ${source})
473+
target_include_directories(${target_name} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR})
474+
target_link_libraries(${target_name} ${OpenBLAS_LIBNAME} OpenMP::OpenMP_C)
475+
if (NOT "${define}" STREQUAL "DEFAULT")
476+
target_compile_definitions(${target_name} PRIVATE ${define})
477+
endif()
478+
endif()
479+
endforeach()
480+
endif()
481+
endforeach()
482+
endif()
455483
456484
457485
# Install project

0 commit comments

Comments
 (0)