Skip to content
This repository was archived by the owner on Mar 6, 2026. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
220 changes: 95 additions & 125 deletions benchmarks/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,186 +1,156 @@
# Algebra plugins library, part of the ACTS project (R&D line)
#
# (c) 2023 CERN for the benefit of the ACTS project
# (c) 2023-2026 CERN for the benefit of the ACTS project
#
# Mozilla Public License Version 2.0

# Set the default C++ compiler flags.
include(algebra-plugins-compiler-options-cpp)

# Set up an INTERFACE library for the common header(s).
add_library(algebra_bench_common INTERFACE)
add_library(
algebra_bench_common
INTERFACE
"algebra/include/algebra/common/benchmark_base.hpp"
"algebra/include/algebra/common/benchmark_getter.hpp"
"algebra/include/algebra/common/benchmark_matrix.hpp"
"algebra/include/algebra/common/benchmark_transform3.hpp"
"algebra/include/algebra/common/benchmark_types.hpp"
"algebra/include/algebra/common/benchmark_vector.hpp"
"algebra/include/algebra/common/register_benchmark.hpp"
)

target_include_directories(
algebra_bench_common
INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}/common/include"
INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}/algebra/include/"
)

if("${CMAKE_CXX_COMPILER_ID}" MATCHES "MSVC")
target_compile_definitions(
algebra_bench_common
INTERFACE -D_USE_MATH_DEFINES
)
endif()

add_library(algebra::bench_common ALIAS algebra_bench_common)

# Set up all of the (available) "host" benchmarks.
add_library(algebra_bench_array INTERFACE)
target_include_directories(
algebra_bench_array
INTERFACE "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/array/include>"
)
target_link_libraries(
algebra_bench_array
INTERFACE algebra::array algebra::common
)
algebra_add_benchmark( array_getter
"array/array_getter.cpp"
LINK_LIBRARIES benchmark::benchmark algebra::bench_common
algebra_bench_array algebra::array
)
algebra_add_benchmark( array_vector
"array/array_vector.cpp"
LINK_LIBRARIES benchmark::benchmark algebra::bench_common
algebra_bench_array algebra::array
)
algebra_add_benchmark( array_transform3
"array/array_transform3.cpp"
LINK_LIBRARIES benchmark::benchmark algebra::bench_common
algebra_bench_array algebra::array
)
algebra_add_benchmark( array_matrix
"array/array_matrix.cpp"
LINK_LIBRARIES benchmark::benchmark algebra::bench_common
algebra_bench_array algebra::array
)
# Macro setting up the CPU benchmarks for a specific algebra plugin.
macro(algebra_add_benchmarks plugin)
string(TOUPPER ${plugin} PLUGIN)

add_library(
algebra_bench_${plugin}
INTERFACE
"algebra/include/algebra/${plugin}/data_generator.hpp"
)

if(ALGEBRA_PLUGINS_INCLUDE_EIGEN)
add_library(algebra_bench_eigen INTERFACE)
target_include_directories(
algebra_bench_eigen
INTERFACE "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/eigen/include>"
algebra_bench_${plugin}
INTERFACE
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/algebra/include>"
)

