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’s dense kernels measured on a bare-metal Intel Xeon Gold 6444Y, using one thread and AVX-512. The twelve operations and all 874 float/double operation-shape cells match the Zen 5 AVX-512 page. OpenBLAS and Intel oneMKL provide both BLAS and LAPACK comparisons; upstream BLIS provides the six BLAS comparisons.

All 30 operation/library runs completed with ten samples per measured cell and no reported validation errors.

Conditions

CPU Intel Xeon Gold 6444Y, one socket, 16 cores / 32 threads; L1d 48 KiB/core, L2 2 MiB/core, shared L3 45 MiB
OS Ubuntu 24.04.5 LTS, bare-metal Linux 6.17.0-35-generic
Compiler GCC 13.3.0, -O3 -DNDEBUG -mavx512dq -mfma, C++17
Eigen Upstream master ab4f7316d, fetched before building; the Eigen/ tree is unchanged. No external BLAS and no OpenMP in the Eigen arm
Harness MR !2903 at 778e20997, applied as 11cf0c289, plus the untimed DOT validation correction described below (4e0c35ecb). The first two AXPY runs precede that correction; their kernels and validation are unaffected
OpenBLAS OpenBLAS 0.3.26 NO_LAPACKE DYNAMIC_ARCH NO_AFFINITY SapphireRapids MAX_THREADS=64; LP64 pthread build, one thread; bundled LAPACK
Intel oneMKL Intel(R) oneAPI Math Kernel Library Version 2025.3-Product Build 20251007 for Intel(R) 64 architecture applications; sequential LP64, native dispatch
BLIS 2.1; upstream release 2.1, sequential skx AVX-512 configuration; BLAS only
Threads and affinity All library thread caps set to 1; benchmark process pinned to one logical CPU, with its SMT sibling unused
Isolation and frequency Exclusive node allocation; performance governor; frequency not locked
Method Google Benchmark 1.8.3, built from source in Release mode; ten repetitions of at least 0.2 seconds of CPU time, median rate per cell
Benchmark runtime 30 completed runs, 312.6 minutes total elapsed runtime, excluding builds; 2026-09-21 08:57 PM PDT to 2026-09-22 03:10 AM PDT

Reading the rates. The harness uses Google Benchmark’s default CPU timer for its GFLOP/s counters; it also retains wall times in the downloadable data. Both implementations use the same nominal flop count, operand shapes, input distribution, and timing protocol. Each benchmark invocation generates fresh random operands outside the timed loop, including between repetitions. Reference results are validated outside the timed loop. Small cells include API and dispatch overhead; Eigen can inline its operation.

Each Eigen/library ratio is formed from the two median rates in the same binary and session. The common Eigen line and table column show the median over its separately measured library builds; the shaded band is the min–max range of those medians. Consequently the common Eigen column divided by a library column need not exactly equal the paired ratio. Within-run variation is summarized below.

Cache markers show where the inputs and outputs of one call fill L1d, L2 or L3; they exclude solver workspace and the harness’s additional copies. Eigenvalue and SVD rates use classical algorithm counts, so they are nominal GFLOP/s rather than executed-instruction throughput.

AXPY

y += alpha * x against ?axpy, alpha = 0.75; (2n) flops. Vector lengths extend through the cache levels into DRAM.

AXPY f64 square

AXPY f32 square

DOT

x.dot(y) against ?dot; (2n) flops. Float and double only.

DOT f64 square

DOT f32 square

GEMV

y.noalias() += A * x against ?gemv, column-major, no transposition; (2mn) flops. Square, short-fat and tall-skinny operands.

GEMV f64 square

GEMV f64 families

GEMV f32 square

GEMV f32 families

GEMM

C.noalias() += A * B against ?gemm, column-major, no transposition; (2mnk) flops. Square sizes through 4097, tall-skinny sweeps and other rectangular shapes.

GEMM f64 square

GEMM f64 families

GEMM f64 shapes

GEMM f32 square

GEMM f32 families

GEMM f32 shapes

TRSM

A.triangularView<Lower>().solveInPlace(X) against ?trsm, left, lower, no transposition, non-unit diagonal; (m(m+1)n) flops. Both arms time one copy of the right-hand side.

TRSM f64 square

TRSM f64 families

TRSM f64 shapes

TRSM f32 square

TRSM f32 families

TRSM f32 shapes

SYRK

C.selfadjointView<Lower>().rankUpdate(A) against ?syrk, lower triangle, no transposition; (n(n+1)k) flops.

SYRK f64 square

SYRK f64 families

SYRK f32 square

SYRK f32 families

POTRF

LLT<Ref<Matrix>> against ?potrf, in-place lower Cholesky factorization. The harness’s shared nominal count is (n(n-1)(n-2)/3 + 2n(n-1)), asymptotically (n^3/3) flops. Both arms time one operand copy.

POTRF f64 square

POTRF f32 square

GETRF

PartialPivLU<Ref<Matrix>> against ?getrf, in-place LU with partial pivoting; (2n^3/3) flops. Both arms time one operand copy.

GETRF f64 square

GETRF f32 square

GEQRF

HouseholderQR<Ref<Matrix>> against ?geqrf, in-place Householder QR with (m \ge n); (2mn^2 - 2n^3/3) flops. Both arms time one operand copy.

GEQRF f64 square

GEQRF f64 families

GEQRF f32 square

GEQRF f32 families

SYEV

SelfAdjointEigenSolver with eigenvectors against ?syev with jobz = 'V', lower triangle; (9n^3) nominal flops. Square sizes through 2048.

SYEV f64 square

SYEV f32 square

GESDD

BDCSVD<Matrix, ComputeThinU | ComputeThinV> against ?gesdd with jobz = 'S'; divide and conquer, with thin singular vectors on both sides. (14mn^2 + 8n^3) nominal flops; square sizes through 2048 plus tall-skinny sweeps.

GESDD f64 square

GESDD f64 families

GESDD f32 square

GESDD f32 families

GEEV

EigenSolver with eigenvectors against ?geev with jobvr = 'V', for a dense random nonsymmetric matrix; (25n^3) nominal flops. Square sizes through 1024.

GEEV f64 square

GEEV f32 square

Summary

Geometric mean of paired Eigen/library rate ratios over square shapes in each size band. Above 1, Eigen is faster.

Operation Scalar Library n ≤ 16 24–128 192–1024 1536–16384 > 16384
AXPY float OpenBLAS 3.03 2.85 1.40 1.05 1.00
AXPY float Intel oneMKL 2.86 2.31 1.40 1.02 1.00
AXPY float BLIS 14.01 9.40 2.58 1.33 0.98
AXPY double OpenBLAS 2.53 1.98 1.29 1.02 1.00
AXPY double Intel oneMKL 2.88 1.76 0.77 0.92 0.99
AXPY double BLIS 13.82 8.86 2.93 1.32 0.99
DOT float OpenBLAS 3.49 2.66 1.18 1.02 0.99
DOT float Intel oneMKL 4.25 2.70 1.30 1.08 1.01
DOT float BLIS 24.89 13.52 3.96 1.72 1.08
DOT double OpenBLAS 4.90 2.44 1.10 1.03 1.00
DOT double Intel oneMKL 4.99 2.33 1.17 1.06 1.00
DOT double BLIS 28.11 10.76 2.79 1.49 1.05
GEMV float OpenBLAS 1.39 1.39 1.05 1.06
GEMV float Intel oneMKL 2.61 1.52 1.05 1.06
GEMV float BLIS 7.07 2.71 1.16 1.03
GEMV double OpenBLAS 2.23 1.63 1.08 1.07
GEMV double Intel oneMKL 2.98 1.48 0.98 1.04
GEMV double BLIS 7.70 2.28 1.12 1.03
GEMM float OpenBLAS 1.25 0.86 1.02 0.97
GEMM float Intel oneMKL 2.57 0.88 0.99 0.96
GEMM float BLIS 65.54 3.19 1.09 1.00
GEMM double OpenBLAS 1.11 0.85 1.07 0.94
GEMM double Intel oneMKL 2.21 0.84 0.98 0.93
GEMM double BLIS 61.09 2.35 1.04 0.96
TRSM float OpenBLAS 1.22 3.78 1.96 1.13
TRSM float Intel oneMKL 1.34 1.12 0.90 0.88
TRSM float BLIS 38.92 12.21 3.47 1.45
TRSM double OpenBLAS 1.48 3.60 2.19 1.23
TRSM double Intel oneMKL 1.45 0.81 0.77 0.88
TRSM double BLIS 25.21 6.26 1.78 1.13
SYRK float OpenBLAS 0.62 0.98 1.01 0.98
SYRK float Intel oneMKL 1.22 1.01 0.98 0.95
SYRK float BLIS 17.44 3.09 1.08 0.99
SYRK double OpenBLAS 0.88 1.24 1.08 0.88
SYRK double Intel oneMKL 1.59 1.02 0.98 0.88
SYRK double BLIS 21.77 2.43 1.05 0.91
POTRF float OpenBLAS 1.55 1.12 1.49 1.18
POTRF float Intel oneMKL 1.06 2.15 0.98 0.99
POTRF double OpenBLAS 1.38 1.25 1.50 1.25
POTRF double Intel oneMKL 1.08 1.71 0.99 0.93
GETRF float OpenBLAS 1.93 1.43 1.31 1.00
GETRF float Intel oneMKL 1.00 1.33 0.87 0.87
GETRF double OpenBLAS 1.77 1.53 1.34 0.99
GETRF double Intel oneMKL 0.97 1.38 1.02 0.93
GEQRF float OpenBLAS 0.79 1.09 1.15 1.22
GEQRF float Intel oneMKL 0.40 0.93 0.96 0.94
GEQRF double OpenBLAS 0.73 0.93 1.03 0.99
GEQRF double Intel oneMKL 0.35 0.64 0.84 0.81
SYEV float OpenBLAS 1.51 2.02 3.72 2.99
SYEV float Intel oneMKL 1.44 1.14 1.02 0.57
SYEV double OpenBLAS 1.36 1.77 2.33 1.79
SYEV double Intel oneMKL 1.29 0.95 0.66 0.37
GESDD float OpenBLAS 1.73 0.72 0.87 0.96
GESDD float Intel oneMKL 1.63 0.64 0.81 0.92
GESDD double OpenBLAS 1.34 0.60 0.80 0.90
GESDD double Intel oneMKL 1.31 0.53 0.69 0.88
GEEV float OpenBLAS 2.14 1.62 0.48
GEEV float Intel oneMKL 2.01 1.44 0.43
GEEV double OpenBLAS 2.13 1.52 0.45
GEEV double Intel oneMKL 1.13 1.17 0.41

Variability

