Benchmarks
Performance of Eigen’s dense kernels measured against BLAS/LAPACK libraries, one machine and one
dataset per page, each with the conditions it was taken under: CPU, operating system, compiler and
flags, Eigen commit, library versions, thread count and method. Ratios between Eigen and a library are
formed on one machine with one build configuration; absolute rates are not comparable across pages.
Current results
- Intel Xeon Gold 6444Y, September 2026: twelve
BLAS/LAPACK operations in float and double against OpenBLAS 0.3.26 and native Intel oneMKL 2025.3,
with upstream BLIS 2.1 for the six BLAS operations; single thread, AVX-512, Eigen master
ab4f7316d.
- AMD Zen 5 (Ryzen AI MAX+ 395), September 2026: AXPY, DOT, GEMV, GEMM,
TRSM, SYRK, POTRF, GETRF, GEQRF, SYEV, GESDD and GEEV in float and double against OpenBLAS 0.3.26,
Intel oneMKL 2025.3 and AMD AOCL 5.2, single thread, AVX-512, Eigen master
15f227178.
- AMD Zen 5 (Ryzen AI MAX+ 395) limited to AVX2, September 2026: the
same operations, shapes and libraries with Eigen built for AVX2 and FMA and every library held to its
AVX2 kernels, Eigen master
15f227178.
- Apple M4 (Mac mini) with SME, September 2026: the same
operations and shapes against Apple Accelerate (macOS 27.0), Arm Performance Libraries 26.07 and
OpenBLAS 0.3.34, single thread, Eigen master
46a2d0c56 built with -mcpu=apple-m4, which selects
its SME matrix-product kernel.
- Apple M4 (Mac mini) with NEON, September 2026: the same cells with
Eigen built for NEON alone, against OpenBLAS, Eigen master
46a2d0c56. Accelerate and Arm Performance
Libraries cannot be held to NEON through documented means; the SME page has those comparisons.
Every page is produced by the comparison harness under benchmarks/comparison/ in the Eigen source
tree (in review as merge request
!2903), which validates each reference
library’s result against Eigen before timing it and records the full provenance of a run. The charts
are drawn from the raw result files by scripts/benchmarks/plot_comparison.py in the
website repository, where the result files behind
each page are kept beside its images. The plan and progress
are tracked in Eigen issue #3112.
Historical results (2009–2011)
These pages measured Eigen 2 and an early Eigen 3 with the BTL harness, which has since been removed
from the tree, against libraries that have all been superseded. They are kept as a record; the numbers
say nothing about current hardware or current Eigen.
Single-threaded BLAS (AXPY, DOT, GEMV, GEMM, TRSM, SYRK) and LAPACK (POTRF, GETRF, GEQRF, SYEV, GESDD, GEEV): Eigen master against OpenBLAS, Intel oneMKL and AMD AOCL on an AMD Ryzen AI MAX+ 395.
Single-threaded BLAS (AXPY, DOT, GEMV, GEMM, TRSM, SYRK) and LAPACK (POTRF, GETRF, GEQRF, SYEV, GESDD, GEEV): Eigen master against OpenBLAS, Intel oneMKL and AMD AOCL on an AMD Ryzen AI MAX+ 395, every library limited to AVX2 and FMA.
Single-threaded float and double BLAS/LAPACK comparisons on an Intel Xeon Gold 6444Y: Eigen against OpenBLAS and oneMKL, with upstream BLIS for BLAS.
Single-threaded BLAS (AXPY, DOT, GEMV, GEMM, TRSM, SYRK) and LAPACK (POTRF, GETRF, GEQRF, SYEV, GESDD, GEEV): Eigen master, built for the Apple M4 with its SME matrix-product kernel, against Apple Accelerate, Arm Performance Libraries and OpenBLAS on a Mac mini.
Single-threaded BLAS (AXPY, DOT, GEMV, GEMM, TRSM, SYRK) and LAPACK (POTRF, GETRF, GEQRF, SYEV, GESDD, GEEV): Eigen master built for NEON alone against OpenBLAS on an Apple M4 Mac mini.