target_link_libraries(
algebra_bench_eigen
INTERFACE algebra::eigen algebra::common
algebra_bench_${plugin}
INTERFACE algebra::${plugin} algebra::common
)
algebra_add_benchmark(eigen_getter
"eigen/eigen_getter.cpp"
LINK_LIBRARIES benchmark::benchmark algebra::bench_common
algebra_bench_eigen algebra::eigen

algebra_add_benchmark( ${plugin}_getter
"algebra/src/benchmark_getter.cpp"
LINK_LIBRARIES benchmark::benchmark algebra::bench_common
algebra_bench_${plugin} algebra::${plugin}
)
algebra_add_benchmark(eigen_vector
"eigen/eigen_vector.cpp"
LINK_LIBRARIES benchmark::benchmark algebra::bench_common
algebra_bench_eigen algebra::eigen
target_compile_definitions(
algebra_benchmark_${plugin}_getter
PUBLIC ALGEBRA_BENCHMARK_${PLUGIN}
)
algebra_add_benchmark(eigen_transform3
"eigen/eigen_transform3.cpp"
LINK_LIBRARIES benchmark::benchmark algebra::bench_common
algebra_bench_eigen algebra::eigen

algebra_add_benchmark( ${plugin}_vector
"algebra/src/benchmark_vector.cpp"
LINK_LIBRARIES benchmark::benchmark algebra::bench_common
algebra_bench_${plugin} algebra::${plugin}
)
algebra_add_benchmark(eigen_matrix
"eigen/eigen_matrix.cpp"
LINK_LIBRARIES benchmark::benchmark algebra::bench_common
algebra_bench_eigen algebra::eigen
target_compile_definitions(
algebra_benchmark_${plugin}_vector
PUBLIC ALGEBRA_BENCHMARK_${PLUGIN}
)
endif()

if(ALGEBRA_PLUGINS_INCLUDE_VC)
add_library(algebra_bench_vc_aos INTERFACE)
target_include_directories(
algebra_bench_vc_aos
INTERFACE
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/vc_aos/include>"
algebra_add_benchmark( ${plugin}_transform3
"algebra/src/benchmark_transform3.cpp"
LINK_LIBRARIES benchmark::benchmark algebra::bench_common
algebra_bench_${plugin} algebra::${plugin}
)
target_link_libraries(
algebra_bench_vc_aos
INTERFACE algebra::vc_aos algebra::common
)
algebra_add_benchmark(vc_aos_getter
"vc_aos/vc_aos_getter.cpp"
LINK_LIBRARIES benchmark::benchmark algebra::bench_common
algebra_bench_vc_aos algebra::vc_aos
target_compile_definitions(
algebra_benchmark_${plugin}_transform3
PUBLIC ALGEBRA_BENCHMARK_${PLUGIN}
)
algebra_add_benchmark(vc_aos_vector
"vc_aos/vc_aos_vector.cpp"
LINK_LIBRARIES benchmark::benchmark algebra::bench_common
algebra_bench_vc_aos algebra::vc_aos

algebra_add_benchmark( ${plugin}_matrix
"algebra/src/benchmark_matrix.cpp"
LINK_LIBRARIES benchmark::benchmark algebra::bench_common
algebra_bench_${plugin} algebra::${plugin}
)
algebra_add_benchmark(vc_aos_transform3
"vc_aos/vc_aos_transform3.cpp"
LINK_LIBRARIES benchmark::benchmark algebra::bench_common
algebra_bench_vc_aos algebra::vc_aos
target_compile_definitions(
algebra_benchmark_${plugin}_matrix
PUBLIC ALGEBRA_BENCHMARK_${PLUGIN}
)
algebra_add_benchmark(vc_aos_matrix
"vc_aos/vc_aos_matrix.cpp"
LINK_LIBRARIES benchmark::benchmark algebra::bench_common
algebra_bench_vc_aos algebra::vc_aos
endmacro()

# Set up all of the (available) "host" benchmarks.
if(ALGEBRA_PLUGINS_INCLUDE_ARRAY)
algebra_add_benchmarks(array)
endif()

if(ALGEBRA_PLUGINS_INCLUDE_EIGEN)
algebra_add_benchmarks(eigen)
endif()

if(ALGEBRA_PLUGINS_INCLUDE_FASTOR)
algebra_add_benchmarks(fastor)
endif()

if(ALGEBRA_PLUGINS_INCLUDE_SMATRIX)
algebra_add_benchmarks(smatrix)
endif()

if(ALGEBRA_PLUGINS_INCLUDE_VC)
algebra_add_benchmarks(vc_aos)

add_library(
algebra_bench_vc_soa
INTERFACE
"algebra/include/algebra/vc_soa/data_generator.hpp"
)

add_library(algebra_bench_vc_soa INTERFACE)
target_include_directories(
algebra_bench_vc_soa
INTERFACE
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/vc_soa/include>"
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/algebra/include>"
)

target_link_libraries(
algebra_bench_vc_soa
INTERFACE algebra::vc_soa algebra::common
)

algebra_add_benchmark(vc_soa_getter
"vc_soa/vc_soa_getter.cpp"
"algebra/src/vc_soa/vc_soa_getter.cpp"
LINK_LIBRARIES benchmark::benchmark algebra::bench_common
algebra_bench_vc_soa algebra::vc_soa
)
algebra_add_benchmark(vc_soa_vector
"vc_soa/vc_soa_vector.cpp"
"algebra/src/vc_soa/vc_soa_vector.cpp"
LINK_LIBRARIES benchmark::benchmark algebra::bench_common
algebra_bench_vc_soa algebra::vc_soa
)
algebra_add_benchmark(vc_soa_transform3
"vc_soa/vc_soa_transform3.cpp"
"algebra/src/vc_soa/vc_soa_transform3.cpp"
LINK_LIBRARIES benchmark::benchmark algebra::bench_common
algebra_bench_vc_soa algebra::vc_soa
)
algebra_add_benchmark(vc_soa_matrix
"vc_soa/vc_soa_matrix.cpp"
"algebra/src/vc_soa/vc_soa_matrix.cpp"
LINK_LIBRARIES benchmark::benchmark algebra::bench_common
algebra_bench_vc_soa algebra::vc_soa
)
endif()

if(ALGEBRA_PLUGINS_INCLUDE_FASTOR)
add_library(algebra_bench_fastor INTERFACE)
message(
STATUS
"Include directory: ${CMAKE_CURRENT_SOURCE_DIR}/fastor/include"
)
target_include_directories(
algebra_bench_fastor
INTERFACE
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/fastor/include>"
)
target_link_libraries(
algebra_bench_fastor
INTERFACE algebra::fastor algebra::common
)
algebra_add_benchmark(fastor_getter
"fastor/fastor_getter.cpp"
LINK_LIBRARIES benchmark::benchmark algebra::bench_common
algebra_bench_fastor algebra::fastor
)
algebra_add_benchmark(fastor_vector
"fastor/fastor_vector.cpp"
LINK_LIBRARIES benchmark::benchmark algebra::bench_common
algebra_bench_fastor algebra::fastor
)
algebra_add_benchmark(fastor_transform3
"fastor/fastor_transform3.cpp"
LINK_LIBRARIES benchmark::benchmark algebra::bench_common
algebra_bench_fastor algebra::fastor
)
algebra_add_benchmark(fastor_matrix
"fastor/fastor_matrix.cpp"
LINK_LIBRARIES benchmark::benchmark algebra::bench_common
algebra_bench_fastor algebra::fastor
)
endif()
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
/** Algebra plugins library, part of the ACTS project
*
* (c) 2023 CERN for the benefit of the ACTS project
* (c) 2023-2026 CERN for the benefit of the ACTS project
*
* Mozilla Public License Version 2.0
*/
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
/** Algebra plugins library, part of the ACTS project
*
* (c) 2023 CERN for the benefit of the ACTS project
* (c) 2023-2026 CERN for the benefit of the ACTS project
*
* Mozilla Public License Version 2.0
*/

#pragma once

// Project include(s)
#include "benchmark_vector.hpp"
#include "register_benchmark.hpp"
#include "algebra/common/benchmark_vector.hpp"
#include "algebra/common/register_benchmark.hpp"

namespace algebra::bench_op { /* TODO: Implement */
} // namespace algebra::bench_op
Loading