Relative IQR is the interquartile range of the ten rates divided by their median. The table pools float and double; Eigen counts include its repeated measurements in each library build. It summarizes dispersion across the measured cells, not a confidence interval. Repetitions use freshly generated random inputs, so the spread includes input variation as well as timing noise.

Operation Implementation Measured cells Median relative IQR 90th percentile relative IQR Maximum relative IQR
AXPY eigen 258 0.27% 2.42% 29.15%
AXPY openblas 86 0.29% 1.37% 8.10%
AXPY mkl 86 0.31% 0.65% 42.73%
AXPY blis 86 0.63% 1.54% 10.21%
DOT eigen 258 0.29% 0.89% 4.08%
DOT openblas 86 0.36% 1.76% 43.56%
DOT mkl 86 0.39% 0.86% 4.28%
DOT blis 86 0.51% 1.29% 2.96%
GEMV eigen 228 0.27% 0.77% 2.82%
GEMV openblas 76 0.26% 1.01% 3.27%
GEMV mkl 76 0.23% 0.89% 1.92%
GEMV blis 76 0.34% 0.92% 2.36%
GEMM eigen 300 0.10% 0.36% 1.88%
GEMM openblas 100 0.06% 0.43% 1.02%
GEMM mkl 100 0.07% 0.41% 2.64%
GEMM blis 100 0.13% 0.36% 0.92%
TRSM eigen 240 0.19% 0.74% 4.58%
TRSM openblas 80 0.30% 0.71% 2.53%
TRSM mkl 80 0.14% 0.39% 2.87%
TRSM blis 80 0.30% 1.02% 2.34%
SYRK eigen 222 0.14% 0.54% 1.82%
SYRK openblas 74 0.11% 0.48% 0.71%
SYRK mkl 74 0.15% 0.45% 1.52%
SYRK blis 74 0.17% 0.57% 1.12%
POTRF eigen 120 0.15% 0.64% 2.47%
POTRF openblas 60 0.21% 0.60% 14.86%
POTRF mkl 60 0.16% 0.89% 1.85%
GETRF eigen 120 1.56% 5.29% 10.38%
GETRF openblas 60 0.38% 2.51% 8.59%
GETRF mkl 60 0.47% 3.26% 7.48%
GEQRF eigen 164 0.18% 0.45% 1.99%
GEQRF openblas 82 0.15% 0.47% 1.61%
GEQRF mkl 82 0.20% 0.71% 2.21%
SYEV eigen 108 1.01% 6.53% 14.16%
SYEV openblas 54 4.44% 9.89% 14.71%
SYEV mkl 54 4.92% 30.36% 47.16%
GESDD eigen 132 1.05% 5.52% 13.97%
GESDD openblas 66 0.41% 4.80% 9.21%
GESDD mkl 66 0.45% 5.16% 12.54%
GEEV eigen 100 4.20% 10.77% 22.23%
GEEV openblas 50 3.27% 8.02% 17.82%
GEEV mkl 50 4.51% 10.86% 23.35%

The same Eigen cells are also measured in separately linked library builds. Their relative range is (maximum median − minimum median) / median of medians. This includes any differences between binaries and sessions, and is not a confidence interval. A small within-run IQR does not establish agreement between builds.

Operation Scalar Cells in multiple builds Median relative range 90th percentile relative range Maximum relative range
AXPY float 43 9.45% 36.90% 68.51%
AXPY double 43 5.18% 41.48% 67.91%
DOT float 43 0.75% 5.90% 22.97%
DOT double 43 0.67% 4.31% 29.30%
GEMV float 38 0.68% 8.40% 18.81%
GEMV double 38 0.59% 2.12% 13.90%
GEMM float 50 0.26% 1.21% 2.84%
GEMM double 50 0.37% 1.31% 12.49%
TRSM float 40 0.94% 2.91% 12.73%
TRSM double 40 1.06% 4.48% 8.58%
SYRK float 37 0.26% 1.42% 5.31%
SYRK double 37 0.42% 0.97% 2.35%
POTRF float 30 0.27% 1.46% 6.41%
POTRF double 30 0.22% 0.71% 16.10%
GETRF float 30 0.81% 6.51% 10.30%
GETRF double 30 1.68% 4.06% 8.05%
GEQRF float 41 0.31% 1.19% 2.60%
GEQRF double 41 0.37% 1.82% 2.78%
SYEV float 27 0.73% 2.08% 6.94%
SYEV double 27 0.67% 2.06% 13.87%
GESDD float 33 0.44% 1.19% 1.49%
GESDD double 33 0.69% 1.49% 2.63%
GEEV float 25 1.59% 4.22% 7.20%
GEEV double 25 1.31% 6.30% 9.69%

Caveats

  • Frequency is not locked; turbo, thermal state and background system services can affect timings. Differences comparable to the observed dispersion are inconclusive.
  • These are single-threaded measurements on one processor and one compiler configuration. Absolute rates should not be treated as a controlled comparison with the Zen 5 host.
  • BLIS provides no LAPACK arm here; those entries are explicitly outside its measured scope.
  • Eigen’s AXPY rates differ substantially between library builds at some cache-resident sizes. The cause was not established; consider paired ratios together with the ranges between builds.
  • Several single-precision oneMKL SYEV cells have large within-run variation. See the per-implementation IQR table and raw samples.

Full tables

The Eigen column is pooled across builds; ratios retain the within-build comparison.

