diff --git a/benchmarks/CMakeLists.txt b/benchmarks/CMakeLists.txt index 9156bbdcc..7e1b349b1 100644 --- a/benchmarks/CMakeLists.txt +++ b/benchmarks/CMakeLists.txt @@ -2,6 +2,7 @@ cmake_minimum_required(VERSION 3.10) project(EigenBenchmarks CXX) find_package(benchmark REQUIRED) +find_package(BLAS QUIET) # Eigen is a header-only library; find it relative to this directory. set(EIGEN_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/..") @@ -10,6 +11,9 @@ set(EIGEN_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/..") # eigen_add_benchmark(name source [LIBRARIES lib1 lib2 ...] [DEFINITIONS def1 def2 ...]) function(eigen_add_benchmark name source) cmake_parse_arguments(BENCH "" "" "LIBRARIES;DEFINITIONS" ${ARGN}) + if(NOT IS_ABSOLUTE "${source}") + set(source "${CMAKE_CURRENT_SOURCE_DIR}/${source}") + endif() add_executable(${name} ${source}) target_include_directories(${name} PRIVATE ${EIGEN_SOURCE_DIR}) target_link_libraries(${name} PRIVATE benchmark::benchmark benchmark::benchmark_main) @@ -22,39 +26,14 @@ function(eigen_add_benchmark name source) endif() endfunction() -# --- Dense benchmarks --- -eigen_add_benchmark(bench_cholesky benchCholesky.cpp) -eigen_add_benchmark(bench_eigensolver benchEigenSolver.cpp) -eigen_add_benchmark(bench_fft benchFFT.cpp) -eigen_add_benchmark(bench_geometry_transforms benchGeometry.cpp) -eigen_add_benchmark(bench_vecadd benchVecAdd.cpp) -eigen_add_benchmark(bench_gemm benchGemm.cpp) -eigen_add_benchmark(bench_gemm_double benchGemm.cpp DEFINITIONS SCALAR=double) -eigen_add_benchmark(bench_gemv benchGemv.cpp) -eigen_add_benchmark(bench_move_semantics bench_move_semantics.cpp) -eigen_add_benchmark(bench_reverse bench_reverse.cpp) -eigen_add_benchmark(bench_dense_solvers dense_solvers.cpp) -eigen_add_benchmark(bench_trsm bench_trsm.cpp) -eigen_add_benchmark(bench_svd bench_svd.cpp) -eigen_add_benchmark(bench_eig33 eig33.cpp) -eigen_add_benchmark(bench_geometry geometry.cpp) -eigen_add_benchmark(bench_quatmul quatmul.cpp) - -# --- Sparse benchmarks --- -eigen_add_benchmark(bench_sparse_dense_product sparse_dense_product.cpp) -eigen_add_benchmark(bench_sparse_product sparse_product.cpp) -eigen_add_benchmark(bench_sparse_transpose sparse_transpose.cpp) - -# --- GEMM blocking parameter sweep --- -eigen_add_benchmark(bench_blocking_sizes benchmark_blocking_sizes.cpp) - -# --- AOCL benchmark (AOCL optional) --- -eigen_add_benchmark(bench_aocl benchmark_aocl.cpp) - -# Optional: BLAS GEMM comparison benchmark (requires CBLAS) -find_package(BLAS QUIET) -if(BLAS_FOUND) - eigen_add_benchmark(bench_blas_gemm benchBlasGemm.cpp - LIBRARIES ${BLAS_LIBRARIES} - DEFINITIONS HAVE_BLAS) -endif() +add_subdirectory(Core) +add_subdirectory(Cholesky) +add_subdirectory(LU) +add_subdirectory(QR) +add_subdirectory(SVD) +add_subdirectory(Eigenvalues) +add_subdirectory(Geometry) +add_subdirectory(Sparse) +add_subdirectory(FFT) +add_subdirectory(Solvers) +add_subdirectory(Tuning) diff --git a/benchmarks/Cholesky/CMakeLists.txt b/benchmarks/Cholesky/CMakeLists.txt new file mode 100644 index 000000000..8cf6a3c01 --- /dev/null +++ b/benchmarks/Cholesky/CMakeLists.txt @@ -0,0 +1 @@ +eigen_add_benchmark(bench_cholesky bench_cholesky.cpp) diff --git a/benchmarks/benchCholesky.cpp b/benchmarks/Cholesky/bench_cholesky.cpp similarity index 100% rename from benchmarks/benchCholesky.cpp rename to benchmarks/Cholesky/bench_cholesky.cpp diff --git a/benchmarks/Core/CMakeLists.txt b/benchmarks/Core/CMakeLists.txt new file mode 100644 index 000000000..9dbb4fad9 --- /dev/null +++ b/benchmarks/Core/CMakeLists.txt @@ -0,0 +1,7 @@ +eigen_add_benchmark(bench_gemm bench_gemm.cpp) +eigen_add_benchmark(bench_gemm_double bench_gemm.cpp DEFINITIONS SCALAR=double) +eigen_add_benchmark(bench_gemv bench_gemv.cpp) +eigen_add_benchmark(bench_vecadd bench_vecadd.cpp) +eigen_add_benchmark(bench_trsm bench_trsm.cpp) +eigen_add_benchmark(bench_reverse bench_reverse.cpp) +eigen_add_benchmark(bench_move_semantics bench_move_semantics.cpp) diff --git a/benchmarks/benchGemm.cpp b/benchmarks/Core/bench_gemm.cpp similarity index 100% rename from benchmarks/benchGemm.cpp rename to benchmarks/Core/bench_gemm.cpp diff --git a/benchmarks/benchGemv.cpp b/benchmarks/Core/bench_gemv.cpp similarity index 100% rename from benchmarks/benchGemv.cpp rename to benchmarks/Core/bench_gemv.cpp diff --git a/benchmarks/bench_move_semantics.cpp b/benchmarks/Core/bench_move_semantics.cpp similarity index 96% rename from benchmarks/bench_move_semantics.cpp rename to benchmarks/Core/bench_move_semantics.cpp index be3e99e8c..83d112bb9 100644 --- a/benchmarks/bench_move_semantics.cpp +++ b/benchmarks/Core/bench_move_semantics.cpp @@ -1,6 +1,6 @@ #include #include -#include "../test/MovableScalar.h" +#include "../../test/MovableScalar.h" #include template diff --git a/benchmarks/bench_reverse.cpp b/benchmarks/Core/bench_reverse.cpp similarity index 100% rename from benchmarks/bench_reverse.cpp rename to benchmarks/Core/bench_reverse.cpp diff --git a/benchmarks/bench_trsm.cpp b/benchmarks/Core/bench_trsm.cpp similarity index 100% rename from benchmarks/bench_trsm.cpp rename to benchmarks/Core/bench_trsm.cpp diff --git a/benchmarks/benchVecAdd.cpp b/benchmarks/Core/bench_vecadd.cpp similarity index 100% rename from benchmarks/benchVecAdd.cpp rename to benchmarks/Core/bench_vecadd.cpp diff --git a/benchmarks/Eigenvalues/CMakeLists.txt b/benchmarks/Eigenvalues/CMakeLists.txt new file mode 100644 index 000000000..0f4398bf1 --- /dev/null +++ b/benchmarks/Eigenvalues/CMakeLists.txt @@ -0,0 +1,2 @@ +eigen_add_benchmark(bench_eigensolver bench_eigensolver.cpp) +eigen_add_benchmark(bench_eig33 bench_eig33.cpp) diff --git a/benchmarks/eig33.cpp b/benchmarks/Eigenvalues/bench_eig33.cpp similarity index 100% rename from benchmarks/eig33.cpp rename to benchmarks/Eigenvalues/bench_eig33.cpp diff --git a/benchmarks/benchEigenSolver.cpp b/benchmarks/Eigenvalues/bench_eigensolver.cpp similarity index 100% rename from benchmarks/benchEigenSolver.cpp rename to benchmarks/Eigenvalues/bench_eigensolver.cpp diff --git a/benchmarks/FFT/CMakeLists.txt b/benchmarks/FFT/CMakeLists.txt new file mode 100644 index 000000000..2c80680cf --- /dev/null +++ b/benchmarks/FFT/CMakeLists.txt @@ -0,0 +1 @@ +eigen_add_benchmark(bench_fft bench_fft.cpp) diff --git a/benchmarks/benchFFT.cpp b/benchmarks/FFT/bench_fft.cpp similarity index 100% rename from benchmarks/benchFFT.cpp rename to benchmarks/FFT/bench_fft.cpp diff --git a/benchmarks/Geometry/CMakeLists.txt b/benchmarks/Geometry/CMakeLists.txt new file mode 100644 index 000000000..fd2c683a4 --- /dev/null +++ b/benchmarks/Geometry/CMakeLists.txt @@ -0,0 +1,3 @@ +eigen_add_benchmark(bench_transforms bench_transforms.cpp) +eigen_add_benchmark(bench_geometry bench_geometry.cpp) +eigen_add_benchmark(bench_quatmul bench_quatmul.cpp) diff --git a/benchmarks/geometry.cpp b/benchmarks/Geometry/bench_geometry.cpp similarity index 100% rename from benchmarks/geometry.cpp rename to benchmarks/Geometry/bench_geometry.cpp diff --git a/benchmarks/quatmul.cpp b/benchmarks/Geometry/bench_quatmul.cpp similarity index 100% rename from benchmarks/quatmul.cpp rename to benchmarks/Geometry/bench_quatmul.cpp diff --git a/benchmarks/benchGeometry.cpp b/benchmarks/Geometry/bench_transforms.cpp similarity index 100% rename from benchmarks/benchGeometry.cpp rename to benchmarks/Geometry/bench_transforms.cpp diff --git a/benchmarks/LU/CMakeLists.txt b/benchmarks/LU/CMakeLists.txt new file mode 100644 index 000000000..aa4e0fbf3 --- /dev/null +++ b/benchmarks/LU/CMakeLists.txt @@ -0,0 +1 @@ +# LU benchmarks will be added here. diff --git a/benchmarks/QR/CMakeLists.txt b/benchmarks/QR/CMakeLists.txt new file mode 100644 index 000000000..2a0bc0c7d --- /dev/null +++ b/benchmarks/QR/CMakeLists.txt @@ -0,0 +1 @@ +# QR benchmarks will be added here. diff --git a/benchmarks/SVD/CMakeLists.txt b/benchmarks/SVD/CMakeLists.txt new file mode 100644 index 000000000..7c37ab742 --- /dev/null +++ b/benchmarks/SVD/CMakeLists.txt @@ -0,0 +1 @@ +eigen_add_benchmark(bench_svd bench_svd.cpp) diff --git a/benchmarks/bench_svd.cpp b/benchmarks/SVD/bench_svd.cpp similarity index 100% rename from benchmarks/bench_svd.cpp rename to benchmarks/SVD/bench_svd.cpp diff --git a/benchmarks/Solvers/CMakeLists.txt b/benchmarks/Solvers/CMakeLists.txt new file mode 100644 index 000000000..8d505364f --- /dev/null +++ b/benchmarks/Solvers/CMakeLists.txt @@ -0,0 +1 @@ +eigen_add_benchmark(bench_dense_solvers bench_dense_solvers.cpp) diff --git a/benchmarks/dense_solvers.cpp b/benchmarks/Solvers/bench_dense_solvers.cpp similarity index 100% rename from benchmarks/dense_solvers.cpp rename to benchmarks/Solvers/bench_dense_solvers.cpp diff --git a/benchmarks/Sparse/CMakeLists.txt b/benchmarks/Sparse/CMakeLists.txt new file mode 100644 index 000000000..4ebb7db95 --- /dev/null +++ b/benchmarks/Sparse/CMakeLists.txt @@ -0,0 +1,3 @@ +eigen_add_benchmark(bench_spmv bench_spmv.cpp) +eigen_add_benchmark(bench_spmm bench_spmm.cpp) +eigen_add_benchmark(bench_sparse_transpose bench_sparse_transpose.cpp) diff --git a/benchmarks/sparse_transpose.cpp b/benchmarks/Sparse/bench_sparse_transpose.cpp similarity index 100% rename from benchmarks/sparse_transpose.cpp rename to benchmarks/Sparse/bench_sparse_transpose.cpp diff --git a/benchmarks/sparse_product.cpp b/benchmarks/Sparse/bench_spmm.cpp similarity index 100% rename from benchmarks/sparse_product.cpp rename to benchmarks/Sparse/bench_spmm.cpp diff --git a/benchmarks/sparse_dense_product.cpp b/benchmarks/Sparse/bench_spmv.cpp similarity index 100% rename from benchmarks/sparse_dense_product.cpp rename to benchmarks/Sparse/bench_spmv.cpp diff --git a/benchmarks/Tuning/CMakeLists.txt b/benchmarks/Tuning/CMakeLists.txt new file mode 100644 index 000000000..19872a82a --- /dev/null +++ b/benchmarks/Tuning/CMakeLists.txt @@ -0,0 +1,12 @@ +eigen_add_benchmark(bench_blocking_sizes bench_blocking_sizes.cpp) +eigen_add_benchmark(bench_aocl bench_aocl.cpp) + +if(BLAS_FOUND) + eigen_add_benchmark(bench_blas_gemm bench_blas_gemm.cpp + LIBRARIES ${BLAS_LIBRARIES} + DEFINITIONS HAVE_BLAS) +endif() + +add_executable(print_blocking print_blocking.cpp) +target_include_directories(print_blocking PRIVATE ${EIGEN_SOURCE_DIR}) +target_compile_options(print_blocking PRIVATE -O3 -DNDEBUG) diff --git a/benchmarks/benchmark_aocl.cpp b/benchmarks/Tuning/bench_aocl.cpp similarity index 100% rename from benchmarks/benchmark_aocl.cpp rename to benchmarks/Tuning/bench_aocl.cpp diff --git a/benchmarks/benchBlasGemm.cpp b/benchmarks/Tuning/bench_blas_gemm.cpp similarity index 100% rename from benchmarks/benchBlasGemm.cpp rename to benchmarks/Tuning/bench_blas_gemm.cpp diff --git a/benchmarks/benchmark_blocking_sizes.cpp b/benchmarks/Tuning/bench_blocking_sizes.cpp similarity index 100% rename from benchmarks/benchmark_blocking_sizes.cpp rename to benchmarks/Tuning/bench_blocking_sizes.cpp diff --git a/benchmarks/print_blocking.cpp b/benchmarks/Tuning/print_blocking.cpp similarity index 100% rename from benchmarks/print_blocking.cpp rename to benchmarks/Tuning/print_blocking.cpp