mirror of
https://gitlab.com/libeigen/eigen.git
synced 2026-04-10 11:34:33 +08:00
Reorganize benchmarks into subdirectories and clean up Eigen sources
libeigen/eigen!2176 Co-authored-by: Rasmus Munk Larsen <rmlarsen@gmail.com>
This commit is contained in:
@@ -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)
|
||||
|
||||
1
benchmarks/Cholesky/CMakeLists.txt
Normal file
1
benchmarks/Cholesky/CMakeLists.txt
Normal file
@@ -0,0 +1 @@
|
||||
eigen_add_benchmark(bench_cholesky bench_cholesky.cpp)
|
||||
7
benchmarks/Core/CMakeLists.txt
Normal file
7
benchmarks/Core/CMakeLists.txt
Normal file
@@ -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)
|
||||
@@ -1,6 +1,6 @@
|
||||
#include <benchmark/benchmark.h>
|
||||
#include <Eigen/Core>
|
||||
#include "../test/MovableScalar.h"
|
||||
#include "../../test/MovableScalar.h"
|
||||
#include <utility>
|
||||
|
||||
template <typename MatrixType>
|
||||
2
benchmarks/Eigenvalues/CMakeLists.txt
Normal file
2
benchmarks/Eigenvalues/CMakeLists.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
eigen_add_benchmark(bench_eigensolver bench_eigensolver.cpp)
|
||||
eigen_add_benchmark(bench_eig33 bench_eig33.cpp)
|
||||
1
benchmarks/FFT/CMakeLists.txt
Normal file
1
benchmarks/FFT/CMakeLists.txt
Normal file
@@ -0,0 +1 @@
|
||||
eigen_add_benchmark(bench_fft bench_fft.cpp)
|
||||
3
benchmarks/Geometry/CMakeLists.txt
Normal file
3
benchmarks/Geometry/CMakeLists.txt
Normal file
@@ -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)
|
||||
1
benchmarks/LU/CMakeLists.txt
Normal file
1
benchmarks/LU/CMakeLists.txt
Normal file
@@ -0,0 +1 @@
|
||||
# LU benchmarks will be added here.
|
||||
1
benchmarks/QR/CMakeLists.txt
Normal file
1
benchmarks/QR/CMakeLists.txt
Normal file
@@ -0,0 +1 @@
|
||||
# QR benchmarks will be added here.
|
||||
1
benchmarks/SVD/CMakeLists.txt
Normal file
1
benchmarks/SVD/CMakeLists.txt
Normal file
@@ -0,0 +1 @@
|
||||
eigen_add_benchmark(bench_svd bench_svd.cpp)
|
||||
1
benchmarks/Solvers/CMakeLists.txt
Normal file
1
benchmarks/Solvers/CMakeLists.txt
Normal file
@@ -0,0 +1 @@
|
||||
eigen_add_benchmark(bench_dense_solvers bench_dense_solvers.cpp)
|
||||
3
benchmarks/Sparse/CMakeLists.txt
Normal file
3
benchmarks/Sparse/CMakeLists.txt
Normal file
@@ -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)
|
||||
12
benchmarks/Tuning/CMakeLists.txt
Normal file
12
benchmarks/Tuning/CMakeLists.txt
Normal file
@@ -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)
|
||||
Reference in New Issue
Block a user