AXPY float
n Eigen GFLOP/s OpenBLAS GFLOP/s Eigen ÷ OpenBLAS Intel oneMKL GFLOP/s Eigen ÷ Intel oneMKL BLIS GFLOP/s Eigen ÷ BLIS
2 1.8 0.7 2.40 0.5 3.24 0.1 16.20
3 2.7 1.1 2.51 0.8 3.26 0.2 15.35
4 3.1 1.3 2.45 1.1 2.84 0.2 14.98
6 4.4 1.6 2.72 1.6 2.65 0.3 13.03
8 6.4 1.9 3.39 2.2 2.90 0.5 13.37
12 9.0 2.3 3.92 3.3 2.71 0.7 13.32
16 11.6 2.6 4.45 4.6 2.53 0.9 12.29
24 17.3 3.0 5.86 6.5 2.67 1.4 11.63
32 23.1 10.0 2.31 9.0 2.56 1.9 12.12
48 33.6 6.8 4.97 13.6 2.48 2.8 11.50
64 43.4 19.6 2.22 17.4 2.50 3.8 9.72
96 57.4 23.2 2.47 26.1 2.23 5.6 9.05
100 45.1 21.9 2.08 26.3 1.71 5.6 6.50
128 67.5 35.4 1.99 30.6 2.21 7.4 6.97
192 74.1 42.0 1.78 41.3 1.79 10.6 5.65
256 68.7 53.5 1.29 50.9 1.35 13.7 4.25
384 101.2 65.9 1.54 61.6 1.64 19.2 3.35
512 103.8 70.8 1.47 69.9 1.49 23.1 2.83
768 106.8 79.5 1.34 79.6 1.34 33.3 2.02
1000 104.4 77.9 1.34 84.3 1.24 38.8 1.55
1001 102.9 77.7 1.34 84.5 1.22 38.4 1.51
1024 104.7 86.0 1.22 85.0 1.23 38.2 1.82
1536 108.2 92.3 1.17 92.3 1.17 44.9 1.67
2048 104.8 95.9 1.09 95.9 1.10 48.4 1.49
3072 105.1 94.3 1.12 100.4 1.05 53.2 1.32
4096 101.7 100.9 1.01 102.7 0.99 56.1 1.48
6144 104.3 95.6 1.09 96.1 1.10 44.6 1.87
8192 28.5 26.4 1.01 36.8 0.77 30.6 1.51
10000 26.6 26.2 1.02 26.4 1.01 26.7 1.00
12288 26.6 23.8 0.99 26.4 1.01 26.8 0.99
16384 26.5 24.9 0.97 26.4 1.01 26.9 0.99
32768 26.6 26.5 1.00 26.5 1.00 27.1 0.98
65536 26.6 26.4 1.01 26.6 1.00 27.2 0.96
100000 26.7 26.7 1.00 26.6 1.00 27.3 0.97
131072 26.1 26.3 0.99 26.6 0.98 27.0 0.96
262144 15.9 16.1 1.05 15.5 1.03 16.3 0.94
524288 9.4 9.5 0.99 9.2 1.00 9.7 0.97
1000000 9.3 9.4 1.00 9.2 1.00 9.6 0.98
1048576 9.4 9.4 1.00 9.2 1.00 9.5 0.98
2097152 9.4 9.4 1.00 9.2 0.99 9.5 0.98
4194304 9.2 9.2 1.00 9.1 0.99 9.3 0.99
8388608 7.6 7.6 0.99 7.7 0.99 7.5 1.02
16777216 6.2 6.2 1.00 6.3 0.99 6.1 1.01
AXPY double
n Eigen GFLOP/s OpenBLAS GFLOP/s Eigen ÷ OpenBLAS Intel oneMKL GFLOP/s Eigen ÷ Intel oneMKL BLIS GFLOP/s Eigen ÷ BLIS
2 1.8 0.7 2.36 0.6 2.94 0.1 15.88
3 2.6 1.1 2.47 0.8 3.28 0.2 16.23
4 3.2 1.3 2.37 1.2 2.74 0.2 13.91
6 4.7 1.8 2.61 1.6 2.95 0.3 14.09
8 5.8 2.2 2.59 2.1 2.82 0.5 12.44
12 8.7 2.7 3.16 3.2 2.65 0.7 12.32
16 11.6 5.1 2.26 4.1 2.85 0.9 12.44
24 17.2 5.0 3.38 6.1 2.82 1.4 12.55
32 21.7 10.4 2.08 7.5 2.60 1.9 11.73
48 29.5 11.6 2.54 11.1 2.09 2.8 10.68
64 32.7 17.8 1.98 14.3 1.72 3.7 8.96
96 37.2 21.5 1.73 20.0 1.34 5.2 7.12
100 33.5 20.9 1.62 21.4 1.26 5.4 6.15
128 33.8 28.0 1.21 23.7 1.17 6.8 6.95
192 50.5 32.3 1.56 30.0 0.97 9.7 5.21
256 51.6 34.8 1.48 37.5 0.81 11.6 4.45
384 53.3 38.2 1.40 41.1 0.76 16.8 3.18
512 52.4 42.6 1.23 43.6 0.73 19.4 2.70
768 54.1 45.0 1.20 46.2 0.75 22.3 2.43
1000 54.4 45.1 1.21 47.4 0.77 23.9 2.28
1001 53.9 44.9 1.20 47.3 0.63 23.8 2.26
1024 52.6 47.3 1.11 47.4 0.77 24.2 2.17
1536 52.5 49.2 1.07 48.7 0.71 26.5 1.98
2048 50.5 50.3 1.01 48.7 0.80 27.9 1.82
3072 51.9 47.5 1.09 48.2 0.83 22.3 2.34
4096 14.5 13.2 1.01 14.5 1.00 15.4 1.50
6144 13.3 11.9 0.98 13.2 1.01 13.4 0.99
8192 13.3 12.4 0.97 13.2 1.01 13.4 0.99
10000 13.3 13.2 1.01 13.3 1.00 13.5 0.99
12288 13.3 13.2 1.00 13.2 1.01 13.5 0.98
16384 13.3 13.3 1.00 13.2 1.01 13.5 0.98
32768 13.3 13.3 1.00 13.2 0.94 13.5 0.98
65536 13.2 13.1 0.99 13.3 1.00 13.6 0.97
100000 12.3 12.7 1.00 12.0 1.00 12.4 1.00
131072 8.1 8.0 1.02 7.8 1.01 8.4 0.97
262144 4.7 4.7 1.00 4.6 1.00 4.8 1.00
524288 4.7 4.7 0.99 4.6 0.99 4.8 0.98
1000000 4.7 4.7 1.00 4.6 1.00 4.8 0.99
1048576 4.7 4.7 1.00 4.6 0.99 4.8 0.98
2097152 4.6 4.6 0.99 4.5 0.99 4.7 0.99
4194304 3.8 3.8 0.99 3.8 1.01 3.7 1.02
8388608 3.1 3.1 0.99 3.1 0.99 3.1 1.02
16777216 2.8 2.8 0.99 2.8 0.99 2.8 1.01
DOT float
n Eigen GFLOP/s OpenBLAS GFLOP/s Eigen ÷ OpenBLAS Intel oneMKL GFLOP/s Eigen ÷ Intel oneMKL BLIS GFLOP/s Eigen ÷ BLIS
2 4.0 1.2 3.41 0.6 6.43 0.1 32.02
3 6.0 1.6 3.79 0.9 4.98 0.2 33.33
4 7.4 1.9 3.95 1.3 5.11 0.2 32.74
6 8.1 2.6 3.10 1.9 4.13 0.3 24.00
8 8.0 3.0 2.66 2.5 3.30 0.4 18.61
12 8.8 3.5 2.54 3.7 2.26 0.7 13.17
16 24.1 4.0 5.97 4.7 4.97 0.8 28.80
24 12.7 4.4 2.78 7.0 2.17 1.3 10.04
32 39.6 12.4 3.20 9.5 4.15 1.9 20.50
48 49.7 9.6 5.16 14.3 3.46 2.7 18.74
64 56.1 22.8 2.46 18.1 3.07 3.8 14.87
96 71.8 33.4 2.15 28.2 2.42 5.5 13.11
100 52.0 29.1 1.79 28.5 1.96 5.5 9.52
128 84.2 38.9 2.17 36.3 2.31 7.3 11.54
192 91.1 52.8 1.73 49.1 1.86 10.7 8.20
256 93.7 63.5 1.47 58.0 1.58 13.5 6.97
384 99.3 82.1 1.21 70.7 1.41 20.1 4.93
512 102.4 94.0 1.09 75.3 1.34 25.5 4.05
768 106.2 99.4 1.06 85.6 1.25 34.2 3.11
1000 91.1 91.7 0.99 88.8 1.03 36.3 2.49
1001 89.2 86.7 1.02 89.0 1.00 35.9 2.48
1024 105.6 104.7 1.01 90.9 1.16 38.4 2.77
1536 107.6 100.8 1.07 96.0 1.12 44.5 2.42
2048 106.0 104.9 1.01 97.9 1.09 48.5 2.19
3072 107.9 105.5 1.02 102.8 1.05 51.8 2.09
4096 108.9 105.1 1.03 104.6 1.04 52.5 2.09
6144 103.6 98.9 1.05 83.7 1.26 48.6 2.08
8192 48.5 48.4 1.00 46.3 1.05 36.8 1.33
10000 48.1 47.0 1.02 46.5 1.03 37.2 1.30
12288 48.3 48.4 1.00 46.5 1.04 37.5 1.28
16384 48.2 48.6 0.99 46.4 1.03 38.0 1.27
32768 48.4 48.6 1.00 46.7 1.03 38.7 1.25
65536 48.2 48.4 1.00 46.8 1.03 38.9 1.24
100000 48.3 48.6 0.99 46.8 1.03 39.0 1.24
131072 48.2 48.7 0.99 46.9 1.03 39.1 1.24
262144 19.6 19.1 1.01 19.1 1.03 19.6 1.00
524288 10.4 10.4 1.00 10.5 1.00 10.4 1.01
1000000 10.4 10.4 1.00 10.4 1.00 10.3 1.01
1048576 10.3 10.4 1.00 10.4 1.00 10.3 1.01
2097152 10.3 10.4 1.00 10.4 1.00 10.3 1.01
4194304 10.1 10.1 1.00 10.1 0.99 10.0 1.01
8388608 8.1 8.2 0.98 8.3 0.97 7.8 1.04
16777216 6.5 6.6 0.98 6.7 0.97 6.4 1.01
DOT double
n Eigen GFLOP/s OpenBLAS GFLOP/s Eigen ÷ OpenBLAS Intel oneMKL GFLOP/s Eigen ÷ Intel oneMKL BLIS GFLOP/s Eigen ÷ BLIS
2 5.3 0.9 5.93 0.6 6.72 0.1 42.74
3 6.3 1.1 5.54 1.0 6.26 0.2 35.45
4 7.4 1.5 5.03 1.3 5.69 0.2 32.69
6 8.1 1.9 4.33 1.9 4.16 0.3 24.24
8 13.2 2.4 5.49 2.3 5.60 0.4 29.92
12 11.9 2.6 4.53 3.4 3.17 0.7 18.36
16 20.7 5.4 3.81 4.8 4.34 1.0 21.04
24 26.7 6.0 4.48 7.4 3.64 1.4 19.60
32 29.9 9.7 3.09 9.1 3.30 2.0 15.29
48 35.1 14.8 2.37 14.2 2.48 2.9 12.12
64 44.0 17.2 2.56 18.1 2.41 3.8 11.53
96 47.1 22.7 2.07 24.5 1.93 5.7 8.28
100 40.2 21.6 1.86 24.4 1.65 5.5 7.29
128 47.2 28.6 1.59 29.0 1.63 7.2 6.61
192 48.4 38.3 1.27 34.4 1.41 10.3 4.76
256 50.2 45.1 1.10 37.5 1.35 13.3 3.77
384 52.0 48.5 1.07 43.1 1.21 17.2 3.02
512 52.0 49.8 1.04 45.5 1.14 19.7 2.71
768 52.4 48.7 1.08 48.2 1.09 22.8 2.31
1000 53.1 48.0 1.10 49.3 1.08 23.7 2.24
1001 52.6 48.0 1.09 49.3 1.07 23.7 2.22
1024 53.3 50.0 1.06 48.9 1.09 24.3 2.20
1536 53.6 51.3 1.04 51.5 1.04 25.8 2.08
2048 53.8 52.2 1.03 52.2 1.03 26.6 2.02
3072 51.7 47.7 1.08 40.8 1.30 24.5 2.08
4096 24.4 23.8 1.02 23.3 1.04 18.7 1.31
6144 24.3 23.8 1.02 23.2 1.05 18.8 1.29
8192 24.3 23.7 1.03 23.3 1.04 19.2 1.27
10000 24.1 24.0 1.01 23.2 1.03 19.3 1.25
12288 24.3 23.9 1.02 23.3 1.04 19.3 1.25
16384 24.3 23.9 1.02 23.4 1.04 19.5 1.24
32768 24.3 23.9 1.02 23.4 1.03 19.5 1.24
65536 24.2 24.0 1.01 23.4 1.03 19.6 1.24
100000 19.5 21.3 1.01 15.7 1.01 17.8 1.10
131072 9.7 9.5 1.00 9.8 0.99 9.8 1.01
262144 5.2 5.2 1.00 5.2 1.00 5.2 1.01
524288 5.2 5.2 1.00 5.2 1.00 5.1 1.01
1000000 5.2 5.2 1.00 5.2 1.00 5.1 1.01
1048576 5.2 5.2 1.00 5.2 1.00 5.1 1.01
2097152 5.0 5.1 1.00 5.1 0.99 5.0 1.01
4194304 4.0 4.1 0.98 4.2 0.97 3.9 1.04
8388608 3.2 3.3 0.98 3.3 0.97 3.2 1.01
16777216 2.9 3.0 0.98 3.0 0.98 2.9 1.00
GEMV float
m×n Eigen GFLOP/s OpenBLAS GFLOP/s Eigen ÷ OpenBLAS Intel oneMKL GFLOP/s Eigen ÷ Intel oneMKL BLIS GFLOP/s Eigen ÷ BLIS
2x2 0.7 0.6 1.29 0.3 2.38 0.1 7.04
3x3 1.3 1.3 1.06 0.6 2.29 0.2 6.18
4x4 3.8 1.5 2.58 1.3 3.30 0.4 10.61
6x6 4.5 4.7 0.93 2.2 2.10 0.7 6.33
8x8 14.8 7.8 1.89 4.0 3.73 2.0 7.42
12x12 16.4 16.1 1.01 7.4 2.24 2.9 5.67
16x16 46.6 29.9 1.56 14.5 2.65 6.6 7.19
24x24 51.2 37.1 1.38 18.1 2.52 12.7 4.03
32x32 96.6 68.4 1.41 39.5 2.22 19.6 4.98
48x48 117.9 73.7 1.60 65.2 1.82 32.1 3.66
64x64 132.6 65.0 2.03 82.9 1.60 43.6 3.04
96x96 109.0 76.1 1.43 105.8 1.02 58.2 1.88
100x100 61.1 69.0 0.88 62.5 1.00 39.7 1.54
128x128 79.1 62.2 1.28 70.4 1.12 47.6 1.66
192x192 80.5 64.5 1.25 76.0 1.06 54.4 1.48
200x200 59.0 66.2 0.89 51.8 1.14 55.3 1.07
256x256 83.2 66.5 1.25 77.4 1.07 56.6 1.48
257x257 48.2 46.1 1.04 43.4 1.12 41.3 1.17
384x384 84.0 68.4 1.22 80.4 1.05 60.6 1.39
500x500 50.5 57.1 0.88 49.8 1.02 49.8 1.02
512x512 84.0 69.1 1.22 81.0 1.03 61.7 1.36
768x768 30.1 29.8 0.98 29.6 1.02 32.4 1.01
1000x1000 19.8 20.5 0.96 19.5 1.02 20.4 0.97
1001x1001 19.6 20.2 0.97 19.4 1.01 20.3 0.97
1024x1024 20.2 20.4 0.99 20.1 1.02 20.4 0.99
1536x1536 20.2 20.3 1.00 19.6 1.03 20.1 1.01
2048x2048 20.2 20.0 1.01 19.6 1.03 19.9 1.02
3072x3072 19.6 18.7 1.05 18.5 1.05 19.0 1.03
4096x4096 16.3 14.2 1.15 14.7 1.11 15.1 1.08
4097x4097 15.8 14.5 1.09 14.8 1.07 15.2 1.04
8x10000 28.4 29.4 0.96 8.8 3.41 12.9 2.19
100x10000 20.2 20.0 1.01 18.9 1.07 19.4 1.04
1000x10000 18.7 18.0 1.04 17.9 1.04 18.5 1.01
4000x10000 12.5 11.3 1.11 11.7 1.07 12.1 1.04
10000x8 71.2 71.3 1.01 74.9 0.94 63.2 1.13
10000x100 18.8 19.6 0.96 19.8 0.95 20.0 0.94
10000x1000 18.8 17.7 1.06 18.4 1.02 18.8 1.00
10000x4000 12.5 11.1 1.13 11.8 1.06 12.2 1.02
GEMV double
m×n Eigen GFLOP/s OpenBLAS GFLOP/s Eigen ÷ OpenBLAS Intel oneMKL GFLOP/s Eigen ÷ Intel oneMKL BLIS GFLOP/s Eigen ÷ BLIS
2x2 1.1 0.5 2.43 0.3 3.52 0.1 10.79
3x3 1.7 1.0 1.62 0.7 2.58 0.2 7.67
4x4 4.3 1.5 2.76 1.2 3.50 0.4 10.39
6x6 7.1 3.0 2.36 2.3 2.90 0.8 8.88
8x8 13.2 5.4 2.44 4.1 3.22 1.9 6.89
12x12 16.2 9.7 1.68 7.6 2.13 3.3 4.95
16x16 39.7 15.4 2.59 12.0 3.33 6.4 6.19
24x24 59.2 24.3 2.43 20.0 2.95 12.1 4.91
32x32 69.5 31.7 2.19 28.3 2.46 17.2 4.04
48x48 60.8 39.8 1.53 44.2 1.38 26.5 2.30
64x64 87.1 45.5 1.92 56.3 1.55 30.9 2.81
96x96 43.0 33.0 1.30 39.9 1.08 26.3 1.63
100x100 27.5 22.7 1.21 29.3 0.93 26.8 1.03
128x128 41.3 34.0 1.21 41.2 1.00 28.0 1.48
192x192 42.0 34.6 1.21 42.3 0.99 30.2 1.40
200x200 41.9 34.8 1.21 41.5 1.01 31.0 1.35
256x256 41.9 34.3 1.22 42.9 0.98 31.0 1.35
257x257 23.9 20.0 1.20 25.8 0.92 24.0 1.01
384x384 41.2 34.9 1.17 43.2 0.95 32.0 1.28
500x500 20.1 19.4 1.04 19.2 0.99 21.2 0.98
512x512 18.4 18.9 0.97 17.6 0.98 19.4 1.02
768x768 10.1 10.3 0.99 10.1 1.01 10.1 1.00
1000x1000 9.9 10.2 0.97 10.0 0.99 10.0 0.99
1001x1001 9.8 10.0 0.98 9.8 0.99 9.9 0.99
1024x1024 10.1 10.2 0.99 10.0 1.01 9.9 1.02
1536x1536 10.1 9.7 1.04 9.9 1.03 10.0 1.01
2048x2048 10.0 9.5 1.05 9.3 1.07 9.7 1.02
3072x3072 7.7 7.0 1.11 7.2 1.07 7.3 1.07
4096x4096 6.5 6.0 1.07 6.2 1.04 6.2 1.05
4097x4097 6.3 5.9 1.06 6.2 1.00 6.2 1.01
8x10000 25.3 21.1 1.19 11.0 2.30 11.9 2.13
100x10000 9.8 9.7 1.01 9.8 1.01 9.9 0.99
1000x10000 7.5 7.0 1.07 7.0 1.07 7.0 1.06
4000x10000 5.7 5.4 1.06 5.5 1.03 5.6 1.03
10000x8 33.0 28.9 1.14 32.2 1.03 31.8 1.05
10000x100 8.8 9.3 0.94 9.5 0.92 10.0 0.88
10000x1000 7.2 6.8 1.05 7.1 1.00 7.2 0.99
10000x4000 5.6 5.4 1.04 5.5 1.01 5.6 1.00
GEMM float
m×n×k Eigen GFLOP/s OpenBLAS GFLOP/s Eigen ÷ OpenBLAS Intel oneMKL GFLOP/s Eigen ÷ Intel oneMKL BLIS GFLOP/s Eigen ÷ BLIS
2x2x2 1.5 0.8 1.79 0.3 5.54 0.0 188.70
3x3x3 4.1 2.2 1.82 0.8 4.91 0.0 151.29
4x4x4 13.3 4.2 3.14 1.8 7.43 0.1 214.48
6x6x6 11.1 9.5 1.17 5.0 2.24 0.2 55.25
8x8x8 16.3 17.4 0.93 9.6 1.69 0.5 36.34
12x12x12 24.5 39.5 0.61 25.3 0.98 1.7 14.61
16x16x16 82.2 114.1 0.72 84.6 0.98 2.8 28.93
24x24x24 85.4 113.2 0.75 82.2 1.05 7.9 10.54
32x32x32 162.0 202.6 0.80 188.6 0.86 19.9 8.15
48x48x48 185.5 197.2 0.94 214.6 0.86 36.9 5.02
64x64x64 171.2 226.2 0.76 212.7 0.80 76.1 2.25
96x96x96 195.4 229.0 0.85 228.2 0.86 135.2 1.44
100x100x100 170.1 209.1 0.82 188.5 0.90 98.2 1.73
128x128x128 202.6 181.2 1.12 230.4 0.88 145.7 1.39
160x160x160 204.8 194.2 1.05 227.3 0.90 163.6 1.25
192x192x192 209.4 201.0 1.04 210.0 0.99 187.0 1.12
200x200x200 197.0 194.8 1.01 199.7 0.98 155.6 1.27
224x224x224 213.2 200.9 1.06 212.7 1.00 184.5 1.16
256x256x256 212.1 205.8 1.03 214.3 0.99 190.0 1.12
257x257x257 193.7 195.5 0.99 197.8 0.98 168.2 1.15
288x288x288 218.4 210.6 1.04 218.6 1.00 200.7 1.09
320x320x320 218.7 206.4 1.06 218.0 1.00 196.0 1.12
384x384x384 217.2 211.2 1.03 216.5 1.00 203.1 1.07
448x448x448 214.5 208.2 1.03 213.3 1.00 201.1 1.07
500x500x500 207.1 208.7 0.99 207.7 1.00 191.4 1.08
512x512x512 215.4 208.8 1.03 214.6 1.00 201.6 1.07
768x768x768 218.2 216.2 1.01 220.6 0.99 212.9 1.02
1000x1000x1000 217.4 219.9 0.99 220.3 0.99 207.1 1.05
1001x1001x1001 211.3 216.7 0.97 215.0 0.98 206.0 1.03
1024x1024x1024 220.1 218.4 1.01 221.7 0.99 213.0 1.03
1536x1536x1536 222.1 224.1 0.99 225.8 0.98 219.6 1.01
2048x2048x2048 222.2 222.7 1.00 226.9 0.98 217.3 1.02
3072x3072x3072 223.1 224.3 1.00 227.8 0.98 218.4 1.02
4096x4096x4096 217.8 225.7 0.97 225.6 0.96 215.5 1.01
4097x4097x4097 196.3 222.3 0.88 217.4 0.90 211.9 0.93
64x64x1024 176.3 156.6 1.13 216.1 0.81 110.0 1.60
64x1024x64 190.0 179.0 1.06 216.7 0.88 147.0 1.29
256x256x1024 208.6 196.2 1.06 201.1 1.04 184.1 1.13
1024x64x64 194.0 180.1 1.08 227.0 0.86 154.4 1.25
1024x256x256 209.2 205.0 1.02 215.9 0.97 198.3 1.06
4096x96x96 175.5 179.6 0.98 220.2 0.80 181.2 0.97
4096x128x128 197.7 185.0 1.07 220.9 0.89 185.6 1.07
4096x144x144 206.2 192.6 1.07 211.9 0.97 195.1 1.06
4096x160x160 208.5 194.9 1.07 202.2 1.03 188.9 1.11
4096x176x176 210.2 196.3 1.07 170.6 1.23 195.4 1.08
8192x128x128 197.9 186.4 1.06 223.0 0.89 183.9 1.08
10000x8x8 89.3 156.4 0.57 178.0 0.50 31.4 2.86
10000x100x100 178.1 184.9 0.97 219.8 0.81 169.9 1.05
10000x1000x1000 219.1 220.7 0.99 221.9 0.99 212.3 1.03
10000x4000x4000 218.4 228.6 0.96 223.0 0.98 215.4 1.01
GEMM double
m×n×k Eigen GFLOP/s OpenBLAS GFLOP/s Eigen ÷ OpenBLAS Intel oneMKL GFLOP/s Eigen ÷ Intel oneMKL BLIS GFLOP/s Eigen ÷ BLIS
2x2x2 1.5 0.9 1.64 0.5 3.16 0.0 181.35
3x3x3 3.8 2.2 1.74 0.8 4.63 0.0 143.69
4x4x4 13.0 4.3 2.96 1.8 7.32 0.1 206.27
6x6x6 10.6 8.6 1.09 5.0 2.12 0.2 51.92
8x8x8 18.5 30.9 0.60 15.3 1.20 0.5 40.11
12x12x12 23.5 45.4 0.52 24.3 0.97 1.4 16.70
16x16x16 59.7 81.4 0.73 61.5 0.97 3.5 16.99
24x24x24 78.7 92.4 0.85 90.6 0.87 7.9 9.94
32x32x32 83.3 107.4 0.77 97.9 0.85 17.7 4.72
48x48x48 83.5 110.8 0.74 109.4 0.76 36.0 2.32
64x64x64 90.8 112.8 0.81 112.3 0.81 52.3 1.72
96x96x96 96.5 114.7 0.84 114.8 0.84 74.4 1.30
100x100x100 90.6 109.0 0.83 104.7 0.87 66.2 1.37
128x128x128 99.6 84.9 1.17 112.7 0.88 84.6 1.18
160x160x160 103.6 85.5 1.21 115.8 0.89 91.6 1.13
192x192x192 105.5 91.4 1.16 105.5 1.00 96.8 1.09
200x200x200 105.3 94.5 1.11 105.2 1.00 90.9 1.16
224x224x224 105.1 95.7 1.10 104.0 1.01 101.2 1.04
256x256x256 104.8 93.4 1.12 103.8 1.01 96.5 1.09
257x257x257 98.5 91.6 1.08 98.3 1.00 90.9 1.08
288x288x288 104.6 93.5 1.12 103.6 1.01 98.2 1.07
320x320x320 101.2 91.9 1.10 102.5 0.98 100.2 1.01
384x384x384 102.8 93.2 1.10 105.9 0.97 99.3 1.04
448x448x448 105.2 95.6 1.10 106.3 0.99 103.1 1.02
500x500x500 100.9 97.1 1.04 106.0 0.95 100.4 1.00
512x512x512 102.4 98.7 1.04 105.8 0.97 102.5 1.00
768x768x768 105.2 102.9 1.02 109.3 0.96 106.3 0.99
1000x1000x1000 108.7 105.2 1.03 110.9 0.98 106.3 1.03
1001x1001x1001 103.4 104.3 0.99 107.9 0.95 105.5 0.98
1024x1024x1024 106.1 105.3 1.01 110.9 0.96 106.3 1.00
1536x1536x1536 107.9 108.3 1.00 112.4 0.96 107.8 1.00
2048x2048x2048 107.3 109.4 0.98 112.6 0.96 108.0 0.99
3072x3072x3072 104.8 111.3 0.94 112.8 0.93 109.5 0.95
4096x4096x4096 105.1 112.4 0.94 112.6 0.93 108.8 0.97
4097x4097x4097 95.6 111.3 0.86 109.6 0.87 106.0 0.90
64x64x1024 88.8 66.7 1.33 116.2 0.76 67.0 1.33
64x1024x64 97.7 94.4 1.04 113.5 0.86 87.5 1.11
256x256x1024 100.1 87.4 1.15 98.0 1.02 94.0 1.07
1024x64x64 93.2 90.8 1.01 110.3 0.84 80.5 1.16
1024x256x256 101.5 99.6 1.02 103.6 0.98 100.4 1.01
4096x96x96 87.4 94.7 0.92 109.3 0.80 89.1 0.98
4096x128x128 98.0 97.9 1.00 109.6 0.89 89.7 1.10
4096x144x144 102.1 101.0 1.01 109.0 0.94 93.6 1.09
4096x160x160 87.3 99.3 0.88 107.6 0.81 96.5 0.90
4096x176x176 89.3 102.8 0.87 105.3 0.85 99.1 0.90
8192x128x128 98.0 98.3 1.00 109.7 0.89 90.2 1.09
10000x8x8 39.4 65.1 0.57 75.8 0.52 15.1 2.62
10000x100x100 86.4 95.2 0.91 109.2 0.79 84.0 1.03
10000x1000x1000 103.5 111.3 0.93 107.4 0.96 107.7 0.97
10000x4000x4000 106.2 114.4 0.93 109.9 0.97 110.7 0.96
TRSM float
m×n Eigen GFLOP/s OpenBLAS GFLOP/s Eigen ÷ OpenBLAS Intel oneMKL GFLOP/s Eigen ÷ Intel oneMKL BLIS GFLOP/s Eigen ÷ BLIS
2x2 0.1 0.2 0.60 0.1 1.66 0.0 51.05
3x3 0.4 0.5 0.79 0.2 1.69 0.0 45.94
4x4 0.8 1.2 0.70 0.5 1.53 0.0 48.51
6x6 2.2 1.9 1.15 1.5 1.49 0.1 40.88
8x8 4.5 2.8 1.57 3.8 1.18 0.1 37.64
12x12 7.2 4.6 1.58 8.3 0.78 0.4 18.64
16x16 21.9 5.2 4.17 16.5 1.33 0.5 41.43
24x24 32.8 8.1 4.09 28.1 1.17 1.7 19.25
32x32 56.7 9.9 5.74 40.4 1.40 2.7 21.26
48x48 67.3 14.5 4.65 52.8 1.27 3.8 17.95
64x64 64.1 18.2 3.52 60.9 1.03 6.1 10.65
96x96 88.0 25.6 3.44 80.8 1.09 10.7 8.22
100x100 77.4 25.3 3.05 73.7 1.06 7.9 9.80
128x128 87.7 31.7 2.73 97.8 0.90 13.7 6.40
192x192 114.4 41.5 2.76 121.6 0.94 20.6 5.56
200x200 128.6 41.8 3.09 116.8 1.10 18.4 6.97
256x256 119.1 48.8 2.43 137.2 0.87 25.9 4.61
257x257 119.8 46.6 2.58 123.6 0.97 21.7 5.51
384x384 143.9 62.4 2.28 155.7 0.93 35.8 4.02
500x500 151.9 74.3 2.05 152.8 0.99 42.9 3.51
512x512 139.1 75.6 1.83 160.9 0.88 44.9 3.10
768x768 148.1 96.3 1.53 174.8 0.85 61.9 2.39
1000x1000 158.5 110.4 1.44 183.1 0.87 69.8 2.27
1001x1001 148.1 109.3 1.36 176.7 0.84 69.7 2.12
1024x1024 131.3 110.2 1.19 183.2 0.73 74.6 1.76
1536x1536 132.9 133.5 0.99 198.8 0.67 95.2 1.39
2048x2048 189.2 145.7 1.29 206.6 0.93 109.6 1.73
3072x3072 193.7 162.6 1.19 206.8 0.94 129.5 1.49
4096x4096 194.8 171.8 1.13 203.7 0.96 142.9 1.36
4097x4097 184.0 169.9 1.08 198.9 0.92 140.1 1.31
64x4096 50.6 18.4 2.75 65.3 0.77 7.8 6.58
256x4096 90.4 48.3 1.85 127.3 0.71 26.7 3.39
1024x8 62.6 37.4 1.80 68.1 0.87 27.9 2.25
1024x64 134.7 90.2 1.54 157.6 0.85 60.6 2.22
1024x256 151.8 104.6 1.45 179.4 0.85 69.2 2.19
1024x4096 163.1 110.7 1.48 185.7 0.88 74.7 2.18
4096x8 65.7 42.1 1.55 62.0 1.06 43.1 1.52
4096x64 148.6 126.4 1.16 165.7 0.90 108.5 1.38
4096x256 154.3 159.9 0.96 202.4 0.76 133.5 1.16
4096x1024 200.3 172.4 1.16 213.1 0.94 144.3 1.39
TRSM double
m×n Eigen GFLOP/s OpenBLAS GFLOP/s Eigen ÷ OpenBLAS Intel oneMKL GFLOP/s Eigen ÷ Intel oneMKL BLIS GFLOP/s Eigen ÷ BLIS
2x2 0.2 0.2 0.66 0.1 1.81 0.0 35.02
3x3 0.4 0.4 0.95 0.2 1.74 0.0 30.38
4x4 0.9 0.9 0.95 0.6 1.65 0.0 30.94
6x6 2.2 1.8 1.27 1.5 1.47 0.1 24.46
8x8 6.1 2.8 2.18 4.0 1.51 0.2 31.02
12x12 8.6 4.0 2.10 8.4 1.04 0.6 14.05
16x16 19.2 4.3 4.44 17.4 1.15 1.0 18.44
24x24 30.1 6.5 4.52 32.8 0.94 1.9 15.78
32x32 34.7 8.0 4.24 42.1 0.84 3.4 10.14
48x48 42.3 10.7 3.90 47.7 0.89 5.9 7.15
64x64 45.8 13.6 3.36 57.4 0.80 8.5 5.40
96x96 54.9 16.8 3.26 71.7 0.78 13.4 4.03
100x100 51.1 16.5 3.10 67.2 0.73 11.5 4.43
128x128 56.9 18.6 3.06 77.7 0.73 16.6 3.42
192x192 71.1 21.8 3.26 90.1 0.79 24.2 2.93
200x200 74.4 22.3 3.36 88.6 0.83 23.3 3.20
256x256 74.4 23.7 3.10 90.6 0.82 29.8 2.50
257x257 66.8 23.0 2.90 82.9 0.81 28.0 2.39
384x384 78.0 25.7 3.04 87.0 0.89 38.1 2.05
500x500 73.9 33.3 2.21 91.2 0.81 43.5 1.70
512x512 66.3 34.0 1.95 89.5 0.74 40.4 1.64
768x768 69.7 41.4 1.68 96.0 0.73 56.6 1.23
1000x1000 73.2 50.5 1.45 101.6 0.72 63.2 1.16
1001x1001 66.3 50.2 1.32 98.8 0.67 63.3 1.05
1024x1024 69.4 50.7 1.37 101.5 0.68 59.0 1.18
1536x1536 94.8 60.1 1.58 104.4 0.91 69.2 1.37
2048x2048 95.3 67.8 1.41 103.6 0.92 75.5 1.26
3072x3072 90.9 76.3 1.19 102.0 0.89 82.5 1.10
4096x4096 88.9 83.3 1.07 103.3 0.86 87.1 1.02
4097x4097 81.3 82.6 0.98 101.4 0.80 87.5 0.93
64x4096 29.8 13.1 2.27 47.5 0.62 9.4 3.16
256x4096 52.7 23.2 2.27 82.8 0.64 28.9 1.82
1024x8 32.9 21.4 1.59 31.7 0.98 20.1 1.63
1024x64 75.9 43.0 1.78 82.6 0.90 49.3 1.54
1024x256 76.8 48.9 1.57 95.0 0.81 56.3 1.36
1024x4096 83.5 49.3 1.69 98.3 0.85 58.1 1.44
4096x8 31.6 23.8 1.32 25.7 1.23 18.5 1.72
4096x64 69.7 62.4 1.13 78.0 0.89 61.2 1.13
4096x256 73.4 78.7 0.93 98.9 0.74 80.1 0.92
4096x1024 100.3 82.2 1.22 105.7 0.95 86.9 1.16
SYRK float
n×k Eigen GFLOP/s OpenBLAS GFLOP/s Eigen ÷ OpenBLAS Intel oneMKL GFLOP/s Eigen ÷ Intel oneMKL BLIS GFLOP/s Eigen ÷ BLIS
2x2 0.1 0.2 0.55 0.1 1.31 0.0 21.90
3x3 0.3 0.6 0.55 0.2 1.30 0.0 19.23
4x4 0.9 1.3 0.67 0.6 1.45 0.0 23.88
6x6 1.7 3.1 0.56 1.5 1.12 0.1 15.57
8x8 5.0 7.0 0.71 3.8 1.31 0.2 20.94
12x12 7.9 15.1 0.52 8.1 0.99 0.8 9.34
16x16 22.9 27.5 0.83 19.4 1.16 1.4 16.04
24x24 35.3 41.1 0.86 32.8 1.06 3.8 9.23
32x32 60.3 53.2 1.14 54.1 1.12 9.0 6.68
48x48 79.2 85.3 0.93 81.3 0.97 17.5 4.53
64x64 90.1 83.4 1.08 92.7 0.97 36.4 2.47
96x96 114.4 114.2 1.00 114.3 1.00 74.2 1.54
100x100 101.0 115.7 0.87 103.5 0.98 55.9 1.81
128x128 126.5 121.7 1.04 127.0 0.99 90.6 1.40
192x192 148.0 149.3 0.99 152.3 0.99 134.5 1.10
200x200 142.4 153.5 0.93 150.2 0.95 110.4 1.29
256x256 160.7 157.3 1.02 164.8 0.98 153.2 1.04
257x257 144.3 148.5 0.97 152.8 0.94 129.5 1.12
384x384 179.2 174.4 1.03 183.8 0.97 172.9 1.04
500x500 180.0 178.8 1.01 180.8 1.00 162.7 1.11
512x512 186.7 173.4 1.08 186.9 1.00 170.7 1.09
768x768 192.6 189.2 1.02 196.5 0.98 186.2 1.03
1000x1000 199.7 195.3 1.02 202.6 0.99 187.4 1.06
1001x1001 187.4 190.0 0.98 195.1 0.97 185.9 1.01
1024x1024 198.5 190.7 1.04 198.9 1.00 193.2 1.03
1536x1536 207.0 203.2 1.02 208.4 0.99 202.7 1.02
2048x2048 209.7 205.4 1.02 214.8 0.98 206.4 1.02
3072x3072 206.5 209.2 0.99 217.9 0.95 209.4 0.99
4096x4096 204.5 212.3 0.96 218.9 0.93 209.6 0.98
4097x4097 194.3 209.7 0.93 213.1 0.92 204.2 0.95
64x4096 91.1 97.4 0.94 90.2 1.01 68.8 1.32
256x4096 152.9 153.7 0.99 154.5 0.99 147.7 1.03
1024x4096 198.2 192.1 1.03 198.8 1.00 193.4 1.03
4096x8 90.0 61.5 1.46 88.7 1.00 51.8 1.75
4096x64 169.1 175.9 0.96 188.2 0.90 179.5 0.94
4096x256 205.9 212.9 0.97 221.8 0.93 208.8 0.99
4096x1024 205.6 209.8 0.98 219.9 0.93 208.8 0.99
SYRK double
n×k Eigen GFLOP/s OpenBLAS GFLOP/s Eigen ÷ OpenBLAS Intel oneMKL GFLOP/s Eigen ÷ Intel oneMKL BLIS GFLOP/s Eigen ÷ BLIS
2x2 0.2 0.2 0.83 0.1 1.88 0.0 31.66
3x3 0.4 0.6 0.80 0.3 1.71 0.0 26.01
4x4 1.1 1.3 0.88 0.6 1.83 0.0 30.19
6x6 2.4 3.1 0.75 1.5 1.55 0.1 20.76
8x8 6.3 6.4 0.97 3.8 1.65 0.2 25.42
12x12 9.5 12.1 0.79 7.6 1.25 0.7 13.50
16x16 22.9 18.2 1.26 16.7 1.37 1.8 13.08
24x24 34.0 26.1 1.30 29.4 1.16 3.9 8.62
32x32 43.0 31.4 1.37 40.3 1.07 8.7 4.94
48x48 47.2 39.4 1.20 48.3 0.98 18.5 2.50
64x64 55.1 43.2 1.26 56.4 0.98 28.9 1.91
96x96 65.1 56.6 1.15 67.0 0.97 46.3 1.41
100x100 63.7 58.8 1.08 63.5 1.00 43.0 1.49
128x128 73.2 56.0 1.31 74.3 0.98 61.8 1.19
192x192 82.5 70.3 1.17 86.5 0.96 75.3 1.10
200x200 84.4 80.3 1.05 88.1 0.96 71.9 1.17
256x256 89.8 73.2 1.23 91.7 0.97 83.0 1.08
257x257 83.1 77.8 1.06 86.1 0.97 75.6 1.10
384x384 91.9 81.8 1.12 92.0 1.00 86.8 1.06
500x500 93.0 86.2 1.08 96.5 0.96 88.1 1.05
512x512 93.1 85.6 1.08 94.3 0.99 91.5 1.02
768x768 98.3 94.5 1.04 97.3 1.01 97.3 1.01
1000x1000 102.6 100.3 1.03 103.8 0.99 99.0 1.04
1001x1001 96.6 98.5 0.98 98.9 0.98 98.1 0.98
1024x1024 100.3 98.2 1.02 103.3 0.97 100.1 1.00
1536x1536 101.8 103.6 0.98 107.0 0.96 103.3 0.98
2048x2048 97.4 106.0 0.92 107.5 0.91 103.4 0.94
3072x3072 94.0 108.7 0.86 108.9 0.87 105.3 0.89
4096x4096 93.2 110.2 0.85 109.2 0.85 106.5 0.88
4097x4097 88.6 109.3 0.81 106.6 0.83 103.4 0.86
64x4096 51.6 39.8 1.29 52.4 0.98 39.6 1.31
256x4096 83.6 73.2 1.14 82.3 1.01 80.9 1.03
1024x4096 100.0 98.3 1.02 102.1 0.98 98.7 1.01
4096x8 20.1 31.2 0.65 30.6 0.66 26.0 0.78
4096x64 89.6 96.0 0.93 83.8 1.07 92.8 0.97
4096x256 91.6 110.1 0.83 108.8 0.84 107.3 0.85
4096x1024 92.5 110.2 0.84 109.1 0.85 106.5 0.87
POTRF float
n Eigen GFLOP/s OpenBLAS GFLOP/s Eigen ÷ OpenBLAS Intel oneMKL GFLOP/s Eigen ÷ Intel oneMKL
2 0.2 0.1 2.40 0.2 1.31
3 0.6 0.3 2.36 0.6 0.96
4 0.8 0.4 1.89 1.4 0.54
6 1.1 0.8 1.38 0.9 1.19
8 1.7 1.3 1.35 1.4 1.24
12 2.7 2.5 1.07 2.3 1.21
16 4.1 4.0 1.03 3.2 1.26
24 6.4 7.8 0.84 3.8 1.66
32 8.7 9.2 0.94 5.4 1.60
48 14.3 11.4 1.27 7.7 1.83
64 19.8 17.0 1.17 9.5 2.07
96 28.2 24.2 1.17 11.3 2.48
100 25.6 22.6 1.14 11.5 2.21
128 47.7 33.7 1.42 12.5 3.80
192 68.1 43.2 1.58 65.6 1.04
200 65.5 40.3 1.62 69.9 0.94
256 90.5 56.3 1.60 84.2 1.08
257 78.2 52.7 1.48 82.5 0.95
384 116.8 74.3 1.57 113.6 1.03
500 118.9 74.0 1.61 126.5 0.94
512 120.9 82.5 1.47 133.3 0.91
768 132.0 95.4 1.38 137.9 0.96
1000 143.5 101.3 1.42 148.7 0.96
1001 135.9 99.4 1.37 143.3 0.95
1024 137.6 105.0 1.31 133.2 1.03
1536 162.4 125.0 1.30 162.2 1.00
2048 176.5 139.0 1.27 176.4 1.00
3072 175.7 152.7 1.15 180.0 0.98
4096 175.3 158.4 1.11 176.7 0.99
4097 168.8 157.0 1.07 175.9 0.96
POTRF double
n Eigen GFLOP/s OpenBLAS GFLOP/s Eigen ÷ OpenBLAS Intel oneMKL GFLOP/s Eigen ÷ Intel oneMKL
2 0.3 0.1 2.38 0.2 1.54
3 0.5 0.3 2.05 0.5 1.02
4 0.7 0.5 1.45 1.2 0.57
6 1.0 1.0 1.01 0.9 1.13
8 1.6 1.5 1.06 1.3 1.23
12 2.9 2.5 1.13 2.5 1.16
16 4.2 3.8 1.10 3.5 1.20
24 7.0 6.1 1.15 3.6 1.92
32 9.0 8.3 1.08 5.4 1.66
48 14.1 9.8 1.43 8.9 1.58
64 16.9 13.4 1.26 11.1 1.52
96 23.4 19.0 1.22 15.1 1.57
100 22.1 18.1 1.22 15.6 1.41
128 34.6 24.5 1.42 13.3 2.58
192 46.0 32.5 1.42 45.1 1.02
200 47.2 29.6 1.60 46.7 1.01
256 55.3 35.6 1.55 56.2 0.99
257 49.7 34.3 1.45 50.4 0.98
384 62.3 40.3 1.55 64.3 0.97
500 62.3 40.5 1.54 67.2 0.93
512 60.6 41.7 1.45 65.1 0.93
768 68.1 47.8 1.43 72.0 0.94
1000 77.4 49.2 1.57 79.2 0.98
1001 72.9 48.6 1.50 67.0 1.09
1024 74.1 50.5 1.47 72.3 1.02
1536 84.0 54.7 1.54 85.4 0.98
2048 82.6 59.2 1.40 85.1 0.97
3072 81.9 65.8 1.24 88.1 0.93
4096 75.4 68.5 1.10 83.0 0.91
4097 72.7 68.4 1.06 82.7 0.88
GETRF float
n Eigen GFLOP/s OpenBLAS GFLOP/s Eigen ÷ OpenBLAS Intel oneMKL GFLOP/s Eigen ÷ Intel oneMKL
2 0.2 0.1 1.84 0.3 0.58
3 0.4 0.2 2.03 0.9 0.47
4 0.7 0.4 1.88 2.1 0.31
6 1.2 0.7 1.81 1.0 1.23
8 1.9 0.9 2.03 0.8 2.33
12 3.1 1.5 1.94 1.5 2.08
16 4.6 2.2 2.00 2.4 2.04
24 5.2 4.3 1.26 3.5 1.41
32 8.4 5.8 1.47 5.1 1.62
48 13.7 10.0 1.40 9.1 1.47
64 18.7 12.9 1.47 13.6 1.35
96 28.3 19.2 1.48 23.2 1.21
100 25.9 19.6 1.33 23.1 1.11
128 39.9 24.5 1.66 32.6 1.20
192 58.3 35.7 1.65 50.8 1.14
200 58.0 35.7 1.62 52.8 1.10
256 62.5 44.3 1.41 68.8 0.91
257 62.9 43.1 1.45 65.0 0.97
384 71.7 60.2 1.21 96.9 0.73
500 82.3 67.2 1.22 109.5 0.75
512 78.4 70.2 1.12 115.1 0.68
768 108.0 86.8 1.25 134.5 0.80
1000 122.9 101.1 1.22 142.6 0.86
1001 116.9 99.7 1.18 136.3 0.86
1024 116.9 99.9 1.18 130.0 0.89
1536 133.1 124.7 1.07 158.7 0.84
2048 148.6 138.2 1.07 165.7 0.90
3072 158.5 153.4 1.03 173.8 0.91
4096 156.1 164.1 0.95 177.5 0.88
4097 148.1 162.6 0.91 182.6 0.81
GETRF double
n Eigen GFLOP/s OpenBLAS GFLOP/s Eigen ÷ OpenBLAS Intel oneMKL GFLOP/s Eigen ÷ Intel oneMKL
2 0.2 0.1 1.88 0.3 0.68
3 0.5 0.2 1.88 0.8 0.55
4 0.7 0.4 1.68 1.9 0.38
6 1.3 0.8 1.54 1.1 1.21
8 2.1 1.2 1.82 1.2 1.88
12 3.0 1.7 1.83 1.9 1.57
16 4.5 2.6 1.80 2.7 1.59
24 5.8 4.0 1.44 3.7 1.54
32 8.4 5.5 1.53 5.2 1.58
48 13.1 8.5 1.57 8.2 1.58
64 17.4 10.8 1.65 11.7 1.46
96 23.7 15.4 1.56 18.9 1.24
100 22.3 15.3 1.47 19.2 1.15
128 28.7 19.4 1.49 23.4 1.22
192 39.1 26.3 1.49 37.2 1.04
200 41.1 26.1 1.58 38.7 1.06
256 44.8 30.9 1.43 38.5 1.18
257 41.2 30.2 1.34 41.5 1.01
384 49.9 36.8 1.35 53.4 0.94
500 52.0 38.9 1.33 56.5 0.93
512 49.7 40.3 1.24 52.4 0.95
768 59.5 46.9 1.27 58.7 1.01
1000 67.5 52.6 1.28 64.8 1.04
1001 63.8 52.2 1.22 61.7 1.04
1024 65.5 53.0 1.24 62.6 1.05
1536 70.0 63.3 1.10 69.4 1.01
2048 77.2 68.2 1.13 74.8 1.03
3072 75.8 77.6 0.98 70.7 1.07
4096 75.0 83.2 0.90 93.3 0.81
4097 71.7 82.4 0.87 91.6 0.78
GEQRF float
m×n Eigen GFLOP/s OpenBLAS GFLOP/s Eigen ÷ OpenBLAS Intel oneMKL GFLOP/s Eigen ÷ Intel oneMKL
2x2 0.1 0.1 0.68 0.5 0.16
3x3 0.1 0.2 0.71 0.5 0.26
4x4 0.2 0.3 0.71 0.7 0.30
6x6 0.4 0.6 0.77 0.9 0.50
8x8 0.7 0.9 0.79 1.3 0.54
12x12 1.4 1.6 0.88 2.2 0.63
16x16 2.3 2.3 1.01 3.1 0.74
24x24 4.1 3.5 1.16 4.3 0.94
32x32 5.7 4.6 1.23 6.2 0.92
48x48 9.6 8.3 1.16 9.0 1.07
64x64 8.1 10.2 0.80 11.6 0.69
96x96 17.0 14.8 1.15 16.9 1.00
100x100 13.8 15.6 0.88 16.8 0.82
128x128 23.6 17.5 1.35 20.0 1.18
192x192 41.6 33.1 1.26 37.3 1.11
200x200 38.1 41.5 0.91 37.6 1.02
256x256 53.2 42.5 1.25 51.5 1.03
257x257 42.0 52.3 0.80 58.0 0.72
384x384 79.5 62.6 1.27 81.2 0.98
500x500 88.9 83.1 1.07 108.2 0.82
512x512 93.8 72.3 1.30 92.0 1.02
768x768 115.0 88.5 1.30 112.9 1.01
1000x1000 122.5 105.8 1.16 135.8 0.90
1001x1001 116.6 103.6 1.13 132.0 0.88
1024x1024 117.6 85.6 1.38 100.3 1.17
1536x1536 132.4 100.9 1.31 126.4 1.05
2048x2048 137.1 103.1 1.33 127.5 1.07
3072x3072 136.8 111.1 1.23 137.4 1.00
4096x4096 125.5 108.2 1.15 146.9 0.86
4097x4097 119.9 108.6 1.10 154.6 0.78
4096x8 21.8 20.7 1.05 29.7 0.74
4096x64 33.4 31.9 1.04 46.4 0.72
4096x256 75.3 59.1 1.28 65.4 1.14
4096x1024 124.6 104.5 1.19 122.4 1.02
10000x8 20.2 19.2 1.05 25.2 0.80
10000x100 36.8 20.6 1.81 61.7 0.59
10000x1000 120.3 107.0 1.13 133.1 0.90
10000x4000 112.1 112.6 1.00 155.3 0.72
100000x8 13.9 13.6 1.02 15.4 0.90
100000x64 16.7 15.9 1.06 33.6 0.50
100000x256 41.0 35.5 1.16 56.1 0.73
GEQRF double
m×n Eigen GFLOP/s OpenBLAS GFLOP/s Eigen ÷ OpenBLAS Intel oneMKL GFLOP/s Eigen ÷ Intel oneMKL
2x2 0.1 0.1 0.65 0.6 0.13
3x3 0.1 0.2 0.67 0.6 0.23
4x4 0.2 0.3 0.71 0.8 0.27
6x6 0.4 0.6 0.73 0.9 0.46
8x8 0.7 0.9 0.76 1.4 0.50
12x12 1.4 1.7 0.80 2.5 0.55
16x16 2.2 2.7 0.83 3.7 0.60
24x24 4.1 4.8 0.85 7.0 0.58
32x32 6.0 6.5 0.92 10.6 0.57
48x48 9.5 10.3 0.91 16.4 0.59
64x64 8.0 13.2 0.60 20.2 0.40
96x96 15.6 14.1 1.09 17.6 0.90
100x100 12.8 14.1 0.91 17.6 0.73
128x128 19.5 13.9 1.39 23.3 0.85
192x192 28.9 25.6 1.13 38.7 0.75
200x200 28.3 32.2 0.87 41.3 0.69
256x256 33.4 30.8 1.08 41.4 0.81
257x257 30.5 36.2 0.84 42.5 0.72
384x384 45.4 40.6 1.11 52.1 0.88
500x500 49.3 48.3 1.02 60.4 0.82
512x512 48.5 43.1 1.13 51.5 0.94
768x768 56.5 51.6 1.09 59.8 0.94
1000x1000 61.1 59.7 1.02 71.2 0.86
1001x1001 58.6 58.3 1.00 68.5 0.86
1024x1024 60.2 52.7 1.15 61.9 0.97
1536x1536 64.9 58.2 1.12 69.5 0.93
2048x2048 66.2 61.4 1.08 72.3 0.92
3072x3072 59.8 62.2 0.96 72.9 0.82
4096x4096 55.0 59.4 0.92 76.6 0.72
4097x4097 53.9 59.6 0.90 78.4 0.69
4096x8 9.1 10.3 0.88 13.7 0.66
4096x64 15.1 12.9 1.17 27.8 0.55
4096x256 35.7 24.0 1.49 44.1 0.81
4096x1024 59.5 55.9 1.07 66.5 0.89
10000x8 9.0 10.0 0.89 13.6 0.67
10000x100 13.0 8.9 1.46 35.7 0.36
10000x1000 47.0 55.0 0.86 62.3 0.76
10000x4000 51.6 62.6 0.83 75.8 0.68
100000x8 5.3 5.9 0.91 6.6 0.81
100000x64 7.3 6.9 1.05 15.5 0.47
100000x256 18.4 15.0 1.22 26.1 0.70
SYEV float
n Eigen GFLOP/s OpenBLAS GFLOP/s Eigen ÷ OpenBLAS Intel oneMKL GFLOP/s Eigen ÷ Intel oneMKL
2 0.6 0.4 1.74 0.3 2.00
3 0.6 0.4 1.57 0.4 1.69
4 0.8 0.5 1.49 0.5 1.47
6 1.2 0.8 1.46 0.9 1.41
8 1.7 1.2 1.50 1.3 1.32
12 2.7 1.9 1.39 2.1 1.28
16 3.8 2.6 1.46 3.5 1.07
24 5.9 3.7 1.60 4.7 1.26
32 7.7 4.5 1.74 7.4 1.04
48 11.3 6.5 1.76 10.7 1.05
64 14.6 7.6 1.92 12.8 1.14
96 22.1 9.3 2.41 18.8 1.16
100 20.3 9.1 2.23 18.7 1.08
128 27.6 10.1 2.72 21.3 1.31
192 38.0 11.3 3.36 33.4 1.14
200 37.8 11.4 3.32 30.7 1.22
256 45.5 12.3 3.66 35.6 1.29
257 39.6 12.3 3.22 30.6 1.30
384 55.6 13.6 4.09 38.0 1.47
500 59.6 14.2 4.19 52.5 1.13
512 63.5 14.3 4.43 42.6 1.50
768 68.7 15.0 4.55 76.2 0.91
1000 52.3 15.2 3.43 86.2 0.61
1001 50.8 15.2 3.33 85.0 0.60
1024 49.0 13.6 3.61 74.3 0.66
1536 44.7 15.5 2.89 75.4 0.59
2048 43.7 14.0 3.09 80.1 0.55
SYEV double
n Eigen GFLOP/s OpenBLAS GFLOP/s Eigen ÷ OpenBLAS Intel oneMKL GFLOP/s Eigen ÷ Intel oneMKL
2 0.6 0.4 1.54 0.3 1.73
3 0.5 0.3 1.48 0.3 1.31
4 0.6 0.5 1.36 0.5 1.37
6 1.0 0.7 1.37 0.7 1.37
8 1.4 1.0 1.31 1.2 1.14
12 2.1 1.8 1.20 1.8 1.17
16 3.0 2.3 1.31 2.9 1.02
24 4.6 3.3 1.39 4.7 0.97
32 6.0 4.1 1.48 6.5 0.92
48 8.6 5.1 1.69 8.6 1.00
64 10.9 6.4 1.69 12.0 0.92
96 15.2 7.8 1.94 15.6 0.99
100 15.1 7.3 2.08 16.9 0.89
128 18.2 7.9 2.28 18.9 0.96
192 22.3 8.4 2.63 25.7 0.87
200 22.9 9.5 2.39 26.9 0.85
256 25.8 10.0 2.57 29.8 0.87
257 24.7 10.0 2.46 29.3 0.84
384 31.3 10.2 3.05 37.1 0.84
500 29.6 11.4 2.59 41.6 0.71
512 31.8 10.4 3.06 40.1 0.79
768 23.3 11.9 1.96 45.6 0.51
1000 21.1 11.9 1.77 50.3 0.42
1001 20.8 11.9 1.74 48.7 0.43
1024 20.8 11.1 1.87 49.2 0.42
1536 20.2 11.2 1.80 53.3 0.38
2048 20.1 11.3 1.77 55.0 0.37
GESDD float
m×n Eigen GFLOP/s OpenBLAS GFLOP/s Eigen ÷ OpenBLAS Intel oneMKL GFLOP/s Eigen ÷ Intel oneMKL
2x2 1.9 0.2 9.17 0.3 7.11
3x3 1.4 0.4 3.34 0.4 3.20
4x4 1.4 0.6 2.18 0.6 2.24
6x6 1.4 1.2 1.19 1.1 1.25
8x8 1.7 1.8 0.96 1.8 0.96
12x12 2.1 2.9 0.71 2.8 0.74
16x16 3.2 3.8 0.84 4.7 0.68
24x24 4.7 5.4 0.88 6.0 0.79
32x32 6.4 9.0 0.71 10.6 0.61
48x48 10.4 14.3 0.73 15.9 0.66
64x64 13.0 20.8 0.62 23.8 0.55
96x96 21.9 30.5 0.72 34.9 0.63
100x100 22.4 31.7 0.71 33.6 0.66
128x128 28.8 40.5 0.71 45.5 0.63
192x192 48.8 62.5 0.78 69.3 0.71
200x200 51.0 66.8 0.77 72.1 0.71
256x256 61.3 75.1 0.82 79.8 0.77
257x257 64.0 83.5 0.77 91.5 0.70
384x384 91.6 103.1 0.89 108.0 0.85
500x500 109.9 128.9 0.85 136.2 0.81
512x512 108.1 120.5 0.89 122.7 0.88
768x768 134.6 144.0 0.94 145.2 0.93
1000x1000 131.7 135.4 0.97 153.1 0.86
1001x1001 130.1 143.7 0.91 151.9 0.86
1024x1024 111.6 113.7 0.99 123.7 0.90
1536x1536 123.8 128.6 0.96 137.8 0.90
2048x2048 128.9 133.8 0.96 137.1 0.94
4096x64 104.5 72.1 1.45 124.0 0.84
4096x256 181.8 141.0 1.29 166.7 1.09
4096x1024 176.1 165.1 1.07 184.9 0.95
10000x8 28.6 26.3 1.08 78.1 0.37
10000x100 128.3 59.9 2.13 163.9 0.79
10000x1000 225.9 230.5 0.98 237.6 0.95
GESDD double
m×n Eigen GFLOP/s OpenBLAS GFLOP/s Eigen ÷ OpenBLAS Intel oneMKL GFLOP/s Eigen ÷ Intel oneMKL
2x2 1.7 0.2 7.92 0.3 6.73
3x3 1.0 0.4 2.50 0.4 2.64
4x4 1.0 0.6 1.72 0.6 1.81
6x6 1.1 1.1 0.99 1.0 1.06
8x8 1.1 1.5 0.72 1.5 0.72
12x12 1.2 2.6 0.48 2.5 0.48
16x16 2.3 3.5 0.66 4.2 0.55
24x24 3.3 4.9 0.68 6.5 0.52
32x32 4.6 8.1 0.57 8.9 0.53
48x48 7.3 11.6 0.62 13.1 0.56
64x64 9.0 17.2 0.53 18.5 0.48
96x96 14.4 23.9 0.60 26.0 0.55
100x100 14.6 24.2 0.60 26.0 0.56
128x128 18.5 29.4 0.64 34.1 0.54
192x192 29.6 41.2 0.72 49.1 0.60
200x200 31.0 45.7 0.68 54.1 0.57
256x256 37.3 49.6 0.75 60.4 0.62
257x257 37.9 53.4 0.71 65.1 0.58
384x384 52.8 64.1 0.82 79.0 0.67
500x500 61.8 73.1 0.84 92.8 0.67
512x512 57.1 67.5 0.84 81.3 0.71
768x768 59.4 67.7 0.88 73.7 0.81
1000x1000 63.2 74.8 0.83 78.1 0.82
1001x1001 62.1 73.4 0.83 76.6 0.82
1024x1024 59.0 67.1 0.88 70.7 0.83
1536x1536 65.1 72.2 0.90 74.6 0.87
2048x2048 68.1 75.6 0.90 76.7 0.89
4096x64 52.1 36.6 1.43 75.7 0.69
4096x256 92.5 66.6 1.39 102.2 0.91
4096x1024 88.0 93.4 0.94 95.8 0.92
10000x8 11.6 20.2 0.58 41.8 0.28
10000x100 50.7 28.5 1.78 92.4 0.55
10000x1000 99.2 120.2 0.82 115.9 0.86
GEEV float
n Eigen GFLOP/s OpenBLAS GFLOP/s Eigen ÷ OpenBLAS Intel oneMKL GFLOP/s Eigen ÷ Intel oneMKL
2 2.0 0.2 8.50 0.3 7.15
3 0.9 0.4 2.44 0.4 2.28
4 1.1 0.6 1.95 0.6 1.80
6 1.6 1.0 1.66 1.0 1.53
8 2.3 1.5 1.47 1.6 1.48
12 3.2 2.4 1.34 2.2 1.43
16 4.8 3.1 1.57 3.3 1.41
24 6.2 4.3 1.41 4.3 1.48
32 8.9 5.7 1.55 5.8 1.54
48 12.4 7.3 1.68 8.2 1.51
64 13.7 8.6 1.58 9.8 1.40
96 17.3 9.5 1.81 11.3 1.54
100 16.0 9.7 1.67 11.3 1.40
128 18.6 11.0 1.67 14.9 1.26
192 22.7 22.9 0.99 25.3 0.90
200 21.9 24.9 0.87 25.3 0.88
256 23.7 30.0 0.79 34.0 0.70
257 22.8 30.8 0.73 32.9 0.70
384 20.8 46.0 0.44 51.6 0.41
500 22.7 55.7 0.41 64.5 0.35
512 23.5 34.4 0.68 39.3 0.60
768 23.6 61.5 0.38 71.8 0.33
1000 21.8 83.4 0.26 99.4 0.22
1001 21.8 85.0 0.25 98.0 0.23
1024 14.6 68.0 0.22 77.4 0.19
GEEV double
n Eigen GFLOP/s OpenBLAS GFLOP/s Eigen ÷ OpenBLAS Intel oneMKL GFLOP/s Eigen ÷ Intel oneMKL
2 2.1 0.2 9.63 0.6 3.41
3 0.8 0.3 2.29 0.7 1.17
4 1.1 0.5 1.95 1.0 1.04
6 1.3 0.9 1.53 1.6 0.81
8 2.0 1.2 1.54 2.3 0.90
12 2.7 2.0 1.38 3.2 0.82
16 4.0 2.8 1.43 4.2 0.95
24 5.8 4.0 1.41 5.6 1.05
32 7.0 4.8 1.41 6.5 1.12
48 9.3 5.9 1.57 8.1 1.14
64 10.0 6.6 1.52 9.1 1.09
96 11.6 6.8 1.68 10.3 1.15
100 10.7 6.9 1.56 10.5 1.02
128 11.8 7.5 1.55 6.9 1.72
192 12.3 14.4 0.87 16.9 0.72
200 13.8 15.5 0.88 17.1 0.81
256 13.4 17.4 0.77 17.9 0.75
257 12.8 18.4 0.70 21.4 0.59
384 13.5 26.4 0.51 30.3 0.45
500 12.2 32.5 0.37 39.6 0.31
512 11.4 20.1 0.57 19.4 0.58
768 10.3 31.6 0.33 31.7 0.32
1000 10.2 46.4 0.22 53.8 0.19
1001 10.1 45.6 0.22 52.9 0.19
1024 9.2 38.9 0.24 38.4 0.24

