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.
The Xeon, Grace and DGX Spark pages are from September and early October and do not cover the five
operations added in October: TRMM, SYMM, PSTRF (Cholesky with diagonal pivoting, against Eigen’s LDLT),
SYTRF (Bunch-Kaufman) and GELS (least squares through Householder QR).
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, TRMM, SYMM, SYRK) and LAPACK (POTRF, PSTRF, SYTRF, GETRF, GEQRF, GELS, 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, TRMM, SYMM, SYRK) and LAPACK (POTRF, PSTRF, SYTRF, GETRF, GEQRF, GELS, 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 BLAS (AXPY, DOT, GEMV, GEMM, TRSM, TRMM, SYMM, SYRK) and LAPACK (POTRF, PSTRF, SYTRF, GETRF, GEQRF, GELS, SYEV, GESDD, GEEV): Eigen master with its SME kernels against Apple Accelerate, Arm Performance Libraries and OpenBLAS on an Apple M4 Mac mini.
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, TRMM, SYMM, SYRK) and LAPACK (POTRF, PSTRF, SYTRF, GETRF, GEQRF, GELS, SYEV, GESDD, GEEV): Eigen master built for NEON alone against OpenBLAS on an Apple M4 Mac mini.
Single-threaded BLAS (AXPY, DOT, GEMV, GEMM, TRSM, SYRK) and LAPACK (POTRF, GETRF, GEQRF, SYEV, GESDD, GEEV): Eigen master built for NEON against Arm Performance Libraries, NVPL and OpenBLAS on one core of an NVIDIA Grace (Arm Neoverse V2).
Single-threaded BLAS (AXPY, DOT, GEMV, GEMM, TRSM, SYRK) and LAPACK (POTRF, GETRF, GEQRF, SYEV, GESDD, GEEV): Eigen master built for SVE at a 128-bit vector length against Arm Performance Libraries, NVPL and OpenBLAS on one core of an NVIDIA Grace (Arm Neoverse V2).
Single-threaded BLAS (AXPY, DOT, GEMV, GEMM, TRSM, SYRK) and LAPACK (POTRF, GETRF, GEQRF, SYEV, GESDD, GEEV): Eigen master built for NEON against Arm Performance Libraries, NVPL and OpenBLAS on one Arm Cortex-X925 core of an NVIDIA DGX Spark.
Single-threaded BLAS (AXPY, DOT, GEMV, GEMM, TRSM, SYRK) and LAPACK (POTRF, GETRF, GEQRF, SYEV, GESDD, GEEV): Eigen master built for SVE at a 128-bit vector length against Arm Performance Libraries, NVPL and OpenBLAS on one Arm Cortex-X925 core of an NVIDIA DGX Spark.
Single-threaded BLAS (AXPY, DOT, GEMV, GEMM, TRSM, TRMM, SYMM, SYRK) and LAPACK (POTRF, PSTRF, SYTRF, GETRF, GEQRF, GELS, SYEV, GESDD, GEEV): Eigen master built for 64-bit Arm with NEON against OpenBLAS and Arm Performance Libraries on a Raspberry Pi 5.
Single-threaded BLAS (AXPY, DOT, GEMV, GEMM, TRSM, TRMM, SYMM, SYRK) and LAPACK (POTRF, PSTRF, SYTRF, GETRF, GEQRF, GELS, SYEV, GESDD, GEEV): Eigen master built for 32-bit Arm (armhf) with NEON against OpenBLAS on a Raspberry Pi 5.