11add_executable (halide_benchmarks halide_benchmarks.cpp )
22target_compile_definitions (halide_benchmarks PRIVATE ENABLE_FTZ_DAZ )
33target_link_libraries (halide_benchmarks PRIVATE halide_blas Halide::Tools )
4- set (BENCHMARK_TARGETS halide_benchmarks)
4+ set (benchmark_targets halide_benchmarks)
55
66find_package (Eigen3 QUIET )
77set (Eigen3 Eigen3::Eigen)
@@ -18,39 +18,41 @@ if (TARGET ${Eigen3})
1818 add_executable (eigen_benchmarks eigen_benchmarks.cpp )
1919 target_compile_definitions (eigen_benchmarks PRIVATE EIGEN_DONT_PARALLELIZE ENABLE_FTZ_DAZ )
2020 target_link_libraries (eigen_benchmarks PRIVATE ${Eigen3} Halide::Tools )
21- list (APPEND BENCHMARK_TARGETS eigen_benchmarks)
21+ list (APPEND benchmark_targets eigen_benchmarks)
2222 message (STATUS "Eigen3: Found" )
2323else ()
2424 message (STATUS "Eigen3: Missing" )
2525endif ()
2626
27- foreach (BLAS_TARGET IN LISTS BLAS_TARGETS )
28- set (TARGET ${BLAS_TARGET } _benchmarks)
29- add_executable (${TARGET } cblas_benchmarks.cpp )
30- target_compile_definitions (${TARGET } PRIVATE "BLAS_NAME=\" ${BLAS_TARGET } \" " )
31- target_link_libraries (${TARGET } PRIVATE ${BLAS_TARGET} ::${BLAS_TARGET } Halide::Tools )
32- list (APPEND BENCHMARK_TARGETS ${TARGET } )
27+ foreach (blas IN LISTS FOUND_BLASES )
28+ set (blas_benchmarks " ${blas } _benchmarks" )
29+ add_executable (${blas_benchmarks } cblas_benchmarks.cpp )
30+ target_compile_definitions (${blas_benchmarks } PRIVATE "BLAS_NAME=\" ${blas } \" " )
31+ target_link_libraries (${blas_benchmarks } PRIVATE BLAS ::${blas } Halide::Tools )
32+ list (APPEND benchmark_targets ${blas_benchmarks } )
3333endforeach ()
3434
3535# Large powers of two are a pathological case for the cache, so avoid
3636# them for the benchmarks.
37- set (BLAS_LEVELS L1 L2 L3)
38- list (APPEND BENCHMARK_SIZES 64 128 256 512 1280 2560)
39- list (APPEND L1_BENCHMARKS scopy dcopy sscal dscal saxpy daxpy sdot ddot sasum dasum)
40- list (APPEND L2_BENCHMARKS sgemv_notrans dgemv_notrans sgemv_trans dgemv_trans sger dger)
41- list (APPEND L3_BENCHMARKS sgemm_notrans dgemm_notrans sgemm_transA dgemm_transA sgemm_transB dgemm_transB sgemm_transAB dgemm_transAB)
42-
43- foreach (TARGET IN LISTS BENCHMARK_TARGETS)
44- string (REPLACE "_benchmarks" "" BLA_VENDOR "${TARGET} " )
45- foreach (LEVEL IN LISTS BLAS_LEVELS)
46- foreach (FUNC IN LISTS ${LEVEL} _BENCHMARKS)
47- foreach (SIZE IN LISTS BENCHMARK_SIZES)
48- set (TEST_NAME ${BLA_VENDOR} _${FUNC} _${SIZE} )
49- add_test (NAME ${TEST_NAME}
50- COMMAND ${TARGET} ${FUNC} ${SIZE} )
51- set_tests_properties ("${TEST_NAME} " PROPERTIES
52- LABELS "linear_algebra;${BLA_VENDOR} ;${LEVEL} ;slow_tests"
53- PASS_REGULAR_EXPRESSION "${FUNC} [ \t ]+${SIZE} "
37+ set (blas_levels L1 L2 L3)
38+ list (APPEND benchmark_sizes 64 128 256 512 1280 2560)
39+ list (APPEND L1_functions scopy dcopy sscal dscal saxpy daxpy sdot ddot sasum dasum)
40+ list (APPEND L2_functions sgemv_notrans dgemv_notrans sgemv_trans dgemv_trans sger dger)
41+ list (APPEND L3_functions sgemm_notrans dgemm_notrans sgemm_transA dgemm_transA sgemm_transB dgemm_transB sgemm_transAB dgemm_transAB)
42+
43+ foreach (benchmark IN LISTS benchmark_targets)
44+ string (REPLACE "_benchmarks" "" vendor "${benchmark} " )
45+ foreach (level IN LISTS blas_levels)
46+ foreach (func IN LISTS ${level} _functions)
47+ foreach (size IN LISTS benchmark_sizes)
48+ set (test_name ${vendor} _${func} _${size} )
49+
50+ add_test (NAME ${test_name}
51+ COMMAND ${benchmark} ${func} ${size} )
52+
53+ set_tests_properties ("${test_name} " PROPERTIES
54+ LABELS "linear_algebra;${vendor} ;${level} ;slow_tests"
55+ PASS_REGULAR_EXPRESSION "${func} [ \t ]+${size} "
5456 SKIP_REGULAR_EXPRESSION "\\ [SKIP\\ ]" )
5557 endforeach ()
5658 endforeach ()
0 commit comments