Reproducibility

The MR !2903 harness, original commit 778e20997982c76c7a803d4c958574aa98418ae8, was applied without conflicts onto upstream master ab4f7316dc90a936ba06463d241a765d9ce9e0ba. The first two AXPY runs use combined commit 11cf0c2899fab5c25593e3ef76315dfd9eb1a63b. Subsequent runs use 4e0c35ecbfcc0e0039d4b77d6bfca4ab72ad1da7, which adds only the DOT validation correction and its regression check; the complete Eigen header tree matches that upstream master in every run. The result files retain all ten samples, compiler flags, library versions, thread caps, affinity and run conditions. Machine identifiers and installation paths have been anonymized; numerical samples are unchanged.

BLIS was built from upstream release 2.1, commit caf0db6be1202d9c83c79b51e75eceb96aa8b556, with --disable-threading --enable-shared --disable-static skx. The runtime configuration query also reports skx.

Download the machine profile, shape grid, and the result files:

The DOT check originally scaled its allowance by the dot-product result, which can nearly cancel. A 16-element float case was falsely rejected even though both implementations agreed with a 256-bit MPFR reference to within one float epsilon times the sum of absolute products. The correction uses the larger of the original allowance and 64 * epsilon * sum(abs(x_i * y_i)) in the untimed check; the timed kernels are unchanged. Regression checks cover the captured cancellation case, an incorrect result, zero, and non-finite values. The MPFR reproducer retains the exact operands.

