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), October 2026: AXPY, DOT, GEMV, GEMM, TRSM, TRMM, SYMM, SYRK, POTRF, PSTRF, SYTRF, GETRF, GEQRF, GELS, SYEV, GESDD and GEEV in float and double against OpenBLAS 0.3.32, Intel oneMKL 2025.3 and AMD AOCL 5.2, single thread, AVX-512, Eigen master 674e4a4e5.
  • AMD Zen 5 (Ryzen AI MAX+ 395) limited to AVX2, October 2026: the same operations, shapes and libraries, now with TRMM, SYMM, PSTRF, SYTRF and GELS, with Eigen built for AVX2 and FMA and every library held to its AVX2 kernels, Eigen master 674e4a4e5.
  • NVIDIA DGX Spark (Arm Cortex-X925) with NEON, October 2026: the same operations and shapes on one Cortex-X925 core of its GB10 chip (10 Cortex-X925 + 10 Cortex-A725 cores) against Arm Performance Libraries 26.07, NVPL 26.5 and OpenBLAS 0.3.34, single thread, Eigen master 210e0a609 built for the default Armv8-A target, so every kernel is Eigen’s NEON code.
  • NVIDIA DGX Spark (Arm Cortex-X925) with SVE, October 2026: the same cells with Eigen built for SVE at the CPU’s 128-bit vector length, against the NEON page’s library measurements, Eigen master 210e0a609.
  • Apple M4 (Mac mini) with SME, October 2026: the same operations and shapes against Apple Accelerate (macOS 27.0.1), Arm Performance Libraries 26.07 and OpenBLAS 0.3.34, single thread, Eigen master 674e4a4e5 built with -mcpu=apple-m4, which selects its SME kernels.
  • Apple M4 (Mac mini) with NEON, October 2026: the same cells with Eigen built for NEON alone, against OpenBLAS, Eigen master 674e4a4e5. Accelerate and Arm Performance Libraries cannot be held to NEON through documented means; the SME page has those comparisons.
  • Raspberry Pi 5 (Arm Cortex-A76), 64-bit, October 2026: the same operations and shapes on one Cortex-A76 core of a Raspberry Pi 5 against OpenBLAS 0.3.34 and Arm Performance Libraries 26.07, single thread, Eigen master 674e4a4e5 built for the default Armv8-A target, so every kernel is Eigen’s NEON code.
  • Raspberry Pi 5 (Arm Cortex-A76), 32-bit, October 2026: the same cells with 32-bit (armhf) binaries on the same board, against OpenBLAS 0.3.34, Eigen master 674e4a4e5. NEON in AArch32 state has no double-precision lanes, so Eigen’s double-precision kernels there are scalar.
  • NVIDIA Grace (Arm Neoverse V2) with NEON, October 2026: the same operations and shapes on one core of a 72-core Grace against Arm Performance Libraries 26.07, NVPL 26.5 and OpenBLAS 0.3.34, single thread, Eigen master 210e0a609 built for the default Armv8-A target, so every kernel is Eigen’s NEON code.
  • NVIDIA Grace (Arm Neoverse V2) with SVE, October 2026: the same cells with Eigen built for SVE at the CPU’s 128-bit vector length (-msve-vector-bits=128 -DEIGEN_ARM64_USE_SVE), against the NEON page’s library measurements, Eigen master 210e0a609.

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).

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.


Eigen vs. BLAS/LAPACK libraries, AMD Zen 5 (October 2026)

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.

Eigen vs. BLAS/LAPACK libraries, AMD Zen 5 limited to AVX2 (October 2026)

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.

Eigen vs. BLAS/LAPACK libraries, Apple M4 with SME (October 2026)

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.

Eigen vs. BLAS/LAPACK libraries, Intel Xeon Gold 6444Y (September 2026)

Single-threaded float and double BLAS/LAPACK comparisons on an Intel Xeon Gold 6444Y: Eigen against OpenBLAS and oneMKL, with upstream BLIS for BLAS.

Eigen vs. BLAS/LAPACK libraries, Apple M4 with NEON (October 2026)

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.

Eigen vs. BLAS/LAPACK libraries, NVIDIA Grace with NEON (October 2026)

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).

Eigen vs. BLAS/LAPACK libraries, NVIDIA Grace with SVE (October 2026)

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).

Eigen vs. BLAS/LAPACK libraries, NVIDIA DGX Spark with NEON (October 2026)

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.

Eigen vs. BLAS/LAPACK libraries, NVIDIA DGX Spark with SVE (October 2026)

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.

Eigen vs. BLAS/LAPACK libraries, Raspberry Pi 5 (October 2026)

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.

Eigen vs. BLAS/LAPACK libraries, Raspberry Pi 5 in 32-bit mode (October 2026)

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.

Benchmark

Benchmark AMD Intel compare

Benchmark AMD

Benchmark Intel