Eigen vs. BLAS/LAPACK libraries, Apple M4 with NEON (September 2026)
The cells of the Apple M4 SME page measured again on the same machine with Eigen compiled for NEON alone, the default for this platform, against OpenBLAS: what the comparison looks like without the SME unit.
Apple Accelerate and Arm Performance Libraries are not on this page: neither can be held to NEON through documented means. For the comparison with them, see the SME page.
Conditions
| CPU | Apple M4 (Mac mini, Mac16,10), 4 performance and 6 efficiency cores; performance cores: L1d 128 KiB, L2 16 MiB shared by the four; efficiency cores: L1d 64 KiB, L2 4 MiB shared by the six; 24 GiB unified memory; SME2 with a 512-bit streaming vector length and FEAT_SME_F64F64, no non-streaming SVE |
| OS | macOS 27.0 (build 26A428), Darwin 27.0.0 |
| Compiler | Apple clang 21.0.0 (clang-2100.3.34.2), -O3 -DNDEBUG for the default arm64 target, no -mcpu, C++17 |
| Eigen | master 46a2d0c56 (5.0.1-dev), default configuration, no external BLAS. Without -mcpu=apple-m4 the compiler does not define __ARM_FEATURE_SME2, so every Eigen kernel is the NEON code |
| OpenBLAS | 0.3.34 (Homebrew bottle, DYNAMIC_ARCH, OpenMP build), kernel target vortexm4, unchanged from the SME page and not measured again: its rates are those of that page’s session |
| Interface | the library is called through the Fortran BLAS and LAPACK symbols (dgemm_, dpotrf_, …) with column-major operands |
| Threads | 1 for every arm: OPENBLAS_NUM_THREADS and OMP_NUM_THREADS set to 1; Eigen built without OpenMP |
| Method | Google Benchmark 1.9.5, 10 repetitions of at least 0.2 s each per cell, median of the 10 rates. macOS has no interface for binding a thread to a core, so the process is not pinned |
| Date | Eigen: 2026-09-20 (24 runs, about 2.0 hours of measurement). OpenBLAS: 2026-09-19, the SME page’s session |
| Harness | benchmarks/comparison/run.py --isa aarch64-neon from Eigen merge request !2903, machine profile apple-m4-mac-mini |
GEMM at n = 1024 ran at 61 GFLOP/s in double and 124 in float in Eigen, against 57 and 114 for OpenBLAS.
How to read the numbers. Every rate is nominal GFLOP/s: the textbook operation count of the operation, stated in each section below, divided by the median wall time of one call. Both arms of a comparison are built into the same binary and run on the same freshly randomized operands, and the reference library’s result is validated against Eigen’s before it is timed. Eigen was measured twice, in two binaries of the same build, those linked against OpenBLAS and Accelerate, where only the Eigen cells ran. The Eigen line on each chart is the median of the two passes and the shaded band is their spread, the run-to-run noise on this host: within 3 % for 94 % of the cells and above 10 % for 2 %. The widest spreads are binary-dependent rather than noise: GEQRF in double between n = 32 and 96 runs 16 to 27 % slower in one of the two binaries than in the other (9.4 against 12.8 GFLOP/s at n = 48).
A ratio divides that median by OpenBLAS’s rate from the SME page’s session the evening before, since the library does not change with Eigen’s build. Eigen’s AXPY, DOT and GEMV are the same NEON kernels in both builds and bound the drift between the two sessions: they repeat their rates within 0.1 % at the median cell and within 1 % for 92 % of the cells.
Each run covered one operation in one binary. A run started only once the machine had been idle
(other processes using less than 0.35 of a core over two 5 s windows) with no thermal or performance
warning from pmset, and was discarded and repeated if the whole machine averaged 1.35 busy cores
or more during it, or reached 2.0 in any 5 s window; none of the 24 runs had to be repeated.
Spotlight indexing was switched off for the session.
The dotted vertical lines on the charts mark the sizes at which the operands of the call, inputs and outputs together, fill a performance core’s L1 data cache (128 KiB) and the L2 cache that the four performance cores share (16 MiB); the M4 has no L3.
For the eigenvalue and singular value decompositions the operation count is the one of the classical algorithm, so a divide-and-conquer or blocked implementation is credited with work it does not do; the ratios between arms are unaffected.
AXPY
y += alpha * x against ?axpy, alpha = 0.75; (2n) flops. Lengths run from 2 to (2^{24})
(128 MiB per double vector), through every cache level into DRAM.
Short vectors. Up to about n = 32 the AXPY and DOT rates measure the cost of a call rather than the kernel. Eigen’s expression compiles inline into the calling loop, while a call into a shared library pays a cost of its own before it reads an element. That cost is fixed per call, so the ratios at the small end are ratios of fixed costs. The DOT cells in double at n = 2 show it directly: 0.49 ns per call for Eigen against 12.5 ns for OpenBLAS. Eigen still computes the whole operation on every call; nothing is hoisted out of the timed loop.

DOT
x.dot(y) against ?dot; (2n) flops, the same lengths. Real scalars only: the Fortran
convention for returning a complex function value is not fixed by the platform ABI and differs
between library builds, so ?dotc cannot be declared portably.
Up to about n = 32 the rates measure the cost of a call; see AXPY.

GEMV
y.noalias() += A * x against ?gemv, column-major, no transposition; (2mn) flops.
Square matrices, then the short-fat (n = 10000, m grows) and tall-skinny (m = 10000, n grows) sweeps.

GEMM
C.noalias() += A * B against ?gemm, column-major, no transposition; (2mnk) flops.
Square matrices first; then the two tall-skinny sweeps, where m stays at 4096 or 10000 while n = k grows; then the assorted non-square shapes that fit neither.

TRSM
A.triangularView<Lower>().solveInPlace(X) against ?trsm with the m-by-m lower triangle on the
left and n right-hand sides, no transposition, non-unit diagonal; (m(m+1)n) flops. The solve is
destructive, so the timed region includes one copy of B for both arms.
Square shapes (m = n), then the sweeps with a fixed triangle of order 1024 or 4096 and a growing number of right-hand sides, then the remaining shapes with 4096 right-hand sides against a small triangle.

SYRK
C.selfadjointView<Lower>().rankUpdate(A) against ?syrk, lower triangle, no transposition, with
C n-by-n and A n-by-k; (n(n+1)k) flops.
Square shapes (n = k), then the sweeps: a 4096-by-4096 matrix updated by a growing number of columns, and the Gram matrix of a short, wide factor with 4096 columns.

POTRF
LLT<Ref<MatrixXd>> in place against ?potrf, lower triangle, symmetric positive definite operand;
(n^3/3) flops. The timed region includes one copy of the operand for both arms, since the
factorization is destructive.

GETRF
PartialPivLU<Ref<MatrixXd>> in place against ?getrf, square operand; (2n^3/3) flops. Both
arms copy the operand into a destination allocated once and factorize the copy; neither allocates
inside the timed region.

GEQRF
HouseholderQR<Ref<MatrixXd>> in place against ?geqrf, m ≥ n; (2mn^2 - 2n^3/3) flops, the
same copy-then-factorize protocol as GETRF.
Square shapes, then the tall-skinny sweeps with m fixed at 4096, 10000 and 100000.

SYEV
SelfAdjointEigenSolver with eigenvectors against ?syev (jobz = 'V', lower triangle), the
like-for-like pair: tridiagonalization followed by implicit QR iteration on both sides; (9n^3)
flops, the count of that algorithm (Golub & Van Loan, section 8.3.3). Neither works in place: the
solver copies the operand internally and the reference arm pays the same one copy. Sizes to 2048,
where a call of SelfAdjointEigenSolver takes 2.9 s in double.

GESDD
BDCSVD<MatrixXd, ComputeThinU | ComputeThinV> against ?gesdd with jobz = 'S', divide and
conquer on both sides, m ≥ n, the thin U and V computed; (14mn^2 + 8n^3) flops, the Golub-Reinsch
count (Golub & Van Loan, table 8.6.1). Square sizes to 2048, then tall-skinny sweeps with m fixed
at 4096 and 10000.

GEEV
EigenSolver with eigenvectors against ?geev (jobvr = 'V'), a dense random nonsymmetric
operand: Hessenberg reduction, QR iteration to the Schur form and back-substitution for the
eigenvectors on both sides; (25n^3) flops, the count of the Hessenberg QR algorithm with Schur
vectors (Golub & Van Loan, section 7.5.6). Sizes to 1024, where a call of EigenSolver takes
3.5 s in double.