Result Value Absolute error against MPFR
MPFR, 256 bits -0.001443878941188359
Eigen, float -0.001443922519683838 4.36e-8
OpenBLAS, float -0.001443852204829454 2.67e-8

To reconstruct the measured source, check out upstream master ab4f7316dc90a936ba06463d241a765d9ce9e0ba and cherry-pick the harness commit 778e20997982c76c7a803d4c958574aa98418ae8, then apply the DOT validation patch with git am dot-validation.patch so the benchmark worktree is clean. Install Google Benchmark 1.8.3 built with CMAKE_BUILD_TYPE=Release and the listed libraries. Put the downloaded profile in a directory named profiles and the shape grid in shapes.json. Configure library discovery as described in the profile; build on an idle machine, then wait for compilation load to subside before timing.

For example, from the Eigen checkout, select exactly the published GEMM shapes below. First run the command with --dry-run -j JOBS in place of --no-build to build and list the cells, choosing JOBS for the available memory and CPUs. Once compilation load subsides, run it as shown to measure:

filter=$(python3 -c 'import json,re; g=json.load(open("shapes.json")); print("/(?:f32|f64)/(?:" + "|".join(map(re.escape,g["GEMM"])) + ")$")')
python3 benchmarks/comparison/run.py --machine xeon-gold-6444y \
  --machines-dir profiles --arms openblas --ops GEMM --scalars f32,f64 \
  --threads 1 --repetitions 10 --min-time 0.2s --filter "$filter" --no-build

Repeat the build and measurement steps with each operation’s shape list and each library; restrict BLIS to AXPY, DOT, GEMV, GEMM, TRSM and SYRK. The profile pins CPU 2; adapt this to an available physical core on another machine.

Regenerate the charts from the downloaded result files with scripts/benchmarks/plot_comparison.py --out-dir OUTPUT --cache L1=48K --cache L2=2M --cache L3=45M data/*.json from the website repository.