Simplify GEBP micro-kernel and improve blocking heuristics

libeigen/eigen!2142

Co-authored-by: Rasmus Munk Larsen <rmlarsen@gmail.com>
This commit is contained in:
Rasmus Munk Larsen
2026-02-18 13:16:14 -08:00
parent e953f1e504
commit 552ca8f15f
3 changed files with 335 additions and 1131 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -804,6 +804,15 @@
// NOTE: Intel C++ Compiler Classic (icc) Version 19.0 and later supports dynamic allocation
// for over-aligned data, but not in a manner that is compatible with Eigen.
// See https://gitlab.com/libeigen/eigen/-/issues/2575
// Does the compiler support C++17 if constexpr?
#ifndef EIGEN_HAS_CXX17_IFCONSTEXPR
#if EIGEN_MAX_CPP_VER >= 17 && EIGEN_COMP_CXXVER >= 17 && \
((EIGEN_COMP_MSVC >= 1911) || (EIGEN_GNUC_STRICT_AT_LEAST(7, 0, 0)) || (EIGEN_CLANG_STRICT_AT_LEAST(3, 9, 0)) || \
(EIGEN_COMP_CLANGAPPLE && EIGEN_COMP_CLANGAPPLE >= 10000000))
#define EIGEN_HAS_CXX17_IFCONSTEXPR 1
#endif
#endif
#ifndef EIGEN_HAS_CXX17_OVERALIGN
#if EIGEN_MAX_CPP_VER >= 17 && EIGEN_COMP_CXXVER >= 17 && \
((EIGEN_COMP_MSVC >= 1912) || (EIGEN_GNUC_STRICT_AT_LEAST(7, 0, 0)) || (EIGEN_CLANG_STRICT_AT_LEAST(5, 0, 0)) || \

View File

@@ -44,6 +44,7 @@ eigen_add_benchmark(bench_quatmul quatmul.cpp)
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)
eigen_add_benchmark(bench_spmv spmv.cpp)
# --- GEMM blocking parameter sweep ---
eigen_add_benchmark(bench_blocking_sizes benchmark_blocking_sizes.cpp)