Summary
Geometric mean of the Eigen ÷ library rate ratio over the square shapes in each size band. Above 1, Eigen is faster. Only the vector operations reach the last band.
| Operation | Scalar | Library | n ≤ 16 | 24–128 | 192–1024 | 1536–16384 | > 16384 |
|---|---|---|---|---|---|---|---|
| AXPY | float | OpenBLAS | 4.27 | 1.83 | 1.11 | 1.16 | 1.15 |
| AXPY | double | OpenBLAS | 4.19 | 1.36 | 0.75 | 0.96 | 1.04 |
| DOT | float | OpenBLAS | 17.59 | 7.66 | 1.67 | 1.36 | 1.08 |
| DOT | double | OpenBLAS | 17.35 | 3.52 | 1.35 | 1.33 | 1.07 |
| GEMV | float | OpenBLAS | 2.76 | 1.22 | 1.07 | 0.94 | – |
| GEMV | double | OpenBLAS | 4.08 | 2.38 | 1.76 | 1.12 | – |
| GEMM | float | OpenBLAS | 1.81 | 1.08 | 1.09 | 1.09 | – |
| GEMM | double | OpenBLAS | 1.45 | 1.09 | 1.08 | 1.09 | – |
| TRSM | float | OpenBLAS | 2.98 | 3.44 | 1.42 | 1.08 | – |
| TRSM | double | OpenBLAS | 2.17 | 1.77 | 1.07 | 1.00 | – |
| SYRK | float | OpenBLAS | 0.67 | 1.02 | 1.12 | 1.09 | – |
| SYRK | double | OpenBLAS | 0.53 | 0.96 | 1.07 | 1.06 | – |
| POTRF | float | OpenBLAS | 2.12 | 1.46 | 1.14 | 1.06 | – |
| POTRF | double | OpenBLAS | 2.26 | 1.13 | 1.01 | 1.04 | – |
| GETRF | float | OpenBLAS | 1.75 | 2.20 | 1.29 | 1.04 | – |
| GETRF | double | OpenBLAS | 2.24 | 1.68 | 1.03 | 0.97 | – |
| GEQRF | float | OpenBLAS | 1.51 | 1.35 | 1.13 | 1.18 | – |
| GEQRF | double | OpenBLAS | 1.59 | 1.29 | 1.02 | 1.11 | – |
| SYEV | float | OpenBLAS | 1.29 | 1.60 | 2.10 | 2.27 | – |
| SYEV | double | OpenBLAS | 1.37 | 1.64 | 1.44 | 1.35 | – |
| GESDD | float | OpenBLAS | 1.55 | 1.00 | 1.66 | 1.78 | – |
| GESDD | double | OpenBLAS | 1.46 | 0.82 | 1.16 | 1.10 | – |
| GEEV | float | OpenBLAS | 2.22 | 1.15 | 0.37 | – | – |
| GEEV | double | OpenBLAS | 2.02 | 0.88 | 0.34 | – | – |
Caveats
- Accelerate and Arm Performance Libraries are left out because neither can be held to NEON through documented means; the SME page has the comparison with them.
- The OpenBLAS ratios are formed across two sessions on the same machine, about 9 to 11 hours apart for any one operation; the drift bound above applies to them.
- macOS cannot bind a thread to a core, so a single-threaded rate is that of whichever core the scheduler chose; a busy foreground thread normally stays on a performance core.
- The machine is a desktop with a logged-in session and its background services. Runs that they disturbed beyond the limits above were repeated; smaller disturbances remain in the numbers.
Full tables
GFLOP/s per shape and library, with the Eigen ÷ library ratio: Eigen’s median over its two passes against the library’s rate.
AXPY float
| n | Eigen GFLOP/s | OpenBLAS GFLOP/s | Eigen ÷ OpenBLAS |
|---|---|---|---|
| 2 | 5.4 | 1.3 | 4.02 |
| 3 | 5.4 | 1.8 | 2.97 |
| 4 | 12.1 | 1.9 | 6.46 |
| 6 | 11.0 | 2.3 | 4.70 |
| 8 | 21.5 | 4.7 | 4.59 |
| 12 | 24.2 | 4.9 | 4.94 |
| 16 | 25.9 | 8.2 | 3.15 |
| 24 | 27.7 | 10.7 | 2.58 |
| 32 | 18.4 | 13.0 | 1.41 |
| 48 | 19.8 | 12.9 | 1.53 |
| 64 | 23.6 | 9.0 | 2.64 |
| 96 | 27.2 | 15.7 | 1.73 |
| 100 | 27.1 | 15.6 | 1.74 |
| 128 | 28.0 | 18.0 | 1.56 |
| 192 | 29.2 | 21.1 | 1.38 |
| 256 | 30.0 | 23.0 | 1.30 |
| 384 | 28.6 | 25.2 | 1.13 |
| 512 | 27.7 | 26.5 | 1.04 |
| 768 | 28.1 | 28.0 | 1.00 |
| 1000 | 28.8 | 28.1 | 1.02 |
| 1001 | 28.8 | 28.4 | 1.01 |
| 1024 | 28.9 | 28.2 | 1.02 |
| 1536 | 29.9 | 29.3 | 1.02 |
| 2048 | 30.5 | 29.8 | 1.02 |
| 3072 | 31.1 | 30.3 | 1.03 |
| 4096 | 31.4 | 16.2 | 1.93 |
| 6144 | 31.7 | 30.8 | 1.03 |
| 8192 | 31.8 | 21.4 | 1.49 |
| 10000 | 31.9 | 31.1 | 1.03 |
| 12288 | 32.0 | 30.9 | 1.04 |
| 16384 | 32.0 | 29.2 | 1.09 |
| 32768 | 23.6 | 19.5 | 1.21 |
| 65536 | 23.8 | 19.6 | 1.21 |
| 100000 | 23.8 | 19.8 | 1.20 |
| 131072 | 23.8 | 19.7 | 1.21 |
| 262144 | 23.9 | 19.7 | 1.21 |
| 524288 | 23.7 | 19.9 | 1.19 |
| 1000000 | 20.8 | 16.9 | 1.23 |
| 1048576 | 23.6 | 19.1 | 1.24 |
| 2097152 | 23.5 | 19.9 | 1.18 |
| 4194304 | 18.5 | 18.4 | 1.01 |
| 8388608 | 18.4 | 18.1 | 1.01 |
| 16777216 | 16.5 | 16.8 | 0.98 |
AXPY double
| n | Eigen GFLOP/s | OpenBLAS GFLOP/s | Eigen ÷ OpenBLAS |
|---|---|---|---|
| 2 | 6.0 | 1.3 | 4.53 |
| 3 | 7.1 | 1.9 | 3.85 |
| 4 | 10.8 | 1.9 | 5.73 |
| 6 | 12.1 | 2.2 | 5.53 |
| 8 | 12.9 | 2.9 | 4.47 |
| 12 | 13.9 | 3.2 | 4.37 |
| 16 | 9.3 | 4.5 | 2.08 |
| 24 | 9.8 | 4.5 | 2.17 |
| 32 | 11.1 | 9.0 | 1.23 |
| 48 | 13.6 | 8.8 | 1.55 |
| 64 | 14.0 | 8.7 | 1.62 |
| 96 | 14.6 | 13.2 | 1.11 |
| 100 | 14.7 | 13.1 | 1.12 |
| 128 | 15.0 | 14.7 | 1.02 |
| 192 | 15.4 | 16.6 | 0.93 |
| 256 | 13.8 | 17.7 | 0.78 |
| 384 | 14.0 | 19.1 | 0.73 |
| 512 | 14.4 | 20.0 | 0.72 |
| 768 | 15.0 | 21.0 | 0.71 |
| 1000 | 15.2 | 21.4 | 0.71 |
| 1001 | 15.3 | 21.7 | 0.70 |
| 1024 | 15.2 | 21.5 | 0.71 |
| 1536 | 15.5 | 22.1 | 0.70 |
| 2048 | 15.7 | 22.3 | 0.70 |
| 3072 | 15.9 | 18.6 | 0.85 |
| 4096 | 15.9 | 10.1 | 1.57 |
| 6144 | 16.0 | 18.8 | 0.85 |
| 8192 | 16.0 | 18.1 | 0.88 |
| 10000 | 13.1 | 11.3 | 1.16 |
| 12288 | 12.1 | 11.1 | 1.09 |
| 16384 | 11.8 | 11.1 | 1.06 |
| 32768 | 11.9 | 11.1 | 1.07 |
| 65536 | 11.9 | 11.1 | 1.07 |
| 100000 | 11.9 | 11.1 | 1.07 |
| 131072 | 11.9 | 11.2 | 1.07 |
| 262144 | 11.8 | 11.1 | 1.06 |
| 524288 | 11.8 | 10.7 | 1.10 |
| 1000000 | 11.7 | 11.1 | 1.05 |
| 1048576 | 11.8 | 11.1 | 1.06 |
| 2097152 | 9.2 | 9.2 | 1.00 |
| 4194304 | 9.2 | 9.0 | 1.02 |
| 8388608 | 8.3 | 8.4 | 0.98 |
| 16777216 | 8.0 | 8.0 | 1.00 |
DOT float
| n | Eigen GFLOP/s | OpenBLAS GFLOP/s | Eigen ÷ OpenBLAS |
|---|---|---|---|
| 2 | 6.4 | 0.3 | 20.51 |
| 3 | 8.1 | 0.5 | 17.45 |
| 4 | 11.2 | 0.6 | 18.62 |
| 6 | 12.2 | 0.9 | 14.05 |
| 8 | 21.7 | 1.1 | 19.38 |
| 12 | 32.3 | 1.6 | 20.67 |
| 16 | 26.0 | 1.9 | 13.89 |
| 24 | 38.8 | 2.5 | 15.54 |
| 32 | 46.4 | 3.0 | 15.41 |
| 48 | 46.5 | 3.4 | 13.70 |
| 64 | 46.8 | 9.1 | 5.16 |
| 96 | 45.9 | 8.5 | 5.40 |
| 100 | 45.8 | 8.1 | 5.67 |
| 128 | 46.6 | 15.7 | 2.97 |
| 192 | 46.7 | 20.4 | 2.29 |
| 256 | 46.7 | 23.4 | 1.99 |
| 384 | 46.7 | 27.5 | 1.70 |
| 512 | 46.6 | 29.9 | 1.56 |
| 768 | 46.0 | 32.1 | 1.43 |
| 1000 | 44.9 | 27.9 | 1.61 |
| 1001 | 44.5 | 27.6 | 1.61 |
| 1024 | 44.9 | 33.3 | 1.35 |
| 1536 | 43.1 | 34.8 | 1.24 |
| 2048 | 41.6 | 14.2 | 2.93 |
| 3072 | 39.7 | 36.3 | 1.09 |
| 4096 | 38.7 | 20.6 | 1.88 |
| 6144 | 37.7 | 24.7 | 1.53 |
| 8192 | 37.3 | 26.6 | 1.40 |
| 10000 | 36.8 | 36.6 | 1.00 |
| 12288 | 36.8 | 37.2 | 0.99 |
| 16384 | 36.4 | 36.3 | 1.00 |
| 32768 | 30.3 | 25.4 | 1.19 |
| 65536 | 30.5 | 26.2 | 1.16 |
| 100000 | 30.4 | 27.2 | 1.12 |
| 131072 | 30.5 | 26.8 | 1.14 |
| 262144 | 30.5 | 27.2 | 1.12 |
| 524288 | 29.9 | 27.1 | 1.10 |
| 1000000 | 26.5 | 23.7 | 1.12 |
| 1048576 | 29.3 | 26.6 | 1.10 |
| 2097152 | 29.1 | 26.2 | 1.11 |
| 4194304 | 20.2 | 24.2 | 0.84 |
| 8388608 | 19.2 | 18.5 | 1.04 |
| 16777216 | 18.7 | 18.3 | 1.02 |
DOT double
| n | Eigen GFLOP/s | OpenBLAS GFLOP/s | Eigen ÷ OpenBLAS |
|---|---|---|---|
| 2 | 8.2 | 0.3 | 25.59 |
| 3 | 9.7 | 0.5 | 21.08 |
| 4 | 12.9 | 0.6 | 21.55 |
| 6 | 16.2 | 0.9 | 18.15 |
| 8 | 16.2 | 1.1 | 14.42 |
| 12 | 19.4 | 1.5 | 12.76 |
| 16 | 22.9 | 1.9 | 12.19 |
| 24 | 23.2 | 2.5 | 9.32 |
| 32 | 23.4 | 4.5 | 5.16 |
| 48 | 22.9 | 5.4 | 4.28 |
| 64 | 23.3 | 7.7 | 3.02 |
| 96 | 23.3 | 10.0 | 2.33 |
| 100 | 23.2 | 10.1 | 2.30 |
| 128 | 23.3 | 11.7 | 2.00 |
| 192 | 23.3 | 13.8 | 1.69 |
| 256 | 23.3 | 14.8 | 1.57 |
| 384 | 23.1 | 16.0 | 1.45 |
| 512 | 22.6 | 16.5 | 1.37 |
| 768 | 21.6 | 17.2 | 1.25 |
| 1000 | 20.9 | 17.5 | 1.20 |
| 1001 | 20.9 | 17.4 | 1.20 |
| 1024 | 20.8 | 17.6 | 1.18 |
| 1536 | 19.8 | 18.0 | 1.10 |
| 2048 | 19.3 | 7.0 | 2.74 |
| 3072 | 18.8 | 18.4 | 1.02 |
| 4096 | 18.6 | 10.2 | 1.83 |
| 6144 | 18.4 | 14.7 | 1.25 |
| 8192 | 18.2 | 15.2 | 1.20 |
| 10000 | 16.2 | 15.2 | 1.06 |
| 12288 | 15.3 | 12.9 | 1.19 |
| 16384 | 15.2 | 12.7 | 1.19 |
| 32768 | 15.2 | 13.1 | 1.16 |
| 65536 | 15.2 | 13.4 | 1.14 |
| 100000 | 15.2 | 13.7 | 1.11 |
| 131072 | 15.2 | 13.6 | 1.12 |
| 262144 | 14.9 | 13.6 | 1.10 |
| 524288 | 14.6 | 13.3 | 1.10 |
| 1000000 | 14.6 | 13.3 | 1.10 |
| 1048576 | 14.6 | 13.3 | 1.10 |
| 2097152 | 9.5 | 10.2 | 0.93 |
| 4194304 | 9.4 | 9.2 | 1.02 |
| 8388608 | 9.2 | 9.1 | 1.01 |
| 16777216 | 9.1 | 9.1 | 1.00 |
GEMV float
| m×n | Eigen GFLOP/s | OpenBLAS GFLOP/s | Eigen ÷ OpenBLAS |
|---|---|---|---|
| 2x2 | 1.5 | 0.4 | 3.33 |
| 3x3 | 2.7 | 1.0 | 2.68 |
| 4x4 | 5.5 | 1.8 | 3.13 |
| 6x6 | 10.1 | 3.6 | 2.78 |
| 8x8 | 17.9 | 6.1 | 2.93 |
| 12x12 | 29.7 | 11.8 | 2.52 |
| 16x16 | 40.3 | 19.0 | 2.12 |
| 24x24 | 49.7 | 28.5 | 1.74 |
| 32x32 | 66.2 | 37.7 | 1.76 |
| 48x48 | 58.1 | 51.0 | 1.14 |
| 64x64 | 74.1 | 58.7 | 1.26 |
| 96x96 | 73.1 | 69.1 | 1.06 |
| 100x100 | 57.7 | 69.3 | 0.83 |
| 128x128 | 71.6 | 69.4 | 1.03 |
| 192x192 | 59.9 | 46.3 | 1.29 |
| 200x200 | 57.1 | 48.5 | 1.18 |
| 256x256 | 47.2 | 46.3 | 1.02 |
| 257x257 | 41.0 | 40.7 | 1.01 |
| 384x384 | 44.7 | 46.0 | 0.97 |
| 500x500 | 51.0 | 46.5 | 1.10 |
| 512x512 | 48.3 | 46.2 | 1.05 |
| 768x768 | 47.8 | 47.1 | 1.02 |
| 1000x1000 | 50.0 | 47.5 | 1.05 |
| 1001x1001 | 46.7 | 44.2 | 1.06 |
| 1024x1024 | 48.8 | 44.0 | 1.11 |
| 1536x1536 | 48.9 | 44.7 | 1.10 |
| 2048x2048 | 42.9 | 42.4 | 1.01 |
| 3072x3072 | 28.1 | 25.2 | 1.11 |
| 4096x4096 | 24.7 | 28.2 | 0.88 |
| 4097x4097 | 17.3 | 26.0 | 0.67 |
| 8x10000 | 37.4 | 10.5 | 3.55 |
| 100x10000 | 43.6 | 50.5 | 0.86 |
| 1000x10000 | 21.6 | 27.5 | 0.78 |
| 4000x10000 | 25.4 | 23.4 | 1.09 |
| 10000x8 | 48.5 | 42.5 | 1.14 |
| 10000x100 | 43.8 | 41.9 | 1.05 |
| 10000x1000 | 34.6 | 33.2 | 1.04 |
| 10000x4000 | 30.8 | 27.9 | 1.10 |
GEMV double
| m×n | Eigen GFLOP/s | OpenBLAS GFLOP/s | Eigen ÷ OpenBLAS |
|---|---|---|---|
| 2x2 | 1.9 | 0.4 | 4.61 |
| 3x3 | 3.0 | 0.8 | 3.70 |
| 4x4 | 5.6 | 1.5 | 3.68 |
| 6x6 | 11.6 | 2.2 | 5.18 |
| 8x8 | 17.6 | 4.2 | 4.19 |
| 12x12 | 21.3 | 6.0 | 3.52 |
| 16x16 | 28.3 | 7.3 | 3.89 |
| 24x24 | 31.1 | 9.7 | 3.19 |
| 32x32 | 35.5 | 12.5 | 2.84 |
| 48x48 | 37.5 | 16.5 | 2.28 |
| 64x64 | 36.6 | 12.9 | 2.84 |
| 96x96 | 35.0 | 18.0 | 1.95 |
| 100x100 | 31.8 | 18.1 | 1.75 |
| 128x128 | 35.5 | 16.5 | 2.15 |
| 192x192 | 21.8 | 16.6 | 1.31 |
| 200x200 | 22.9 | 16.9 | 1.35 |
| 256x256 | 23.9 | 16.4 | 1.46 |
| 257x257 | 23.0 | 16.0 | 1.43 |
| 384x384 | 23.3 | 16.9 | 1.38 |
| 500x500 | 24.7 | 16.8 | 1.47 |
| 512x512 | 24.2 | 17.0 | 1.42 |
| 768x768 | 24.0 | 16.9 | 1.42 |
| 1000x1000 | 24.9 | 8.0 | 3.10 |
| 1001x1001 | 24.3 | 7.9 | 3.07 |
| 1024x1024 | 22.6 | 6.7 | 3.39 |
| 1536x1536 | 21.8 | 16.6 | 1.31 |
| 2048x2048 | 13.5 | 9.1 | 1.49 |
| 3072x3072 | 14.8 | 10.8 | 1.37 |
| 4096x4096 | 11.9 | 11.9 | 1.00 |
| 4097x4097 | 10.1 | 15.6 | 0.64 |
| 8x10000 | 22.9 | 4.3 | 5.33 |
| 100x10000 | 20.5 | 16.5 | 1.24 |
| 1000x10000 | 10.8 | 16.0 | 0.68 |
| 4000x10000 | 14.3 | 16.0 | 0.89 |
| 10000x8 | 24.4 | 11.5 | 2.12 |
| 10000x100 | 20.8 | 11.4 | 1.83 |
| 10000x1000 | 17.2 | 11.1 | 1.55 |
| 10000x4000 | 16.0 | 11.0 | 1.45 |
GEMM float
| m×n×k | Eigen GFLOP/s | OpenBLAS GFLOP/s | Eigen ÷ OpenBLAS |
|---|---|---|---|
| 2x2x2 | 2.4 | 0.5 | 4.77 |
| 3x3x3 | 4.3 | 1.5 | 2.91 |
| 4x4x4 | 11.0 | 4.0 | 2.78 |
| 6x6x6 | 11.3 | 8.6 | 1.32 |
| 8x8x8 | 23.6 | 19.1 | 1.24 |
| 12x12x12 | 47.1 | 40.6 | 1.16 |
| 16x16x16 | 55.9 | 63.3 | 0.88 |
| 24x24x24 | 78.8 | 77.3 | 1.02 |
| 32x32x32 | 91.3 | 94.3 | 0.97 |
| 48x48x48 | 101.2 | 103.7 | 0.98 |
| 64x64x64 | 103.6 | 61.2 | 1.69 |
| 96x96x96 | 108.9 | 109.0 | 1.00 |
| 100x100x100 | 105.9 | 101.3 | 1.05 |
| 128x128x128 | 110.0 | 109.9 | 1.00 |
| 160x160x160 | 111.6 | 109.9 | 1.02 |
| 192x192x192 | 116.5 | 92.5 | 1.26 |
| 200x200x200 | 116.4 | 108.2 | 1.08 |
| 224x224x224 | 117.3 | 111.1 | 1.06 |
| 256x256x256 | 116.4 | 110.8 | 1.05 |
| 257x257x257 | 112.7 | 104.4 | 1.08 |
| 288x288x288 | 119.8 | 111.9 | 1.07 |
| 320x320x320 | 120.2 | 112.1 | 1.07 |
| 384x384x384 | 120.7 | 106.8 | 1.13 |
| 448x448x448 | 121.0 | 113.0 | 1.07 |
| 500x500x500 | 121.9 | 111.4 | 1.09 |
| 512x512x512 | 121.9 | 113.1 | 1.08 |
| 768x768x768 | 123.4 | 113.6 | 1.09 |
| 1000x1000x1000 | 123.9 | 113.2 | 1.09 |
| 1001x1001x1001 | 122.5 | 111.4 | 1.10 |
| 1024x1024x1024 | 123.8 | 113.7 | 1.09 |
| 1536x1536x1536 | 124.2 | 113.8 | 1.09 |
| 2048x2048x2048 | 123.8 | 113.4 | 1.09 |
| 3072x3072x3072 | 124.5 | 113.5 | 1.10 |
| 4096x4096x4096 | 124.3 | 113.8 | 1.09 |
| 4097x4097x4097 | 123.9 | 113.0 | 1.10 |
| 64x64x1024 | 101.3 | 100.2 | 1.01 |
| 64x1024x64 | 102.2 | 109.4 | 0.93 |
| 256x256x1024 | 118.6 | 109.6 | 1.08 |
| 1024x64x64 | 102.3 | 102.2 | 1.00 |
| 1024x256x256 | 118.9 | 112.5 | 1.06 |
| 4096x96x96 | 108.9 | 109.4 | 0.99 |
| 4096x128x128 | 112.9 | 110.5 | 1.02 |
| 4096x144x144 | 114.4 | 111.3 | 1.03 |
| 4096x160x160 | 115.5 | 111.6 | 1.03 |
| 4096x176x176 | 116.4 | 112.0 | 1.04 |
| 8192x128x128 | 113.2 | 110.6 | 1.02 |
| 10000x8x8 | 70.4 | 73.5 | 0.96 |
| 10000x100x100 | 112.7 | 111.1 | 1.01 |
| 10000x1000x1000 | 124.0 | 113.4 | 1.09 |
| 10000x4000x4000 | 124.9 | 113.7 | 1.10 |
GEMM double
| m×n×k | Eigen GFLOP/s | OpenBLAS GFLOP/s | Eigen ÷ OpenBLAS |
|---|---|---|---|
| 2x2x2 | 2.5 | 0.6 | 4.10 |
| 3x3x3 | 4.7 | 1.8 | 2.66 |
| 4x4x4 | 7.9 | 4.3 | 1.84 |
| 6x6x6 | 9.5 | 9.3 | 1.02 |
| 8x8x8 | 16.2 | 18.1 | 0.89 |
| 12x12x12 | 25.4 | 31.1 | 0.82 |
| 16x16x16 | 34.4 | 38.8 | 0.89 |
| 24x24x24 | 41.5 | 46.5 | 0.89 |
| 32x32x32 | 44.8 | 47.7 | 0.94 |
| 48x48x48 | 50.9 | 52.1 | 0.98 |
| 64x64x64 | 52.0 | 29.1 | 1.79 |
| 96x96x96 | 52.9 | 53.3 | 0.99 |
| 100x100x100 | 52.9 | 52.7 | 1.00 |
| 128x128x128 | 54.9 | 44.2 | 1.24 |
| 160x160x160 | 56.7 | 54.6 | 1.04 |
| 192x192x192 | 58.3 | 50.0 | 1.17 |
| 200x200x200 | 57.9 | 55.2 | 1.05 |
| 224x224x224 | 58.5 | 55.5 | 1.05 |
| 256x256x256 | 58.9 | 52.4 | 1.12 |
| 257x257x257 | 58.0 | 53.8 | 1.08 |
| 288x288x288 | 59.8 | 55.9 | 1.07 |
| 320x320x320 | 59.5 | 56.1 | 1.06 |
| 384x384x384 | 60.3 | 53.3 | 1.13 |
| 448x448x448 | 60.6 | 56.5 | 1.07 |
| 500x500x500 | 60.8 | 56.5 | 1.08 |
| 512x512x512 | 60.6 | 56.5 | 1.07 |
| 768x768x768 | 61.5 | 56.9 | 1.08 |
| 1000x1000x1000 | 61.6 | 56.9 | 1.08 |
| 1001x1001x1001 | 61.2 | 56.4 | 1.09 |
| 1024x1024x1024 | 61.2 | 56.9 | 1.08 |
| 1536x1536x1536 | 61.6 | 56.7 | 1.08 |
| 2048x2048x2048 | 61.4 | 56.9 | 1.08 |
| 3072x3072x3072 | 61.8 | 56.7 | 1.09 |
| 4096x4096x4096 | 61.9 | 57.1 | 1.08 |
| 4097x4097x4097 | 61.7 | 56.7 | 1.09 |
| 64x64x1024 | 53.1 | 49.7 | 1.07 |
| 64x1024x64 | 52.4 | 54.6 | 0.96 |
| 256x256x1024 | 59.9 | 55.6 | 1.08 |
| 1024x64x64 | 50.9 | 53.4 | 0.95 |
| 1024x256x256 | 59.4 | 56.2 | 1.06 |
| 4096x96x96 | 54.6 | 54.5 | 1.00 |
| 4096x128x128 | 56.4 | 55.0 | 1.03 |
| 4096x144x144 | 57.1 | 55.5 | 1.03 |
| 4096x160x160 | 57.5 | 55.7 | 1.03 |
| 4096x176x176 | 58.0 | 55.9 | 1.04 |
| 8192x128x128 | 56.3 | 55.0 | 1.02 |
| 10000x8x8 | 34.3 | 36.2 | 0.95 |
| 10000x100x100 | 56.2 | 55.4 | 1.01 |
| 10000x1000x1000 | 61.5 | 56.5 | 1.09 |
| 10000x4000x4000 | 62.1 | 56.8 | 1.09 |
TRSM float
| m×n | Eigen GFLOP/s | OpenBLAS GFLOP/s | Eigen ÷ OpenBLAS |
|---|---|---|---|
| 2x2 | 0.5 | 0.5 | 0.93 |
| 3x3 | 1.2 | 0.9 | 1.35 |
| 4x4 | 6.2 | 1.5 | 4.06 |
| 6x6 | 6.9 | 2.9 | 2.41 |
| 8x8 | 19.9 | 3.8 | 5.27 |
| 12x12 | 27.6 | 6.3 | 4.38 |
| 16x16 | 40.2 | 5.5 | 7.28 |
| 24x24 | 46.4 | 9.1 | 5.11 |
| 32x32 | 54.8 | 10.6 | 5.16 |
| 48x48 | 60.1 | 15.4 | 3.90 |
| 64x64 | 64.3 | 15.5 | 4.14 |
| 96x96 | 69.1 | 27.3 | 2.53 |
| 100x100 | 68.1 | 27.3 | 2.50 |
| 128x128 | 69.6 | 33.2 | 2.10 |
| 192x192 | 78.4 | 40.1 | 1.95 |
| 200x200 | 79.6 | 44.3 | 1.80 |
| 256x256 | 77.6 | 51.3 | 1.51 |
| 257x257 | 76.4 | 49.2 | 1.55 |
| 384x384 | 83.7 | 60.5 | 1.38 |
| 500x500 | 96.2 | 68.6 | 1.40 |
| 512x512 | 96.7 | 71.0 | 1.36 |
| 768x768 | 98.8 | 80.7 | 1.22 |
| 1000x1000 | 106.3 | 86.2 | 1.23 |
| 1001x1001 | 104.2 | 84.3 | 1.24 |
| 1024x1024 | 100.7 | 87.2 | 1.16 |
| 1536x1536 | 109.1 | 94.2 | 1.16 |
| 2048x2048 | 105.0 | 98.0 | 1.07 |
| 3072x3072 | 114.5 | 102.5 | 1.12 |
| 4096x4096 | 108.9 | 105.3 | 1.03 |
| 4097x4097 | 108.5 | 104.4 | 1.04 |
| 64x4096 | 64.8 | 20.2 | 3.21 |
| 256x4096 | 78.6 | 52.5 | 1.50 |
| 1024x8 | 62.3 | 38.0 | 1.64 |
| 1024x64 | 93.6 | 76.3 | 1.23 |
| 1024x256 | 99.4 | 84.7 | 1.17 |
| 1024x4096 | 100.2 | 87.0 | 1.15 |
| 4096x8 | 42.6 | 42.6 | 1.00 |
| 4096x64 | 93.0 | 88.7 | 1.05 |
| 4096x256 | 105.1 | 101.1 | 1.04 |
| 4096x1024 | 108.5 | 104.6 | 1.04 |
TRSM double
| m×n | Eigen GFLOP/s | OpenBLAS GFLOP/s | Eigen ÷ OpenBLAS |
|---|---|---|---|
| 2x2 | 0.5 | 0.5 | 1.01 |
| 3x3 | 1.2 | 0.9 | 1.22 |
| 4x4 | 4.8 | 1.7 | 2.91 |
| 6x6 | 6.9 | 2.8 | 2.44 |
| 8x8 | 12.2 | 3.7 | 3.30 |
| 12x12 | 17.8 | 6.2 | 2.89 |
| 16x16 | 20.2 | 7.5 | 2.68 |
| 24x24 | 23.6 | 10.3 | 2.30 |
| 32x32 | 27.9 | 12.4 | 2.25 |
| 48x48 | 30.8 | 17.1 | 1.80 |
| 64x64 | 32.9 | 13.3 | 2.46 |
| 96x96 | 34.2 | 25.9 | 1.32 |
| 100x100 | 34.4 | 25.7 | 1.34 |
| 128x128 | 34.1 | 25.0 | 1.36 |
| 192x192 | 39.6 | 31.7 | 1.25 |
| 200x200 | 40.5 | 36.1 | 1.12 |
| 256x256 | 39.9 | 36.4 | 1.10 |
| 257x257 | 38.8 | 37.9 | 1.03 |
| 384x384 | 47.1 | 43.6 | 1.08 |
| 500x500 | 49.0 | 45.7 | 1.07 |
| 512x512 | 47.1 | 46.2 | 1.02 |
| 768x768 | 51.9 | 49.5 | 1.05 |
| 1000x1000 | 54.0 | 51.1 | 1.06 |
| 1001x1001 | 53.4 | 50.3 | 1.06 |
| 1024x1024 | 50.3 | 51.0 | 0.99 |
| 1536x1536 | 55.7 | 52.5 | 1.06 |
| 2048x2048 | 50.1 | 53.5 | 0.94 |
| 3072x3072 | 56.5 | 54.4 | 1.04 |
| 4096x4096 | 54.4 | 55.3 | 0.98 |
| 4097x4097 | 54.3 | 54.9 | 0.99 |
| 64x4096 | 32.9 | 20.7 | 1.59 |
| 256x4096 | 40.0 | 39.4 | 1.02 |
| 1024x8 | 30.0 | 31.4 | 0.95 |
| 1024x64 | 46.6 | 47.5 | 0.98 |
| 1024x256 | 49.6 | 50.4 | 0.98 |
| 1024x4096 | 50.1 | 50.6 | 0.99 |
| 4096x8 | 24.9 | 24.8 | 1.01 |
| 4096x64 | 47.7 | 48.1 | 0.99 |
| 4096x256 | 52.9 | 53.4 | 0.99 |
| 4096x1024 | 54.1 | 54.7 | 0.99 |
SYRK float
| n×k | Eigen GFLOP/s | OpenBLAS GFLOP/s | Eigen ÷ OpenBLAS |
|---|---|---|---|
| 2x2 | 0.2 | 0.4 | 0.50 |
| 3x3 | 0.5 | 1.0 | 0.47 |
| 4x4 | 1.2 | 2.2 | 0.54 |
| 6x6 | 2.8 | 4.7 | 0.61 |
| 8x8 | 7.0 | 8.3 | 0.84 |
| 12x12 | 10.9 | 12.8 | 0.85 |
| 16x16 | 20.0 | 18.2 | 1.10 |
| 24x24 | 33.7 | 34.2 | 0.98 |
| 32x32 | 46.4 | 44.2 | 1.05 |
| 48x48 | 61.1 | 62.5 | 0.98 |
| 64x64 | 73.8 | 71.0 | 1.04 |
| 96x96 | 84.6 | 85.2 | 0.99 |
| 100x100 | 86.5 | 77.6 | 1.11 |
| 128x128 | 88.4 | 88.8 | 1.00 |
| 192x192 | 100.0 | 70.7 | 1.41 |
| 200x200 | 99.9 | 93.3 | 1.07 |
| 256x256 | 102.2 | 97.8 | 1.05 |
| 257x257 | 101.2 | 91.9 | 1.10 |
| 384x384 | 110.0 | 95.2 | 1.16 |
| 500x500 | 113.3 | 104.1 | 1.09 |
| 512x512 | 113.3 | 99.2 | 1.14 |
| 768x768 | 117.5 | 108.4 | 1.08 |
| 1000x1000 | 118.9 | 109.8 | 1.08 |
| 1001x1001 | 117.7 | 107.0 | 1.10 |
| 1024x1024 | 118.5 | 105.6 | 1.12 |
| 1536x1536 | 121.1 | 111.6 | 1.09 |
| 2048x2048 | 121.0 | 109.6 | 1.10 |
| 3072x3072 | 121.9 | 110.8 | 1.10 |
| 4096x4096 | 121.0 | 111.7 | 1.08 |
| 4097x4097 | 121.1 | 111.1 | 1.09 |
| 64x4096 | 67.6 | 50.6 | 1.34 |
| 256x4096 | 102.7 | 84.8 | 1.21 |
| 1024x4096 | 117.6 | 105.3 | 1.12 |
| 4096x8 | 59.0 | 57.7 | 1.02 |
| 4096x64 | 112.5 | 113.2 | 0.99 |
| 4096x256 | 121.1 | 113.7 | 1.07 |
| 4096x1024 | 121.0 | 111.7 | 1.08 |
SYRK double
| n×k | Eigen GFLOP/s | OpenBLAS GFLOP/s | Eigen ÷ OpenBLAS |
|---|---|---|---|
| 2x2 | 0.2 | 0.4 | 0.43 |
| 3x3 | 0.4 | 0.9 | 0.41 |
| 4x4 | 0.9 | 2.0 | 0.48 |
| 6x6 | 2.5 | 4.3 | 0.58 |
| 8x8 | 4.6 | 7.2 | 0.64 |
| 12x12 | 7.6 | 14.8 | 0.52 |
| 16x16 | 13.1 | 17.7 | 0.74 |
| 24x24 | 18.1 | 26.3 | 0.69 |
| 32x32 | 23.6 | 32.9 | 0.72 |
| 48x48 | 30.8 | 41.0 | 0.75 |
| 64x64 | 35.8 | 19.1 | 1.87 |
| 96x96 | 39.8 | 45.6 | 0.87 |
| 100x100 | 41.1 | 44.7 | 0.92 |
| 128x128 | 43.9 | 33.7 | 1.30 |
| 192x192 | 48.9 | 42.4 | 1.15 |
| 200x200 | 48.9 | 51.0 | 0.96 |
| 256x256 | 50.7 | 44.9 | 1.13 |
| 257x257 | 50.6 | 49.4 | 1.02 |
| 384x384 | 54.6 | 49.9 | 1.10 |
| 500x500 | 56.3 | 54.4 | 1.04 |
| 512x512 | 56.4 | 50.6 | 1.12 |
| 768x768 | 58.2 | 55.5 | 1.05 |
| 1000x1000 | 59.2 | 56.1 | 1.06 |
| 1001x1001 | 58.9 | 55.5 | 1.06 |
| 1024x1024 | 59.0 | 53.8 | 1.10 |
| 1536x1536 | 59.5 | 54.8 | 1.09 |
| 2048x2048 | 58.6 | 55.4 | 1.06 |
| 3072x3072 | 58.9 | 55.7 | 1.06 |
| 4096x4096 | 59.2 | 56.4 | 1.05 |
| 4097x4097 | 59.8 | 56.0 | 1.07 |
| 64x4096 | 35.2 | 27.1 | 1.30 |
| 256x4096 | 52.4 | 45.1 | 1.16 |
| 1024x4096 | 57.1 | 53.5 | 1.07 |
| 4096x8 | 37.3 | 23.8 | 1.57 |
| 4096x64 | 56.0 | 55.8 | 1.00 |
| 4096x256 | 60.3 | 56.6 | 1.06 |
| 4096x1024 | 59.1 | 56.3 | 1.05 |
POTRF float
| n | Eigen GFLOP/s | OpenBLAS GFLOP/s | Eigen ÷ OpenBLAS |
|---|---|---|---|
| 2 | 0.5 | 0.1 | 4.36 |
| 3 | 0.6 | 0.3 | 2.41 |
| 4 | 1.1 | 0.5 | 2.31 |
| 6 | 1.5 | 0.9 | 1.66 |
| 8 | 2.2 | 1.4 | 1.58 |
| 12 | 3.8 | 2.3 | 1.66 |
| 16 | 5.5 | 3.0 | 1.86 |
| 24 | 9.2 | 3.7 | 2.49 |
| 32 | 8.2 | 4.0 | 2.04 |
| 48 | 13.6 | 11.8 | 1.15 |
| 64 | 18.4 | 16.2 | 1.14 |
| 96 | 27.1 | 22.5 | 1.20 |
| 100 | 27.0 | 21.8 | 1.24 |
| 128 | 38.4 | 26.6 | 1.44 |
| 192 | 49.5 | 46.4 | 1.07 |
| 200 | 50.4 | 44.6 | 1.13 |
| 256 | 64.5 | 55.0 | 1.17 |
| 257 | 60.7 | 52.7 | 1.15 |
| 384 | 77.6 | 68.2 | 1.14 |
| 500 | 83.3 | 68.6 | 1.22 |
| 512 | 84.6 | 68.0 | 1.24 |
| 768 | 95.0 | 84.3 | 1.13 |
| 1000 | 100.2 | 88.6 | 1.13 |
| 1001 | 98.6 | 86.5 | 1.14 |
| 1024 | 94.9 | 88.7 | 1.07 |
| 1536 | 105.6 | 97.1 | 1.09 |
| 2048 | 106.7 | 100.3 | 1.06 |
| 3072 | 111.8 | 105.4 | 1.06 |
| 4096 | 111.9 | 105.7 | 1.06 |
| 4097 | 110.6 | 104.9 | 1.05 |
POTRF double
| n | Eigen GFLOP/s | OpenBLAS GFLOP/s | Eigen ÷ OpenBLAS |
|---|---|---|---|
| 2 | 0.5 | 0.1 | 3.97 |
| 3 | 0.8 | 0.3 | 2.85 |
| 4 | 1.0 | 0.5 | 2.25 |
| 6 | 1.5 | 0.9 | 1.78 |
| 8 | 2.3 | 1.3 | 1.79 |
| 12 | 3.9 | 2.1 | 1.86 |
| 16 | 5.6 | 2.8 | 2.02 |
| 24 | 8.9 | 3.9 | 2.27 |
| 32 | 6.5 | 4.2 | 1.53 |
| 48 | 9.7 | 10.8 | 0.90 |
| 64 | 12.3 | 14.0 | 0.88 |
| 96 | 16.8 | 18.5 | 0.91 |
| 100 | 16.8 | 18.6 | 0.91 |
| 128 | 22.5 | 21.7 | 1.04 |
| 192 | 27.8 | 32.0 | 0.87 |
| 200 | 28.2 | 31.2 | 0.90 |
| 256 | 33.9 | 29.4 | 1.15 |
| 257 | 32.9 | 34.6 | 0.95 |
| 384 | 39.9 | 38.1 | 1.05 |
| 500 | 42.6 | 42.0 | 1.01 |
| 512 | 42.3 | 40.1 | 1.05 |
| 768 | 48.0 | 45.8 | 1.05 |
| 1000 | 51.0 | 49.3 | 1.04 |
| 1001 | 50.7 | 48.6 | 1.04 |
| 1024 | 48.1 | 46.7 | 1.03 |
| 1536 | 52.6 | 50.5 | 1.04 |
| 2048 | 52.8 | 51.4 | 1.03 |
| 3072 | 55.9 | 53.1 | 1.05 |
| 4096 | 56.6 | 54.1 | 1.04 |
| 4097 | 56.3 | 53.8 | 1.05 |
GETRF float
| n | Eigen GFLOP/s | OpenBLAS GFLOP/s | Eigen ÷ OpenBLAS |
|---|---|---|---|
| 2 | 0.2 | 0.3 | 0.72 |
| 3 | 0.4 | 0.4 | 0.94 |
| 4 | 0.7 | 0.6 | 1.25 |
| 6 | 1.3 | 0.7 | 1.87 |
| 8 | 2.1 | 0.8 | 2.50 |
| 12 | 3.8 | 1.2 | 3.33 |
| 16 | 5.7 | 1.5 | 3.86 |
| 24 | 8.1 | 3.4 | 2.38 |
| 32 | 11.5 | 4.1 | 2.78 |
| 48 | 18.1 | 8.3 | 2.18 |
| 64 | 24.3 | 9.4 | 2.59 |
| 96 | 35.3 | 18.8 | 1.87 |
| 100 | 37.1 | 19.2 | 1.94 |
| 128 | 42.1 | 23.0 | 1.83 |
| 192 | 51.3 | 34.8 | 1.47 |
| 200 | 51.6 | 35.6 | 1.45 |
| 256 | 62.0 | 43.0 | 1.44 |
| 257 | 60.4 | 41.2 | 1.46 |
| 384 | 73.9 | 54.5 | 1.36 |
| 500 | 79.0 | 62.8 | 1.26 |
| 512 | 80.2 | 64.9 | 1.23 |
| 768 | 89.9 | 76.0 | 1.18 |
| 1000 | 94.8 | 82.1 | 1.16 |
| 1001 | 93.4 | 80.4 | 1.16 |
| 1024 | 92.2 | 83.7 | 1.10 |
| 1536 | 101.4 | 92.4 | 1.10 |
| 2048 | 100.3 | 96.1 | 1.04 |
| 3072 | 106.9 | 100.7 | 1.06 |
| 4096 | 102.2 | 103.3 | 0.99 |
| 4097 | 102.5 | 102.4 | 1.00 |
GETRF double
| n | Eigen GFLOP/s | OpenBLAS GFLOP/s | Eigen ÷ OpenBLAS |
|---|---|---|---|
| 2 | 0.3 | 0.2 | 1.44 |
| 3 | 0.5 | 0.4 | 1.35 |
| 4 | 0.7 | 0.4 | 1.62 |
| 6 | 1.2 | 0.6 | 1.97 |
| 8 | 2.0 | 0.7 | 2.80 |
| 12 | 3.8 | 1.0 | 3.85 |
| 16 | 5.2 | 1.2 | 4.22 |
| 24 | 6.8 | 2.9 | 2.37 |
| 32 | 8.7 | 3.7 | 2.35 |
| 48 | 13.2 | 7.9 | 1.68 |
| 64 | 16.9 | 10.0 | 1.69 |
| 96 | 22.7 | 16.9 | 1.34 |
| 100 | 23.2 | 17.1 | 1.36 |
| 128 | 24.0 | 17.9 | 1.34 |
| 192 | 28.1 | 28.5 | 0.99 |
| 200 | 28.5 | 28.5 | 1.00 |
| 256 | 34.1 | 30.4 | 1.12 |
| 257 | 33.3 | 31.1 | 1.07 |
| 384 | 39.4 | 37.7 | 1.04 |
| 500 | 41.9 | 41.3 | 1.02 |
| 512 | 41.9 | 41.1 | 1.02 |
| 768 | 46.7 | 46.1 | 1.01 |
| 1000 | 49.1 | 48.0 | 1.02 |
| 1001 | 48.6 | 47.4 | 1.03 |
| 1024 | 47.4 | 48.1 | 0.98 |
| 1536 | 51.3 | 50.6 | 1.02 |
| 2048 | 46.8 | 51.3 | 0.91 |
| 3072 | 52.8 | 52.7 | 1.00 |
| 4096 | 51.5 | 53.7 | 0.96 |
| 4097 | 51.5 | 53.4 | 0.96 |
GEQRF float
| m×n | Eigen GFLOP/s | OpenBLAS GFLOP/s | Eigen ÷ OpenBLAS |
|---|---|---|---|
| 2x2 | 0.2 | 0.2 | 1.48 |
| 3x3 | 0.4 | 0.3 | 1.42 |
| 4x4 | 0.7 | 0.5 | 1.43 |
| 6x6 | 1.3 | 0.9 | 1.49 |
| 8x8 | 2.0 | 1.3 | 1.55 |
| 12x12 | 4.0 | 2.6 | 1.58 |
| 16x16 | 6.2 | 3.8 | 1.63 |
| 24x24 | 10.6 | 6.6 | 1.60 |
| 32x32 | 14.2 | 9.1 | 1.56 |
| 48x48 | 19.9 | 13.4 | 1.48 |
| 64x64 | 15.7 | 16.7 | 0.94 |
| 96x96 | 27.7 | 20.2 | 1.38 |
| 100x100 | 24.5 | 20.5 | 1.19 |
| 128x128 | 33.4 | 23.6 | 1.42 |
| 192x192 | 46.6 | 35.9 | 1.30 |
| 200x200 | 47.4 | 43.1 | 1.10 |
| 256x256 | 54.9 | 45.5 | 1.21 |
| 257x257 | 51.9 | 51.8 | 1.00 |
| 384x384 | 68.1 | 61.0 | 1.12 |
| 500x500 | 75.6 | 72.0 | 1.05 |
| 512x512 | 76.2 | 63.1 | 1.21 |
| 768x768 | 86.7 | 74.3 | 1.17 |
| 1000x1000 | 91.9 | 87.2 | 1.05 |
| 1001x1001 | 90.3 | 85.8 | 1.05 |
| 1024x1024 | 91.0 | 76.4 | 1.19 |
| 1536x1536 | 98.0 | 86.6 | 1.13 |
| 2048x2048 | 100.4 | 84.2 | 1.19 |
| 3072x3072 | 102.2 | 90.3 | 1.13 |
| 4096x4096 | 102.3 | 83.2 | 1.23 |
| 4097x4097 | 101.3 | 84.2 | 1.20 |
| 4096x8 | 20.4 | 9.9 | 2.05 |
| 4096x64 | 26.6 | 21.2 | 1.25 |
| 4096x256 | 57.5 | 43.9 | 1.31 |
| 4096x1024 | 89.5 | 77.5 | 1.15 |
| 10000x8 | 20.6 | 9.7 | 2.12 |
| 10000x100 | 38.3 | 22.8 | 1.68 |
| 10000x1000 | 92.4 | 83.0 | 1.11 |
| 10000x4000 | 102.9 | 87.6 | 1.17 |
| 100000x8 | 19.2 | 9.1 | 2.10 |
| 100000x64 | 26.1 | 19.0 | 1.37 |
| 100000x256 | 56.2 | 41.4 | 1.36 |
GEQRF double
| m×n | Eigen GFLOP/s | OpenBLAS GFLOP/s | Eigen ÷ OpenBLAS |
|---|---|---|---|
| 2x2 | 0.2 | 0.2 | 1.49 |
| 3x3 | 0.4 | 0.3 | 1.52 |
| 4x4 | 0.7 | 0.5 | 1.50 |
| 6x6 | 1.3 | 0.8 | 1.57 |
| 8x8 | 2.0 | 1.2 | 1.62 |
| 12x12 | 3.8 | 2.2 | 1.70 |
| 16x16 | 5.5 | 3.1 | 1.78 |
| 24x24 | 7.8 | 4.6 | 1.68 |
| 32x32 | 9.1 | 5.8 | 1.57 |
| 48x48 | 11.1 | 9.2 | 1.21 |
| 64x64 | 9.9 | 9.7 | 1.02 |
| 96x96 | 15.4 | 12.8 | 1.21 |
| 100x100 | 14.8 | 13.1 | 1.13 |
| 128x128 | 18.3 | 13.8 | 1.33 |
| 192x192 | 24.1 | 21.5 | 1.12 |
| 200x200 | 24.7 | 25.5 | 0.97 |
| 256x256 | 27.9 | 25.0 | 1.12 |
| 257x257 | 27.2 | 29.8 | 0.91 |
| 384x384 | 34.0 | 33.1 | 1.03 |
| 500x500 | 37.3 | 39.4 | 0.95 |
| 512x512 | 37.0 | 35.0 | 1.06 |
| 768x768 | 42.0 | 41.0 | 1.02 |
| 1000x1000 | 44.8 | 45.6 | 0.98 |
| 1001x1001 | 44.4 | 45.0 | 0.99 |
| 1024x1024 | 43.9 | 40.9 | 1.07 |
| 1536x1536 | 47.8 | 45.8 | 1.04 |
| 2048x2048 | 47.7 | 43.6 | 1.09 |
| 3072x3072 | 50.3 | 44.5 | 1.13 |
| 4096x4096 | 50.6 | 44.9 | 1.13 |
| 4097x4097 | 50.3 | 43.5 | 1.16 |
| 4096x8 | 9.3 | 7.1 | 1.30 |
| 4096x64 | 12.6 | 12.2 | 1.03 |
| 4096x256 | 27.8 | 24.7 | 1.13 |
| 4096x1024 | 43.6 | 41.8 | 1.05 |
| 10000x8 | 9.2 | 6.8 | 1.35 |
| 10000x100 | 17.3 | 12.2 | 1.43 |
| 10000x1000 | 44.7 | 41.6 | 1.08 |
| 10000x4000 | 51.3 | 43.8 | 1.17 |
| 100000x8 | 9.0 | 6.5 | 1.38 |
| 100000x64 | 12.1 | 10.5 | 1.15 |
| 100000x256 | 26.9 | 22.1 | 1.21 |
SYEV float
| n | Eigen GFLOP/s | OpenBLAS GFLOP/s | Eigen ÷ OpenBLAS |
|---|---|---|---|
| 2 | 0.9 | 0.7 | 1.34 |
| 3 | 0.9 | 0.6 | 1.35 |
| 4 | 1.1 | 0.9 | 1.26 |
| 6 | 1.7 | 1.4 | 1.21 |
| 8 | 2.4 | 2.1 | 1.18 |
| 12 | 4.1 | 3.1 | 1.32 |
| 16 | 5.8 | 4.1 | 1.42 |
| 24 | 8.5 | 6.4 | 1.31 |
| 32 | 11.2 | 8.7 | 1.29 |
| 48 | 16.8 | 10.0 | 1.68 |
| 64 | 18.4 | 11.8 | 1.56 |
| 96 | 25.1 | 14.8 | 1.69 |
| 100 | 25.5 | 14.6 | 1.74 |
| 128 | 33.7 | 16.3 | 2.07 |
| 192 | 40.1 | 19.7 | 2.04 |
| 200 | 41.2 | 19.2 | 2.14 |
| 256 | 43.5 | 20.9 | 2.08 |
| 257 | 43.4 | 21.1 | 2.05 |
| 384 | 49.3 | 23.2 | 2.12 |
| 500 | 53.1 | 25.1 | 2.12 |
| 512 | 52.1 | 24.4 | 2.13 |
| 768 | 56.1 | 26.0 | 2.16 |
| 1000 | 60.4 | 27.6 | 2.19 |
| 1001 | 52.9 | 27.5 | 1.92 |
| 1024 | 58.5 | 26.7 | 2.19 |
| 1536 | 60.8 | 26.7 | 2.28 |
| 2048 | 61.4 | 27.1 | 2.26 |
SYEV double
| n | Eigen GFLOP/s | OpenBLAS GFLOP/s | Eigen ÷ OpenBLAS |
|---|---|---|---|
| 2 | 1.0 | 0.7 | 1.35 |
| 3 | 0.8 | 0.6 | 1.48 |
| 4 | 1.0 | 0.8 | 1.26 |
| 6 | 1.5 | 1.2 | 1.28 |
| 8 | 2.1 | 1.7 | 1.27 |
| 12 | 3.5 | 2.4 | 1.44 |
| 16 | 4.9 | 3.2 | 1.54 |
| 24 | 7.4 | 4.8 | 1.52 |
| 32 | 9.2 | 5.8 | 1.60 |
| 48 | 12.7 | 7.7 | 1.65 |
| 64 | 15.6 | 9.4 | 1.66 |
| 96 | 18.5 | 10.7 | 1.73 |
| 100 | 19.2 | 11.6 | 1.65 |
| 128 | 21.2 | 12.8 | 1.66 |
| 192 | 22.9 | 13.8 | 1.66 |
| 200 | 23.4 | 13.4 | 1.74 |
| 256 | 22.9 | 15.9 | 1.44 |
| 257 | 21.5 | 15.9 | 1.35 |
| 384 | 24.9 | 15.4 | 1.62 |
| 500 | 26.7 | 19.1 | 1.40 |
| 512 | 25.8 | 17.4 | 1.48 |
| 768 | 27.0 | 19.6 | 1.38 |
| 1000 | 28.6 | 20.8 | 1.38 |
| 1001 | 23.9 | 20.8 | 1.15 |
| 1024 | 27.5 | 20.2 | 1.36 |
| 1536 | 28.3 | 20.1 | 1.41 |
| 2048 | 26.7 | 20.6 | 1.30 |
GESDD float
| m×n | Eigen GFLOP/s | OpenBLAS GFLOP/s | Eigen ÷ OpenBLAS |
|---|---|---|---|
| 2x2 | 2.4 | 0.4 | 6.65 |
| 3x3 | 1.6 | 0.7 | 2.25 |
| 4x4 | 2.1 | 1.1 | 1.96 |
| 6x6 | 2.1 | 1.9 | 1.12 |
| 8x8 | 2.5 | 2.7 | 0.94 |
| 12x12 | 2.9 | 4.3 | 0.68 |
| 16x16 | 5.6 | 5.5 | 1.01 |
| 24x24 | 7.8 | 7.8 | 1.00 |
| 32x32 | 10.9 | 11.1 | 0.99 |
| 48x48 | 16.8 | 18.2 | 0.92 |
| 64x64 | 24.1 | 26.4 | 0.91 |
| 96x96 | 37.7 | 35.8 | 1.06 |
| 100x100 | 39.3 | 36.5 | 1.08 |
| 128x128 | 49.4 | 46.0 | 1.08 |
| 192x192 | 72.0 | 49.2 | 1.46 |
| 200x200 | 74.3 | 50.0 | 1.49 |
| 256x256 | 81.4 | 48.5 | 1.68 |
| 257x257 | 85.3 | 56.5 | 1.51 |
| 384x384 | 108.2 | 63.0 | 1.72 |
| 500x500 | 126.2 | 77.1 | 1.64 |
| 512x512 | 118.3 | 64.5 | 1.83 |
| 768x768 | 141.3 | 77.2 | 1.83 |
| 1000x1000 | 160.6 | 96.1 | 1.67 |
| 1001x1001 | 159.2 | 95.5 | 1.67 |
| 1024x1024 | 149.6 | 80.7 | 1.85 |
| 1536x1536 | 168.7 | 94.9 | 1.78 |
| 2048x2048 | 166.2 | 93.7 | 1.77 |
| 4096x64 | 93.2 | 62.7 | 1.49 |
| 4096x256 | 153.5 | 105.2 | 1.46 |
| 4096x1024 | 174.8 | 118.5 | 1.47 |
| 10000x8 | 32.2 | 29.5 | 1.09 |
| 10000x100 | 127.7 | 70.1 | 1.82 |
| 10000x1000 | 207.6 | 169.1 | 1.23 |
GESDD double
| m×n | Eigen GFLOP/s | OpenBLAS GFLOP/s | Eigen ÷ OpenBLAS |
|---|---|---|---|
| 2x2 | 2.4 | 0.4 | 6.63 |
| 3x3 | 1.3 | 0.6 | 2.04 |
| 4x4 | 1.6 | 0.9 | 1.71 |
| 6x6 | 1.9 | 1.6 | 1.16 |
| 8x8 | 1.8 | 2.2 | 0.82 |
| 12x12 | 2.1 | 3.3 | 0.64 |
| 16x16 | 4.3 | 4.3 | 0.99 |
| 24x24 | 5.5 | 5.7 | 0.97 |
| 32x32 | 7.4 | 9.5 | 0.78 |
| 48x48 | 11.6 | 14.4 | 0.81 |
| 64x64 | 15.3 | 20.5 | 0.75 |
| 96x96 | 22.8 | 27.9 | 0.82 |
| 100x100 | 23.8 | 28.9 | 0.82 |
| 128x128 | 29.3 | 35.2 | 0.83 |
| 192x192 | 40.0 | 38.2 | 1.05 |
| 200x200 | 41.9 | 38.2 | 1.10 |
| 256x256 | 46.2 | 38.9 | 1.19 |
| 257x257 | 47.9 | 43.7 | 1.10 |
| 384x384 | 59.5 | 50.9 | 1.17 |
| 500x500 | 68.9 | 59.5 | 1.16 |
| 512x512 | 65.3 | 51.1 | 1.28 |
| 768x768 | 76.6 | 63.7 | 1.20 |
| 1000x1000 | 85.0 | 74.6 | 1.14 |
| 1001x1001 | 84.1 | 75.4 | 1.12 |
| 1024x1024 | 77.8 | 63.3 | 1.23 |
| 1536x1536 | 87.2 | 75.5 | 1.15 |
| 2048x2048 | 72.0 | 69.1 | 1.04 |
| 4096x64 | 49.0 | 36.6 | 1.34 |
| 4096x256 | 79.2 | 62.1 | 1.28 |
| 4096x1024 | 88.2 | 75.1 | 1.18 |
| 10000x8 | 13.7 | 20.7 | 0.66 |
| 10000x100 | 64.5 | 37.6 | 1.71 |
| 10000x1000 | 104.8 | 93.1 | 1.13 |
GEEV float
| n | Eigen GFLOP/s | OpenBLAS GFLOP/s | Eigen ÷ OpenBLAS |
|---|---|---|---|
| 2 | 2.6 | 0.4 | 6.59 |
| 3 | 1.3 | 0.6 | 2.15 |
| 4 | 2.3 | 0.9 | 2.47 |
| 6 | 2.7 | 1.6 | 1.74 |
| 8 | 3.9 | 2.2 | 1.82 |
| 12 | 5.5 | 3.5 | 1.56 |
| 16 | 6.8 | 4.5 | 1.52 |
| 24 | 10.0 | 7.0 | 1.43 |
| 32 | 11.6 | 8.8 | 1.32 |
| 48 | 13.5 | 11.7 | 1.16 |
| 64 | 15.2 | 13.8 | 1.10 |
| 96 | 17.6 | 16.4 | 1.07 |
| 100 | 18.2 | 17.0 | 1.07 |
| 128 | 18.7 | 19.8 | 0.95 |
| 192 | 19.9 | 32.2 | 0.62 |
| 200 | 20.6 | 35.7 | 0.58 |
| 256 | 20.5 | 41.5 | 0.49 |
| 257 | 20.8 | 42.1 | 0.49 |
| 384 | 18.8 | 58.6 | 0.32 |
| 500 | 22.7 | 71.3 | 0.32 |
| 512 | 22.2 | 48.8 | 0.46 |
| 768 | 24.3 | 83.2 | 0.29 |
| 1000 | 25.2 | 106.9 | 0.24 |
| 1001 | 25.7 | 107.9 | 0.24 |
| 1024 | 19.7 | 76.4 | 0.26 |
GEEV double
| n | Eigen GFLOP/s | OpenBLAS GFLOP/s | Eigen ÷ OpenBLAS |
|---|---|---|---|
| 2 | 2.6 | 0.4 | 6.30 |
| 3 | 1.2 | 0.6 | 2.19 |
| 4 | 1.7 | 0.8 | 2.01 |
| 6 | 2.2 | 1.3 | 1.68 |
| 8 | 3.0 | 2.0 | 1.53 |
| 12 | 4.0 | 2.8 | 1.42 |
| 16 | 5.0 | 3.7 | 1.35 |
| 24 | 5.9 | 5.3 | 1.12 |
| 32 | 6.5 | 6.8 | 0.96 |
| 48 | 7.8 | 8.8 | 0.88 |
| 64 | 8.4 | 10.3 | 0.81 |
| 96 | 9.2 | 11.0 | 0.83 |
| 100 | 9.6 | 11.6 | 0.82 |
| 128 | 10.0 | 13.0 | 0.77 |
| 192 | 9.7 | 18.3 | 0.53 |
| 200 | 10.0 | 19.7 | 0.51 |
| 256 | 10.0 | 22.4 | 0.45 |
| 257 | 9.7 | 22.5 | 0.43 |
| 384 | 10.4 | 30.5 | 0.34 |
| 500 | 10.6 | 36.0 | 0.29 |
| 512 | 10.2 | 21.7 | 0.47 |
| 768 | 10.7 | 36.5 | 0.29 |
| 1000 | 10.7 | 51.5 | 0.21 |
| 1001 | 10.8 | 51.2 | 0.21 |
| 1024 | 7.8 | 35.4 | 0.22 |