Eigen vs. BLAS/LAPACK libraries, Apple M4 with NEON (October 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.
This page was first published with a measurement of 2026-09-20 at Eigen master 46a2d0c56 on
macOS 27.0. It now shows Eigen measured again at master 3cf994918 on macOS 27.0.1, the tree of the
SME page’s October measurement. Against September, Eigen’s NEON rates repeat within 3 % (geometric
mean per operation and scalar) except TRSM, 12 % faster, and SYEV in double and GEEV, 7 to 9 %
slower. The GEMV ratios in double above n = 1000 fell because OpenBLAS’s dgemv measured faster in
the October session than in September’s (2.6× at n = 1024). The September version of the page and its
result files are in the history of the
website repository.
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.1 (build 26A434), 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 3cf994918 (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, not measured again: its rates are those of the SME page’s session of 2026-10-01 to 2026-10-02, whose OpenBLAS result files are kept with this page’s |
| 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-10-02 to 2026-10-03 (36 runs, about 3.0 hours of measurement). OpenBLAS: the night of 2026-10-01 to 2026-10-02, 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 60 GFLOP/s in double and 121 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 three times, in the three binaries of the same build, those linked against OpenBLAS, Accelerate and Arm Performance Libraries, where only the Eigen cells ran. The Eigen line on each chart is the median of the three passes and the shaded band is their spread, the run-to-run noise on this host: within 3 % for 95 % of the cells and above 10 % for 0.2 %. The widest spread depends on the binary rather than on noise: GETRF in float at n = 100 runs at 23 GFLOP/s in the binaries linked against OpenBLAS and Accelerate and at 36.5 in the third, while the ten repetitions within each binary span at most 4 % and the neighbouring sizes n = 96 and 128 agree across all three.
A ratio divides that median by OpenBLAS’s rate from the SME page’s session, 22 to 33 hours earlier
for any one operation, since the library does not change with Eigen’s build. OpenBLAS’s own rates
bound the drift between sessions on this machine: between the SME page’s September and October
sessions, 13 days apart, they repeated within a geometric mean of 0.97 to 1.03 for every operation
and scalar except dgemv (1.11).
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, no keyboard or mouse input for
10 minutes) with no thermal or performance warning from pmset. It was first 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,
the limits of the SME page. Background services of the logged-in session (malware scans, search and
photo indexing, mail) kept the machine near those limits through the night: 11 runs passed, and 14
failed four times each, although their discarded attempts agreed with the passed runs within 1 %
(geometric mean over the cells of a run). The limits were then raised to 1.45 and 3.0. The fourth
attempt of each of the 14 runs meets them (averages 1.27 to 1.40, peaks at most 2.76) and was kept;
each agrees with the other two passes of its cells within 0.5 %. The remaining 11 runs were measured
under the raised limits, 1 of them twice. 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.4 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 3.0 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.7 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.15 | 1.77 | 1.07 | 1.12 | 1.12 |
| AXPY | double | OpenBLAS | 4.16 | 1.30 | 0.71 | 0.87 | 1.02 |
| DOT | float | OpenBLAS | 17.14 | 7.38 | 1.63 | 1.15 | 1.06 |
| DOT | double | OpenBLAS | 16.93 | 3.50 | 1.32 | 1.29 | 1.05 |
| GEMV | float | OpenBLAS | 2.70 | 1.18 | 1.05 | 0.91 | – |
| GEMV | double | OpenBLAS | 3.94 | 2.29 | 1.38 | 0.83 | – |
| GEMM | float | OpenBLAS | 1.77 | 0.98 | 1.07 | 1.07 | – |
| GEMM | double | OpenBLAS | 1.59 | 1.07 | 1.06 | 1.06 | – |
| TRSM | float | OpenBLAS | 3.56 | 4.44 | 1.63 | 1.16 | – |
| TRSM | double | OpenBLAS | 2.24 | 2.19 | 1.19 | 1.07 | – |
| SYRK | float | OpenBLAS | 0.67 | 1.02 | 1.11 | 1.07 | – |
| SYRK | double | OpenBLAS | 0.54 | 0.95 | 1.05 | 1.04 | – |
| POTRF | float | OpenBLAS | 2.01 | 1.43 | 1.14 | 1.05 | – |
| POTRF | double | OpenBLAS | 2.28 | 1.14 | 1.00 | 1.02 | – |
| GETRF | float | OpenBLAS | 1.77 | 2.07 | 1.31 | 1.06 | – |
| GETRF | double | OpenBLAS | 2.20 | 1.70 | 1.04 | 1.00 | – |
| GEQRF | float | OpenBLAS | 1.50 | 1.37 | 1.11 | 1.16 | – |
| GEQRF | double | OpenBLAS | 1.58 | 1.42 | 1.04 | 1.09 | – |
| SYEV | float | OpenBLAS | 1.22 | 1.60 | 2.13 | 2.20 | – |
| SYEV | double | OpenBLAS | 1.19 | 1.39 | 1.35 | 1.31 | – |
| GESDD | float | OpenBLAS | 1.58 | 0.99 | 1.65 | 1.75 | – |
| GESDD | double | OpenBLAS | 1.50 | 0.82 | 1.14 | 1.06 | – |
| GEEV | float | OpenBLAS | 2.18 | 1.05 | 0.32 | – | – |
| GEEV | double | OpenBLAS | 2.01 | 0.82 | 0.30 | – | – |
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, 22 to 33 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. This session ran busier than the SME page’s (1.27 to 1.40 busy cores averaged over a kept run, against 1.10 to 1.13), and Eigen’s AXPY, DOT and GEMV came out 2 to 3 % below their September rates; whether that is the load or the code is not separated here.
Full tables
GFLOP/s per shape and library, with the Eigen ÷ library ratio: Eigen’s median over its three passes against the library’s rate.
AXPY float
| n | Eigen GFLOP/s | OpenBLAS GFLOP/s | Eigen ÷ OpenBLAS |
|---|---|---|---|
| 2 | 5.0 | 1.3 | 3.73 |
| 3 | 5.6 | 1.9 | 2.95 |
| 4 | 11.8 | 1.9 | 6.30 |
| 6 | 11.3 | 2.3 | 4.90 |
| 8 | 20.3 | 4.7 | 4.31 |
| 12 | 23.5 | 4.9 | 4.76 |
| 16 | 25.0 | 8.2 | 3.04 |
| 24 | 26.9 | 10.8 | 2.48 |
| 32 | 18.1 | 12.8 | 1.42 |
| 48 | 19.3 | 12.8 | 1.50 |
| 64 | 22.0 | 9.2 | 2.38 |
| 96 | 26.3 | 15.7 | 1.68 |
| 100 | 26.3 | 15.6 | 1.68 |
| 128 | 27.3 | 18.0 | 1.51 |
| 192 | 28.6 | 21.1 | 1.35 |
| 256 | 29.2 | 23.0 | 1.27 |
| 384 | 25.9 | 25.3 | 1.03 |
| 512 | 26.9 | 26.6 | 1.01 |
| 768 | 27.3 | 28.0 | 0.98 |
| 1000 | 27.9 | 28.1 | 0.99 |
| 1001 | 27.6 | 28.4 | 0.97 |
| 1024 | 28.1 | 28.2 | 0.99 |
| 1536 | 29.1 | 29.3 | 0.99 |
| 2048 | 29.6 | 29.8 | 0.99 |
| 3072 | 30.2 | 30.3 | 1.00 |
| 4096 | 30.5 | 16.6 | 1.84 |
| 6144 | 30.8 | 30.8 | 1.00 |
| 8192 | 31.0 | 21.3 | 1.45 |
| 10000 | 30.9 | 31.1 | 0.99 |
| 12288 | 31.1 | 30.9 | 1.01 |
| 16384 | 31.3 | 29.3 | 1.07 |
| 32768 | 23.1 | 19.6 | 1.18 |
| 65536 | 23.2 | 19.6 | 1.18 |
| 100000 | 23.2 | 19.9 | 1.17 |
| 131072 | 23.3 | 19.7 | 1.18 |
| 262144 | 23.3 | 19.7 | 1.18 |
| 524288 | 23.1 | 19.7 | 1.17 |
| 1000000 | 20.3 | 16.9 | 1.20 |
| 1048576 | 23.1 | 19.2 | 1.20 |
| 2097152 | 22.9 | 20.0 | 1.14 |
| 4194304 | 18.5 | 18.6 | 1.00 |
| 8388608 | 17.7 | 18.2 | 0.98 |
| 16777216 | 15.9 | 16.9 | 0.94 |
AXPY double
| n | Eigen GFLOP/s | OpenBLAS GFLOP/s | Eigen ÷ OpenBLAS |
|---|---|---|---|
| 2 | 6.0 | 1.3 | 4.46 |
| 3 | 7.6 | 1.9 | 4.10 |
| 4 | 10.5 | 1.9 | 5.61 |
| 6 | 11.8 | 2.2 | 5.26 |
| 8 | 12.5 | 2.8 | 4.49 |
| 12 | 13.5 | 3.0 | 4.42 |
| 16 | 9.0 | 4.5 | 2.01 |
| 24 | 9.8 | 4.8 | 2.04 |
| 32 | 10.9 | 8.8 | 1.25 |
| 48 | 13.2 | 9.7 | 1.36 |
| 64 | 13.7 | 9.0 | 1.54 |
| 96 | 14.3 | 13.2 | 1.08 |
| 100 | 14.3 | 13.2 | 1.08 |
| 128 | 14.6 | 14.8 | 0.99 |
| 192 | 12.9 | 16.7 | 0.78 |
| 256 | 13.4 | 17.7 | 0.76 |
| 384 | 13.6 | 19.2 | 0.71 |
| 512 | 14.0 | 20.0 | 0.70 |
| 768 | 14.5 | 21.0 | 0.69 |
| 1000 | 14.7 | 21.4 | 0.69 |
| 1001 | 14.7 | 21.5 | 0.69 |
| 1024 | 14.8 | 21.5 | 0.69 |
| 1536 | 15.1 | 21.9 | 0.69 |
| 2048 | 15.2 | 22.4 | 0.68 |
| 3072 | 15.4 | 18.6 | 0.83 |
| 4096 | 15.5 | 18.7 | 0.83 |
| 6144 | 15.5 | 18.8 | 0.83 |
| 8192 | 15.6 | 18.0 | 0.87 |
| 10000 | 12.8 | 11.2 | 1.14 |
| 12288 | 11.8 | 11.1 | 1.07 |
| 16384 | 11.5 | 11.1 | 1.04 |
| 32768 | 11.6 | 11.1 | 1.04 |
| 65536 | 11.6 | 11.1 | 1.04 |
| 100000 | 11.6 | 11.1 | 1.04 |
| 131072 | 11.6 | 11.2 | 1.04 |
| 262144 | 11.6 | 11.1 | 1.04 |
| 524288 | 11.5 | 10.8 | 1.07 |
| 1000000 | 11.4 | 11.1 | 1.03 |
| 1048576 | 11.4 | 11.1 | 1.03 |
| 2097152 | 9.1 | 9.2 | 0.99 |
| 4194304 | 8.9 | 9.0 | 0.98 |
| 8388608 | 7.9 | 8.4 | 0.94 |
| 16777216 | 7.7 | 8.0 | 0.97 |
DOT float
| n | Eigen GFLOP/s | OpenBLAS GFLOP/s | Eigen ÷ OpenBLAS |
|---|---|---|---|
| 2 | 6.5 | 0.3 | 20.21 |
| 3 | 8.0 | 0.5 | 16.90 |
| 4 | 11.3 | 0.6 | 18.10 |
| 6 | 12.0 | 0.9 | 13.42 |
| 8 | 21.6 | 1.1 | 19.18 |
| 12 | 31.6 | 1.6 | 20.10 |
| 16 | 25.6 | 1.9 | 13.56 |
| 24 | 37.7 | 2.5 | 14.92 |
| 32 | 44.2 | 3.1 | 14.36 |
| 48 | 45.7 | 3.4 | 13.64 |
| 64 | 45.4 | 9.4 | 4.82 |
| 96 | 44.5 | 8.4 | 5.28 |
| 100 | 45.0 | 8.0 | 5.63 |
| 128 | 45.2 | 15.9 | 2.84 |
| 192 | 45.4 | 20.4 | 2.23 |
| 256 | 45.4 | 23.5 | 1.93 |
| 384 | 45.4 | 27.5 | 1.65 |
| 512 | 45.5 | 28.9 | 1.57 |
| 768 | 45.0 | 32.0 | 1.40 |
| 1000 | 43.5 | 27.9 | 1.56 |
| 1001 | 43.1 | 27.6 | 1.56 |
| 1024 | 43.8 | 33.2 | 1.32 |
| 1536 | 42.2 | 34.2 | 1.23 |
| 2048 | 40.7 | 35.4 | 1.15 |
| 3072 | 38.9 | 36.2 | 1.08 |
| 4096 | 37.9 | 20.5 | 1.85 |
| 6144 | 36.9 | 37.0 | 1.00 |
| 8192 | 36.5 | 26.6 | 1.37 |
| 10000 | 35.7 | 36.7 | 0.98 |
| 12288 | 36.1 | 37.2 | 0.97 |
| 16384 | 35.9 | 36.3 | 0.99 |
| 32768 | 29.7 | 25.4 | 1.17 |
| 65536 | 29.8 | 26.2 | 1.14 |
| 100000 | 29.6 | 27.2 | 1.09 |
| 131072 | 29.8 | 26.8 | 1.11 |
| 262144 | 29.8 | 27.2 | 1.10 |
| 524288 | 29.1 | 27.0 | 1.08 |
| 1000000 | 25.8 | 23.7 | 1.09 |
| 1048576 | 29.1 | 26.6 | 1.09 |
| 2097152 | 27.9 | 25.6 | 1.09 |
| 4194304 | 21.0 | 23.9 | 0.88 |
| 8388608 | 18.7 | 18.6 | 1.00 |
| 16777216 | 17.8 | 18.3 | 0.98 |
DOT double
| n | Eigen GFLOP/s | OpenBLAS GFLOP/s | Eigen ÷ OpenBLAS |
|---|---|---|---|
| 2 | 8.2 | 0.3 | 25.50 |
| 3 | 9.6 | 0.5 | 20.16 |
| 4 | 12.8 | 0.6 | 20.53 |
| 6 | 16.0 | 0.9 | 17.97 |
| 8 | 15.9 | 1.1 | 14.04 |
| 12 | 19.0 | 1.6 | 12.21 |
| 16 | 23.4 | 1.9 | 12.24 |
| 24 | 22.6 | 2.6 | 8.84 |
| 32 | 22.7 | 4.6 | 4.91 |
| 48 | 22.2 | 5.4 | 4.11 |
| 64 | 22.6 | 8.0 | 2.85 |
| 96 | 22.7 | 10.2 | 2.23 |
| 100 | 22.6 | 10.2 | 2.22 |
| 128 | 22.7 | 8.8 | 2.57 |
| 192 | 22.7 | 13.9 | 1.64 |
| 256 | 22.7 | 14.8 | 1.53 |
| 384 | 22.5 | 16.0 | 1.41 |
| 512 | 22.1 | 16.5 | 1.34 |
| 768 | 21.0 | 17.2 | 1.22 |
| 1000 | 20.2 | 17.5 | 1.16 |
| 1001 | 20.2 | 17.5 | 1.16 |
| 1024 | 20.4 | 17.6 | 1.16 |
| 1536 | 19.4 | 18.0 | 1.07 |
| 2048 | 18.9 | 7.1 | 2.67 |
| 3072 | 18.5 | 18.4 | 1.00 |
| 4096 | 18.2 | 10.2 | 1.79 |
| 6144 | 18.0 | 15.0 | 1.20 |
| 8192 | 17.9 | 15.2 | 1.18 |
| 10000 | 15.5 | 15.2 | 1.02 |
| 12288 | 15.0 | 12.9 | 1.16 |
| 16384 | 14.9 | 12.7 | 1.17 |
| 32768 | 14.9 | 13.1 | 1.14 |
| 65536 | 14.9 | 13.4 | 1.11 |
| 100000 | 14.8 | 13.7 | 1.08 |
| 131072 | 14.9 | 13.6 | 1.10 |
| 262144 | 14.6 | 13.5 | 1.08 |
| 524288 | 14.6 | 13.3 | 1.09 |
| 1000000 | 14.1 | 13.1 | 1.08 |
| 1048576 | 14.2 | 13.3 | 1.07 |
| 2097152 | 9.9 | 11.4 | 0.87 |
| 4194304 | 9.3 | 9.2 | 1.01 |
| 8388608 | 8.9 | 9.1 | 0.98 |
| 16777216 | 8.9 | 9.1 | 0.98 |
GEMV float
| m×n | Eigen GFLOP/s | OpenBLAS GFLOP/s | Eigen ÷ OpenBLAS |
|---|---|---|---|
| 2x2 | 1.4 | 0.4 | 3.24 |
| 3x3 | 2.6 | 1.0 | 2.65 |
| 4x4 | 5.4 | 1.7 | 3.11 |
| 6x6 | 9.7 | 3.6 | 2.68 |
| 8x8 | 17.1 | 6.0 | 2.84 |
| 12x12 | 28.9 | 11.7 | 2.48 |
| 16x16 | 39.2 | 19.0 | 2.06 |
| 24x24 | 48.0 | 28.6 | 1.68 |
| 32x32 | 64.4 | 37.7 | 1.71 |
| 48x48 | 56.4 | 51.0 | 1.11 |
| 64x64 | 72.2 | 58.7 | 1.23 |
| 96x96 | 70.9 | 69.1 | 1.03 |
| 100x100 | 56.5 | 69.2 | 0.82 |
| 128x128 | 69.3 | 68.9 | 1.00 |
| 192x192 | 57.2 | 45.9 | 1.24 |
| 200x200 | 56.1 | 46.5 | 1.21 |
| 256x256 | 46.2 | 46.1 | 1.00 |
| 257x257 | 40.5 | 40.8 | 0.99 |
| 384x384 | 43.1 | 46.1 | 0.93 |
| 500x500 | 49.9 | 46.7 | 1.07 |
| 512x512 | 47.1 | 46.4 | 1.01 |
| 768x768 | 46.9 | 47.3 | 0.99 |
| 1000x1000 | 49.0 | 47.4 | 1.03 |
| 1001x1001 | 45.6 | 44.2 | 1.03 |
| 1024x1024 | 47.7 | 44.2 | 1.08 |
| 1536x1536 | 47.5 | 44.0 | 1.08 |
| 2048x2048 | 41.6 | 42.5 | 0.98 |
| 3072x3072 | 27.6 | 25.1 | 1.10 |
| 4096x4096 | 23.4 | 27.9 | 0.84 |
| 4097x4097 | 16.8 | 26.0 | 0.65 |
| 8x10000 | 36.0 | 10.5 | 3.43 |
| 100x10000 | 43.0 | 50.5 | 0.85 |
| 1000x10000 | 21.0 | 29.4 | 0.71 |
| 4000x10000 | 25.0 | 23.5 | 1.06 |
| 10000x8 | 47.3 | 42.8 | 1.10 |
| 10000x100 | 43.8 | 41.8 | 1.05 |
| 10000x1000 | 35.2 | 35.8 | 0.98 |
| 10000x4000 | 30.0 | 27.9 | 1.07 |
GEMV double
| m×n | Eigen GFLOP/s | OpenBLAS GFLOP/s | Eigen ÷ OpenBLAS |
|---|---|---|---|
| 2x2 | 1.8 | 0.4 | 4.47 |
| 3x3 | 2.9 | 0.8 | 3.53 |
| 4x4 | 5.5 | 1.5 | 3.64 |
| 6x6 | 11.3 | 2.2 | 5.04 |
| 8x8 | 17.0 | 4.2 | 4.06 |
| 12x12 | 20.8 | 6.0 | 3.44 |
| 16x16 | 27.8 | 7.6 | 3.64 |
| 24x24 | 30.1 | 9.7 | 3.09 |
| 32x32 | 34.5 | 12.5 | 2.76 |
| 48x48 | 36.4 | 17.1 | 2.13 |
| 64x64 | 35.4 | 12.9 | 2.75 |
| 96x96 | 34.0 | 18.0 | 1.89 |
| 100x100 | 31.0 | 18.1 | 1.71 |
| 128x128 | 34.0 | 16.5 | 2.06 |
| 192x192 | 21.0 | 16.8 | 1.25 |
| 200x200 | 22.6 | 17.1 | 1.32 |
| 256x256 | 23.2 | 16.6 | 1.40 |
| 257x257 | 22.5 | 15.8 | 1.42 |
| 384x384 | 23.1 | 16.8 | 1.38 |
| 500x500 | 24.3 | 16.9 | 1.44 |
| 512x512 | 23.6 | 17.2 | 1.37 |
| 768x768 | 23.6 | 16.7 | 1.41 |
| 1000x1000 | 24.4 | 16.8 | 1.45 |
| 1001x1001 | 23.7 | 16.2 | 1.47 |
| 1024x1024 | 21.9 | 17.1 | 1.28 |
| 1536x1536 | 21.3 | 16.6 | 1.28 |
| 2048x2048 | 13.2 | 16.4 | 0.80 |
| 3072x3072 | 13.5 | 16.3 | 0.83 |
| 4096x4096 | 11.7 | 16.2 | 0.72 |
| 4097x4097 | 9.8 | 15.6 | 0.63 |
| 8x10000 | 22.3 | 4.3 | 5.19 |
| 100x10000 | 20.1 | 16.6 | 1.21 |
| 1000x10000 | 10.1 | 16.2 | 0.62 |
| 4000x10000 | 14.0 | 16.0 | 0.87 |
| 10000x8 | 23.8 | 11.7 | 2.04 |
| 10000x100 | 20.6 | 11.4 | 1.81 |
| 10000x1000 | 15.8 | 11.0 | 1.43 |
| 10000x4000 | 15.5 | 11.0 | 1.40 |
GEMM float
| m×n×k | Eigen GFLOP/s | OpenBLAS GFLOP/s | Eigen ÷ OpenBLAS |
|---|---|---|---|
| 2x2x2 | 2.2 | 0.5 | 4.33 |
| 3x3x3 | 4.3 | 1.5 | 2.93 |
| 4x4x4 | 14.1 | 4.0 | 3.55 |
| 6x6x6 | 11.1 | 8.9 | 1.24 |
| 8x8x8 | 22.8 | 21.1 | 1.08 |
| 12x12x12 | 46.3 | 43.3 | 1.07 |
| 16x16x16 | 56.1 | 67.9 | 0.83 |
| 24x24x24 | 78.7 | 79.4 | 0.99 |
| 32x32x32 | 89.5 | 96.4 | 0.93 |
| 48x48x48 | 99.8 | 104.5 | 0.96 |
| 64x64x64 | 102.2 | 104.1 | 0.98 |
| 96x96x96 | 107.4 | 109.1 | 0.98 |
| 100x100x100 | 103.2 | 101.5 | 1.02 |
| 128x128x128 | 108.4 | 109.9 | 0.99 |
| 160x160x160 | 109.4 | 109.9 | 1.00 |
| 192x192x192 | 115.4 | 91.5 | 1.26 |
| 200x200x200 | 113.7 | 108.1 | 1.05 |
| 224x224x224 | 114.2 | 111.1 | 1.03 |
| 256x256x256 | 115.1 | 110.8 | 1.04 |
| 257x257x257 | 110.2 | 104.4 | 1.06 |
| 288x288x288 | 116.9 | 112.0 | 1.04 |
| 320x320x320 | 117.5 | 112.1 | 1.05 |
| 384x384x384 | 119.0 | 106.8 | 1.11 |
| 448x448x448 | 118.4 | 113.0 | 1.05 |
| 500x500x500 | 119.2 | 111.4 | 1.07 |
| 512x512x512 | 120.1 | 113.1 | 1.06 |
| 768x768x768 | 121.4 | 113.6 | 1.07 |
| 1000x1000x1000 | 121.0 | 113.2 | 1.07 |
| 1001x1001x1001 | 119.5 | 111.4 | 1.07 |
| 1024x1024x1024 | 121.4 | 113.7 | 1.07 |
| 1536x1536x1536 | 121.6 | 113.7 | 1.07 |
| 2048x2048x2048 | 121.2 | 113.4 | 1.07 |
| 3072x3072x3072 | 121.6 | 113.5 | 1.07 |
| 4096x4096x4096 | 121.6 | 113.8 | 1.07 |
| 4097x4097x4097 | 121.1 | 113.1 | 1.07 |
| 64x64x1024 | 99.2 | 100.2 | 0.99 |
| 64x1024x64 | 99.7 | 109.7 | 0.91 |
| 256x256x1024 | 115.8 | 109.7 | 1.06 |
| 1024x64x64 | 100.3 | 107.0 | 0.94 |
| 1024x256x256 | 116.0 | 112.5 | 1.03 |
| 4096x96x96 | 106.4 | 109.5 | 0.97 |
| 4096x128x128 | 110.3 | 110.5 | 1.00 |
| 4096x144x144 | 111.8 | 111.3 | 1.00 |
| 4096x160x160 | 112.9 | 111.7 | 1.01 |
| 4096x176x176 | 113.7 | 112.0 | 1.02 |
| 8192x128x128 | 110.6 | 110.5 | 1.00 |
| 10000x8x8 | 68.2 | 73.5 | 0.93 |
| 10000x100x100 | 110.1 | 111.1 | 0.99 |
| 10000x1000x1000 | 121.0 | 113.3 | 1.07 |
| 10000x4000x4000 | 122.0 | 113.7 | 1.07 |
GEMM double
| m×n×k | Eigen GFLOP/s | OpenBLAS GFLOP/s | Eigen ÷ OpenBLAS |
|---|---|---|---|
| 2x2x2 | 3.6 | 0.6 | 6.05 |
| 3x3x3 | 4.8 | 1.7 | 2.75 |
| 4x4x4 | 9.4 | 4.3 | 2.19 |
| 6x6x6 | 10.2 | 9.3 | 1.10 |
| 8x8x8 | 15.6 | 18.0 | 0.87 |
| 12x12x12 | 26.5 | 31.1 | 0.85 |
| 16x16x16 | 33.8 | 38.9 | 0.87 |
| 24x24x24 | 41.0 | 46.5 | 0.88 |
| 32x32x32 | 44.2 | 48.1 | 0.92 |
| 48x48x48 | 50.4 | 52.1 | 0.97 |
| 64x64x64 | 50.5 | 28.9 | 1.74 |
| 96x96x96 | 52.2 | 53.3 | 0.98 |
| 100x100x100 | 51.7 | 52.7 | 0.98 |
| 128x128x128 | 54.1 | 43.8 | 1.24 |
| 160x160x160 | 55.7 | 54.6 | 1.02 |
| 192x192x192 | 57.2 | 49.8 | 1.15 |
| 200x200x200 | 56.5 | 55.2 | 1.02 |
| 224x224x224 | 56.9 | 55.4 | 1.03 |
| 256x256x256 | 57.7 | 52.4 | 1.10 |
| 257x257x257 | 56.6 | 53.8 | 1.05 |
| 288x288x288 | 58.3 | 55.9 | 1.04 |
| 320x320x320 | 58.1 | 56.0 | 1.04 |
| 384x384x384 | 59.2 | 53.3 | 1.11 |
| 448x448x448 | 59.1 | 56.5 | 1.05 |
| 500x500x500 | 59.3 | 56.4 | 1.05 |
| 512x512x512 | 59.4 | 56.5 | 1.05 |
| 768x768x768 | 60.0 | 56.9 | 1.06 |
| 1000x1000x1000 | 59.9 | 56.7 | 1.06 |
| 1001x1001x1001 | 59.7 | 56.3 | 1.06 |
| 1024x1024x1024 | 59.7 | 56.8 | 1.05 |
| 1536x1536x1536 | 60.0 | 56.7 | 1.06 |
| 2048x2048x2048 | 59.9 | 56.9 | 1.05 |
| 3072x3072x3072 | 60.3 | 56.7 | 1.06 |
| 4096x4096x4096 | 60.4 | 57.1 | 1.06 |
| 4097x4097x4097 | 60.2 | 56.7 | 1.06 |
| 64x64x1024 | 51.7 | 49.8 | 1.04 |
| 64x1024x64 | 51.3 | 54.5 | 0.94 |
| 256x256x1024 | 58.5 | 55.6 | 1.05 |
| 1024x64x64 | 49.8 | 53.3 | 0.93 |
| 1024x256x256 | 58.0 | 56.2 | 1.03 |
| 4096x96x96 | 53.3 | 54.5 | 0.98 |
| 4096x128x128 | 55.0 | 55.0 | 1.00 |
| 4096x144x144 | 55.6 | 55.5 | 1.00 |
| 4096x160x160 | 56.2 | 55.7 | 1.01 |
| 4096x176x176 | 56.6 | 55.9 | 1.01 |
| 8192x128x128 | 55.0 | 55.0 | 1.00 |
| 10000x8x8 | 33.5 | 36.2 | 0.92 |
| 10000x100x100 | 54.9 | 55.4 | 0.99 |
| 10000x1000x1000 | 60.1 | 56.5 | 1.06 |
| 10000x4000x4000 | 60.6 | 56.8 | 1.07 |
TRSM float
| m×n | Eigen GFLOP/s | OpenBLAS GFLOP/s | Eigen ÷ OpenBLAS |
|---|---|---|---|
| 2x2 | 0.5 | 0.4 | 1.10 |
| 3x3 | 1.0 | 0.7 | 1.46 |
| 4x4 | 6.2 | 1.0 | 5.91 |
| 6x6 | 6.9 | 2.1 | 3.24 |
| 8x8 | 20.1 | 3.6 | 5.56 |
| 12x12 | 28.5 | 5.6 | 5.06 |
| 16x16 | 45.9 | 5.4 | 8.42 |
| 24x24 | 56.4 | 9.0 | 6.29 |
| 32x32 | 66.5 | 10.5 | 6.31 |
| 48x48 | 77.0 | 15.4 | 4.99 |
| 64x64 | 83.5 | 15.5 | 5.38 |
| 96x96 | 92.0 | 27.2 | 3.38 |
| 100x100 | 89.8 | 27.1 | 3.32 |
| 128x128 | 94.7 | 33.2 | 2.85 |
| 192x192 | 93.6 | 40.0 | 2.34 |
| 200x200 | 91.2 | 44.2 | 2.06 |
| 256x256 | 99.0 | 51.3 | 1.93 |
| 257x257 | 91.8 | 49.2 | 1.87 |
| 384x384 | 103.3 | 60.5 | 1.71 |
| 500x500 | 105.8 | 68.6 | 1.54 |
| 512x512 | 107.4 | 70.9 | 1.52 |
| 768x768 | 111.2 | 80.9 | 1.37 |
| 1000x1000 | 112.6 | 86.0 | 1.31 |
| 1001x1001 | 111.5 | 84.2 | 1.32 |
| 1024x1024 | 113.1 | 87.3 | 1.30 |
| 1536x1536 | 114.6 | 94.2 | 1.22 |
| 2048x2048 | 116.3 | 98.3 | 1.18 |
| 3072x3072 | 118.3 | 102.6 | 1.15 |
| 4096x4096 | 118.5 | 105.4 | 1.12 |
| 4097x4097 | 116.5 | 104.3 | 1.12 |
| 64x4096 | 80.2 | 20.1 | 4.00 |
| 256x4096 | 99.1 | 52.4 | 1.89 |
| 1024x8 | 63.7 | 37.9 | 1.68 |
| 1024x64 | 103.6 | 76.0 | 1.36 |
| 1024x256 | 111.0 | 84.9 | 1.31 |
| 1024x4096 | 111.5 | 86.9 | 1.28 |
| 4096x8 | 44.0 | 42.5 | 1.04 |
| 4096x64 | 98.2 | 88.3 | 1.11 |
| 4096x256 | 113.7 | 101.1 | 1.12 |
| 4096x1024 | 116.3 | 104.5 | 1.11 |
TRSM double
| m×n | Eigen GFLOP/s | OpenBLAS GFLOP/s | Eigen ÷ OpenBLAS |
|---|---|---|---|
| 2x2 | 0.5 | 0.5 | 0.97 |
| 3x3 | 1.2 | 0.9 | 1.27 |
| 4x4 | 4.7 | 1.7 | 2.83 |
| 6x6 | 6.8 | 2.8 | 2.39 |
| 8x8 | 14.2 | 3.9 | 3.62 |
| 12x12 | 20.0 | 6.5 | 3.09 |
| 16x16 | 23.6 | 7.9 | 2.98 |
| 24x24 | 30.3 | 10.7 | 2.83 |
| 32x32 | 34.0 | 13.1 | 2.59 |
| 48x48 | 38.5 | 17.9 | 2.16 |
| 64x64 | 41.7 | 13.9 | 2.99 |
| 96x96 | 44.3 | 26.6 | 1.66 |
| 100x100 | 44.2 | 26.3 | 1.68 |
| 128x128 | 46.5 | 25.6 | 1.81 |
| 192x192 | 47.0 | 32.7 | 1.44 |
| 200x200 | 46.5 | 36.6 | 1.27 |
| 256x256 | 49.1 | 37.2 | 1.32 |
| 257x257 | 46.2 | 38.4 | 1.20 |
| 384x384 | 52.4 | 44.0 | 1.19 |
| 500x500 | 53.2 | 46.0 | 1.16 |
| 512x512 | 52.9 | 46.5 | 1.14 |
| 768x768 | 55.2 | 49.8 | 1.11 |
| 1000x1000 | 56.1 | 51.3 | 1.09 |
| 1001x1001 | 55.7 | 50.6 | 1.10 |
| 1024x1024 | 55.6 | 51.4 | 1.08 |
| 1536x1536 | 57.3 | 52.6 | 1.09 |
| 2048x2048 | 57.3 | 53.6 | 1.07 |
| 3072x3072 | 57.9 | 54.5 | 1.06 |
| 4096x4096 | 58.6 | 55.3 | 1.06 |
| 4097x4097 | 57.8 | 54.9 | 1.05 |
| 64x4096 | 40.5 | 21.5 | 1.89 |
| 256x4096 | 48.6 | 40.0 | 1.22 |
| 1024x8 | 31.2 | 31.5 | 0.99 |
| 1024x64 | 51.0 | 47.7 | 1.07 |
| 1024x256 | 54.9 | 50.6 | 1.08 |
| 1024x4096 | 55.1 | 50.8 | 1.08 |
| 4096x8 | 24.6 | 24.9 | 0.99 |
| 4096x64 | 50.1 | 48.2 | 1.04 |
| 4096x256 | 56.2 | 53.5 | 1.05 |
| 4096x1024 | 57.8 | 54.8 | 1.05 |
SYRK float
| n×k | Eigen GFLOP/s | OpenBLAS GFLOP/s | Eigen ÷ OpenBLAS |
|---|---|---|---|
| 2x2 | 0.2 | 0.4 | 0.51 |
| 3x3 | 0.5 | 1.0 | 0.45 |
| 4x4 | 1.2 | 2.2 | 0.54 |
| 6x6 | 2.8 | 4.7 | 0.61 |
| 8x8 | 7.0 | 8.3 | 0.84 |
| 12x12 | 10.8 | 13.0 | 0.83 |
| 16x16 | 20.2 | 18.2 | 1.11 |
| 24x24 | 33.8 | 34.3 | 0.98 |
| 32x32 | 46.4 | 44.0 | 1.06 |
| 48x48 | 61.2 | 62.3 | 0.98 |
| 64x64 | 73.4 | 70.6 | 1.04 |
| 96x96 | 84.7 | 85.1 | 1.00 |
| 100x100 | 85.4 | 77.7 | 1.10 |
| 128x128 | 89.2 | 88.8 | 1.00 |
| 192x192 | 99.4 | 71.4 | 1.39 |
| 200x200 | 98.8 | 93.3 | 1.06 |
| 256x256 | 101.2 | 97.7 | 1.04 |
| 257x257 | 99.6 | 91.8 | 1.09 |
| 384x384 | 108.9 | 95.5 | 1.14 |
| 500x500 | 111.4 | 104.1 | 1.07 |
| 512x512 | 112.1 | 99.2 | 1.13 |
| 768x768 | 115.8 | 108.4 | 1.07 |
| 1000x1000 | 116.7 | 109.8 | 1.06 |
| 1001x1001 | 115.4 | 107.0 | 1.08 |
| 1024x1024 | 116.1 | 105.8 | 1.10 |
| 1536x1536 | 118.7 | 111.6 | 1.06 |
| 2048x2048 | 118.8 | 109.6 | 1.08 |
| 3072x3072 | 119.8 | 110.9 | 1.08 |
| 4096x4096 | 119.1 | 111.7 | 1.07 |
| 4097x4097 | 118.7 | 111.0 | 1.07 |
| 64x4096 | 66.3 | 50.6 | 1.31 |
| 256x4096 | 100.6 | 84.9 | 1.19 |
| 1024x4096 | 115.0 | 105.4 | 1.09 |
| 4096x8 | 57.9 | 57.7 | 1.00 |
| 4096x64 | 110.1 | 113.2 | 0.97 |
| 4096x256 | 118.3 | 113.5 | 1.04 |
| 4096x1024 | 118.4 | 111.9 | 1.06 |
SYRK double
| n×k | Eigen GFLOP/s | OpenBLAS GFLOP/s | Eigen ÷ OpenBLAS |
|---|---|---|---|
| 2x2 | 0.2 | 0.3 | 0.45 |
| 3x3 | 0.4 | 0.9 | 0.43 |
| 4x4 | 1.0 | 2.0 | 0.48 |
| 6x6 | 2.5 | 4.4 | 0.58 |
| 8x8 | 4.6 | 7.3 | 0.63 |
| 12x12 | 7.7 | 14.5 | 0.53 |
| 16x16 | 13.1 | 17.6 | 0.74 |
| 24x24 | 18.1 | 26.2 | 0.69 |
| 32x32 | 23.6 | 32.9 | 0.72 |
| 48x48 | 30.6 | 40.9 | 0.75 |
| 64x64 | 35.7 | 19.1 | 1.87 |
| 96x96 | 40.0 | 45.5 | 0.88 |
| 100x100 | 40.6 | 44.7 | 0.91 |
| 128x128 | 43.3 | 33.4 | 1.30 |
| 192x192 | 48.1 | 42.3 | 1.14 |
| 200x200 | 47.8 | 51.0 | 0.94 |
| 256x256 | 49.8 | 45.0 | 1.11 |
| 257x257 | 49.4 | 49.4 | 1.00 |
| 384x384 | 53.6 | 49.7 | 1.08 |
| 500x500 | 55.1 | 54.4 | 1.01 |
| 512x512 | 55.3 | 50.6 | 1.09 |
| 768x768 | 57.0 | 55.5 | 1.03 |
| 1000x1000 | 57.8 | 56.1 | 1.03 |
| 1001x1001 | 57.4 | 55.5 | 1.03 |
| 1024x1024 | 57.3 | 53.8 | 1.07 |
| 1536x1536 | 58.2 | 54.9 | 1.06 |
| 2048x2048 | 57.4 | 55.4 | 1.04 |
| 3072x3072 | 57.7 | 55.7 | 1.04 |
| 4096x4096 | 58.0 | 56.4 | 1.03 |
| 4097x4097 | 58.4 | 56.0 | 1.04 |
| 64x4096 | 34.6 | 27.1 | 1.28 |
| 256x4096 | 51.0 | 45.0 | 1.13 |
| 1024x4096 | 56.1 | 53.6 | 1.05 |
| 4096x8 | 35.8 | 24.0 | 1.49 |
| 4096x64 | 54.7 | 55.8 | 0.98 |
| 4096x256 | 58.8 | 56.7 | 1.04 |
| 4096x1024 | 57.9 | 56.3 | 1.03 |
POTRF float
| n | Eigen GFLOP/s | OpenBLAS GFLOP/s | Eigen ÷ OpenBLAS |
|---|---|---|---|
| 2 | 0.4 | 0.1 | 3.92 |
| 3 | 0.6 | 0.3 | 2.32 |
| 4 | 1.0 | 0.5 | 2.20 |
| 6 | 1.5 | 0.9 | 1.59 |
| 8 | 2.1 | 1.4 | 1.51 |
| 12 | 3.6 | 2.3 | 1.55 |
| 16 | 5.4 | 3.0 | 1.81 |
| 24 | 9.1 | 3.7 | 2.42 |
| 32 | 8.1 | 4.0 | 2.00 |
| 48 | 13.4 | 12.1 | 1.11 |
| 64 | 18.2 | 16.3 | 1.12 |
| 96 | 26.8 | 22.7 | 1.18 |
| 100 | 27.0 | 21.8 | 1.24 |
| 128 | 38.2 | 26.7 | 1.43 |
| 192 | 49.7 | 46.6 | 1.07 |
| 200 | 50.3 | 44.8 | 1.12 |
| 256 | 64.3 | 55.1 | 1.17 |
| 257 | 60.2 | 52.8 | 1.14 |
| 384 | 77.0 | 68.3 | 1.13 |
| 500 | 83.3 | 68.3 | 1.22 |
| 512 | 84.9 | 67.7 | 1.25 |
| 768 | 95.1 | 83.9 | 1.13 |
| 1000 | 99.8 | 88.9 | 1.12 |
| 1001 | 98.1 | 86.3 | 1.14 |
| 1024 | 94.9 | 88.8 | 1.07 |
| 1536 | 105.3 | 97.0 | 1.09 |
| 2048 | 105.3 | 100.4 | 1.05 |
| 3072 | 110.1 | 105.4 | 1.04 |
| 4096 | 110.3 | 105.8 | 1.04 |
| 4097 | 109.7 | 105.0 | 1.05 |
POTRF double
| n | Eigen GFLOP/s | OpenBLAS GFLOP/s | Eigen ÷ OpenBLAS |
|---|---|---|---|
| 2 | 0.5 | 0.1 | 4.23 |
| 3 | 0.8 | 0.3 | 2.88 |
| 4 | 1.1 | 0.5 | 2.29 |
| 6 | 1.5 | 0.9 | 1.75 |
| 8 | 2.2 | 1.3 | 1.77 |
| 12 | 3.9 | 2.1 | 1.84 |
| 16 | 5.6 | 2.8 | 2.00 |
| 24 | 8.8 | 4.0 | 2.23 |
| 32 | 6.6 | 4.2 | 1.56 |
| 48 | 9.8 | 10.6 | 0.92 |
| 64 | 12.4 | 14.1 | 0.88 |
| 96 | 16.9 | 18.4 | 0.91 |
| 100 | 16.9 | 18.6 | 0.91 |
| 128 | 22.5 | 21.6 | 1.04 |
| 192 | 27.6 | 32.0 | 0.86 |
| 200 | 28.0 | 31.3 | 0.89 |
| 256 | 33.7 | 29.5 | 1.14 |
| 257 | 32.6 | 34.7 | 0.94 |
| 384 | 39.5 | 38.0 | 1.04 |
| 500 | 42.4 | 42.0 | 1.01 |
| 512 | 42.1 | 39.8 | 1.06 |
| 768 | 47.8 | 45.8 | 1.04 |
| 1000 | 50.4 | 49.2 | 1.02 |
| 1001 | 50.1 | 48.5 | 1.03 |
| 1024 | 47.7 | 46.7 | 1.02 |
| 1536 | 51.5 | 50.6 | 1.02 |
| 2048 | 51.9 | 51.4 | 1.01 |
| 3072 | 54.8 | 53.1 | 1.03 |
| 4096 | 55.4 | 54.1 | 1.02 |
| 4097 | 55.3 | 53.8 | 1.03 |
GETRF float
| n | Eigen GFLOP/s | OpenBLAS GFLOP/s | Eigen ÷ OpenBLAS |
|---|---|---|---|
| 2 | 0.2 | 0.3 | 0.83 |
| 3 | 0.4 | 0.4 | 0.89 |
| 4 | 0.7 | 0.6 | 1.26 |
| 6 | 1.3 | 0.7 | 1.82 |
| 8 | 2.1 | 0.9 | 2.47 |
| 12 | 3.9 | 1.2 | 3.29 |
| 16 | 5.8 | 1.5 | 3.92 |
| 24 | 8.1 | 3.4 | 2.36 |
| 32 | 11.9 | 4.2 | 2.85 |
| 48 | 18.6 | 8.4 | 2.22 |
| 64 | 24.7 | 9.5 | 2.60 |
| 96 | 35.9 | 18.9 | 1.90 |
| 100 | 23.1 | 19.2 | 1.20 |
| 128 | 43.0 | 23.2 | 1.86 |
| 192 | 52.3 | 35.0 | 1.49 |
| 200 | 52.4 | 35.5 | 1.47 |
| 256 | 63.2 | 43.1 | 1.46 |
| 257 | 60.5 | 41.5 | 1.46 |
| 384 | 75.8 | 54.6 | 1.39 |
| 500 | 80.1 | 63.0 | 1.27 |
| 512 | 82.3 | 64.9 | 1.27 |
| 768 | 91.9 | 76.0 | 1.21 |
| 1000 | 96.5 | 81.9 | 1.18 |
| 1001 | 95.0 | 80.4 | 1.18 |
| 1024 | 95.8 | 83.8 | 1.14 |
| 1536 | 102.6 | 92.3 | 1.11 |
| 2048 | 104.8 | 96.2 | 1.09 |
| 3072 | 107.5 | 100.8 | 1.07 |
| 4096 | 105.9 | 103.3 | 1.03 |
| 4097 | 105.1 | 102.5 | 1.03 |
GETRF double
| n | Eigen GFLOP/s | OpenBLAS GFLOP/s | Eigen ÷ OpenBLAS |
|---|---|---|---|
| 2 | 0.3 | 0.2 | 1.37 |
| 3 | 0.5 | 0.4 | 1.31 |
| 4 | 0.7 | 0.5 | 1.58 |
| 6 | 1.2 | 0.6 | 1.95 |
| 8 | 2.0 | 0.7 | 2.71 |
| 12 | 3.8 | 1.0 | 3.87 |
| 16 | 5.3 | 1.2 | 4.31 |
| 24 | 7.0 | 2.9 | 2.42 |
| 32 | 9.0 | 3.7 | 2.40 |
| 48 | 13.5 | 7.9 | 1.71 |
| 64 | 16.9 | 10.0 | 1.70 |
| 96 | 22.6 | 16.9 | 1.34 |
| 100 | 23.0 | 17.1 | 1.35 |
| 128 | 24.4 | 17.9 | 1.36 |
| 192 | 28.3 | 28.6 | 0.99 |
| 200 | 28.3 | 28.6 | 0.99 |
| 256 | 34.7 | 30.5 | 1.14 |
| 257 | 33.6 | 31.2 | 1.08 |
| 384 | 40.5 | 37.8 | 1.07 |
| 500 | 42.4 | 41.4 | 1.02 |
| 512 | 43.0 | 41.1 | 1.05 |
| 768 | 47.7 | 46.2 | 1.03 |
| 1000 | 49.8 | 48.1 | 1.04 |
| 1001 | 49.3 | 47.5 | 1.04 |
| 1024 | 49.1 | 48.2 | 1.02 |
| 1536 | 51.5 | 50.7 | 1.02 |
| 2048 | 50.6 | 51.3 | 0.99 |
| 3072 | 52.9 | 52.7 | 1.00 |
| 4096 | 53.4 | 53.7 | 0.99 |
| 4097 | 52.8 | 53.4 | 0.99 |
GEQRF float
| m×n | Eigen GFLOP/s | OpenBLAS GFLOP/s | Eigen ÷ OpenBLAS |
|---|---|---|---|
| 2x2 | 0.2 | 0.2 | 1.52 |
| 3x3 | 0.4 | 0.3 | 1.42 |
| 4x4 | 0.6 | 0.5 | 1.41 |
| 6x6 | 1.3 | 0.9 | 1.47 |
| 8x8 | 1.9 | 1.3 | 1.55 |
| 12x12 | 4.0 | 2.5 | 1.56 |
| 16x16 | 6.1 | 3.8 | 1.61 |
| 24x24 | 10.2 | 6.6 | 1.56 |
| 32x32 | 13.8 | 9.0 | 1.53 |
| 48x48 | 19.4 | 13.2 | 1.46 |
| 64x64 | 15.4 | 12.1 | 1.28 |
| 96x96 | 24.4 | 20.0 | 1.22 |
| 100x100 | 24.3 | 20.4 | 1.19 |
| 128x128 | 33.3 | 23.5 | 1.42 |
| 192x192 | 44.5 | 35.9 | 1.24 |
| 200x200 | 46.7 | 42.8 | 1.09 |
| 256x256 | 54.8 | 45.4 | 1.21 |
| 257x257 | 50.9 | 51.7 | 0.98 |
| 384x384 | 67.5 | 61.0 | 1.11 |
| 500x500 | 74.5 | 71.9 | 1.04 |
| 512x512 | 75.9 | 63.1 | 1.20 |
| 768x768 | 85.7 | 74.3 | 1.15 |
| 1000x1000 | 90.0 | 87.2 | 1.03 |
| 1001x1001 | 88.3 | 85.7 | 1.03 |
| 1024x1024 | 90.0 | 76.3 | 1.18 |
| 1536x1536 | 96.5 | 86.5 | 1.11 |
| 2048x2048 | 98.6 | 84.3 | 1.17 |
| 3072x3072 | 100.4 | 90.4 | 1.11 |
| 4096x4096 | 100.7 | 83.2 | 1.21 |
| 4097x4097 | 99.4 | 84.2 | 1.18 |
| 4096x8 | 21.0 | 10.0 | 2.10 |
| 4096x64 | 26.1 | 21.3 | 1.23 |
| 4096x256 | 56.4 | 43.9 | 1.28 |
| 4096x1024 | 87.5 | 77.6 | 1.13 |
| 10000x8 | 21.2 | 9.8 | 2.16 |
| 10000x100 | 37.6 | 22.9 | 1.65 |
| 10000x1000 | 90.3 | 83.1 | 1.09 |
| 10000x4000 | 100.8 | 87.8 | 1.15 |
| 100000x8 | 19.8 | 9.2 | 2.15 |
| 100000x64 | 25.7 | 19.0 | 1.35 |
| 100000x256 | 55.0 | 41.4 | 1.33 |
GEQRF double
| m×n | Eigen GFLOP/s | OpenBLAS GFLOP/s | Eigen ÷ OpenBLAS |
|---|---|---|---|
| 2x2 | 0.2 | 0.2 | 1.48 |
| 3x3 | 0.4 | 0.3 | 1.49 |
| 4x4 | 0.7 | 0.4 | 1.51 |
| 6x6 | 1.3 | 0.8 | 1.57 |
| 8x8 | 2.0 | 1.2 | 1.59 |
| 12x12 | 3.7 | 2.2 | 1.69 |
| 16x16 | 5.4 | 3.1 | 1.76 |
| 24x24 | 8.2 | 4.6 | 1.80 |
| 32x32 | 10.0 | 5.8 | 1.73 |
| 48x48 | 12.8 | 9.0 | 1.42 |
| 64x64 | 10.7 | 9.6 | 1.11 |
| 96x96 | 16.8 | 12.7 | 1.32 |
| 100x100 | 15.7 | 13.0 | 1.21 |
| 128x128 | 19.6 | 13.6 | 1.44 |
| 192x192 | 25.6 | 21.5 | 1.19 |
| 200x200 | 25.7 | 25.5 | 1.01 |
| 256x256 | 29.2 | 24.9 | 1.17 |
| 257x257 | 28.2 | 29.8 | 0.95 |
| 384x384 | 35.1 | 33.1 | 1.06 |
| 500x500 | 38.1 | 39.4 | 0.97 |
| 512x512 | 37.6 | 35.0 | 1.07 |
| 768x768 | 42.4 | 41.0 | 1.04 |
| 1000x1000 | 44.9 | 45.6 | 0.98 |
| 1001x1001 | 44.3 | 45.0 | 0.98 |
| 1024x1024 | 43.9 | 40.9 | 1.07 |
| 1536x1536 | 47.4 | 45.8 | 1.03 |
| 2048x2048 | 47.2 | 43.6 | 1.08 |
| 3072x3072 | 49.7 | 44.4 | 1.12 |
| 4096x4096 | 49.9 | 45.0 | 1.11 |
| 4097x4097 | 49.3 | 43.6 | 1.13 |
| 4096x8 | 10.6 | 7.2 | 1.47 |
| 4096x64 | 13.6 | 12.2 | 1.11 |
| 4096x256 | 28.8 | 24.7 | 1.17 |
| 4096x1024 | 43.5 | 41.8 | 1.04 |
| 10000x8 | 10.4 | 6.9 | 1.50 |
| 10000x100 | 18.6 | 12.2 | 1.53 |
| 10000x1000 | 44.7 | 41.5 | 1.08 |
| 10000x4000 | 50.4 | 43.9 | 1.15 |
| 100000x8 | 9.9 | 6.6 | 1.51 |
| 100000x64 | 12.6 | 10.5 | 1.19 |
| 100000x256 | 27.3 | 22.1 | 1.23 |
SYEV float
| n | Eigen GFLOP/s | OpenBLAS GFLOP/s | Eigen ÷ OpenBLAS |
|---|---|---|---|
| 2 | 0.9 | 0.7 | 1.34 |
| 3 | 0.9 | 0.6 | 1.39 |
| 4 | 1.1 | 0.9 | 1.24 |
| 6 | 1.7 | 1.5 | 1.16 |
| 8 | 2.3 | 2.1 | 1.10 |
| 12 | 3.6 | 3.1 | 1.16 |
| 16 | 5.1 | 4.4 | 1.17 |
| 24 | 7.7 | 6.5 | 1.18 |
| 32 | 10.3 | 8.3 | 1.24 |
| 48 | 15.5 | 10.2 | 1.52 |
| 64 | 20.0 | 11.3 | 1.77 |
| 96 | 27.4 | 15.0 | 1.83 |
| 100 | 27.3 | 14.7 | 1.85 |
| 128 | 33.1 | 16.5 | 2.00 |
| 192 | 41.2 | 19.2 | 2.15 |
| 200 | 41.8 | 19.9 | 2.10 |
| 256 | 43.6 | 19.6 | 2.22 |
| 257 | 42.2 | 20.5 | 2.06 |
| 384 | 49.4 | 21.9 | 2.26 |
| 500 | 51.1 | 23.0 | 2.22 |
| 512 | 50.1 | 24.2 | 2.07 |
| 768 | 54.8 | 25.9 | 2.11 |
| 1000 | 58.4 | 26.3 | 2.22 |
| 1001 | 51.2 | 27.5 | 1.86 |
| 1024 | 56.9 | 25.7 | 2.21 |
| 1536 | 59.2 | 27.8 | 2.13 |
| 2048 | 59.6 | 26.3 | 2.27 |
SYEV double
| n | Eigen GFLOP/s | OpenBLAS GFLOP/s | Eigen ÷ OpenBLAS |
|---|---|---|---|
| 2 | 0.9 | 0.7 | 1.29 |
| 3 | 0.8 | 0.6 | 1.37 |
| 4 | 0.9 | 0.8 | 1.13 |
| 6 | 1.4 | 1.2 | 1.12 |
| 8 | 1.8 | 1.7 | 1.10 |
| 12 | 2.9 | 2.5 | 1.15 |
| 16 | 4.0 | 3.3 | 1.22 |
| 24 | 6.0 | 4.9 | 1.21 |
| 32 | 7.8 | 5.7 | 1.35 |
| 48 | 11.1 | 7.9 | 1.40 |
| 64 | 13.4 | 9.4 | 1.43 |
| 96 | 16.4 | 11.0 | 1.48 |
| 100 | 16.6 | 12.1 | 1.38 |
| 128 | 18.8 | 12.5 | 1.50 |
| 192 | 21.0 | 14.6 | 1.44 |
| 200 | 21.5 | 13.4 | 1.61 |
| 256 | 21.3 | 15.9 | 1.34 |
| 257 | 20.9 | 16.0 | 1.30 |
| 384 | 23.6 | 16.5 | 1.44 |
| 500 | 25.4 | 19.1 | 1.33 |
| 512 | 24.8 | 17.5 | 1.41 |
| 768 | 26.0 | 19.7 | 1.32 |
| 1000 | 27.4 | 20.7 | 1.32 |
| 1001 | 23.3 | 20.7 | 1.12 |
| 1024 | 26.5 | 20.3 | 1.31 |
| 1536 | 27.3 | 20.7 | 1.32 |
| 2048 | 25.4 | 19.5 | 1.30 |
GESDD float
| m×n | Eigen GFLOP/s | OpenBLAS GFLOP/s | Eigen ÷ OpenBLAS |
|---|---|---|---|
| 2x2 | 2.5 | 0.4 | 6.83 |
| 3x3 | 1.6 | 0.7 | 2.31 |
| 4x4 | 2.2 | 1.1 | 2.04 |
| 6x6 | 2.1 | 1.9 | 1.14 |
| 8x8 | 2.5 | 2.6 | 0.96 |
| 12x12 | 2.9 | 4.3 | 0.68 |
| 16x16 | 5.7 | 5.6 | 1.02 |
| 24x24 | 7.9 | 7.8 | 1.01 |
| 32x32 | 11.0 | 12.3 | 0.89 |
| 48x48 | 16.9 | 18.5 | 0.92 |
| 64x64 | 24.5 | 26.6 | 0.92 |
| 96x96 | 38.6 | 36.0 | 1.07 |
| 100x100 | 39.3 | 36.6 | 1.07 |
| 128x128 | 49.9 | 46.0 | 1.09 |
| 192x192 | 72.9 | 49.5 | 1.47 |
| 200x200 | 74.2 | 50.3 | 1.47 |
| 256x256 | 81.1 | 49.0 | 1.65 |
| 257x257 | 85.4 | 57.0 | 1.50 |
| 384x384 | 107.3 | 63.5 | 1.69 |
| 500x500 | 125.8 | 77.2 | 1.63 |
| 512x512 | 117.8 | 64.7 | 1.82 |
| 768x768 | 140.3 | 77.8 | 1.80 |
| 1000x1000 | 158.8 | 96.3 | 1.65 |
| 1001x1001 | 156.3 | 95.7 | 1.63 |
| 1024x1024 | 148.6 | 81.5 | 1.82 |
| 1536x1536 | 167.6 | 95.3 | 1.76 |
| 2048x2048 | 162.8 | 94.1 | 1.73 |
| 4096x64 | 91.9 | 62.8 | 1.46 |
| 4096x256 | 149.4 | 105.3 | 1.42 |
| 4096x1024 | 168.0 | 118.9 | 1.41 |
| 10000x8 | 32.4 | 29.7 | 1.09 |
| 10000x100 | 124.9 | 70.1 | 1.78 |
| 10000x1000 | 201.6 | 169.0 | 1.19 |
GESDD double
| m×n | Eigen GFLOP/s | OpenBLAS GFLOP/s | Eigen ÷ OpenBLAS |
|---|---|---|---|
| 2x2 | 2.6 | 0.4 | 7.12 |
| 3x3 | 1.3 | 0.6 | 2.12 |
| 4x4 | 1.7 | 0.9 | 1.76 |
| 6x6 | 1.9 | 1.6 | 1.17 |
| 8x8 | 1.9 | 2.2 | 0.86 |
| 12x12 | 2.1 | 3.3 | 0.65 |
| 16x16 | 4.3 | 4.3 | 1.00 |
| 24x24 | 5.7 | 6.0 | 0.96 |
| 32x32 | 7.5 | 9.7 | 0.78 |
| 48x48 | 11.7 | 14.4 | 0.82 |
| 64x64 | 15.1 | 20.6 | 0.74 |
| 96x96 | 22.5 | 28.0 | 0.80 |
| 100x100 | 24.1 | 28.9 | 0.83 |
| 128x128 | 29.1 | 35.4 | 0.82 |
| 192x192 | 40.0 | 38.4 | 1.04 |
| 200x200 | 42.1 | 38.3 | 1.10 |
| 256x256 | 45.5 | 39.1 | 1.16 |
| 257x257 | 47.9 | 43.9 | 1.09 |
| 384x384 | 58.2 | 51.2 | 1.14 |
| 500x500 | 67.9 | 59.8 | 1.14 |
| 512x512 | 64.4 | 51.2 | 1.26 |
| 768x768 | 76.1 | 63.9 | 1.19 |
| 1000x1000 | 83.6 | 74.5 | 1.12 |
| 1001x1001 | 82.8 | 75.6 | 1.10 |
| 1024x1024 | 76.9 | 63.7 | 1.21 |
| 1536x1536 | 84.8 | 75.6 | 1.12 |
| 2048x2048 | 69.8 | 69.3 | 1.01 |
| 4096x64 | 48.4 | 36.6 | 1.32 |
| 4096x256 | 77.3 | 62.3 | 1.24 |
| 4096x1024 | 86.1 | 75.2 | 1.14 |
| 10000x8 | 13.6 | 20.7 | 0.66 |
| 10000x100 | 62.8 | 37.7 | 1.67 |
| 10000x1000 | 102.7 | 93.1 | 1.10 |
GEEV float
| n | Eigen GFLOP/s | OpenBLAS GFLOP/s | Eigen ÷ OpenBLAS |
|---|---|---|---|
| 2 | 2.6 | 0.4 | 6.35 |
| 3 | 1.3 | 0.6 | 2.14 |
| 4 | 2.2 | 0.9 | 2.43 |
| 6 | 2.7 | 1.6 | 1.70 |
| 8 | 3.9 | 2.2 | 1.79 |
| 12 | 5.4 | 3.5 | 1.54 |
| 16 | 6.7 | 4.5 | 1.50 |
| 24 | 9.4 | 6.9 | 1.36 |
| 32 | 10.8 | 8.7 | 1.24 |
| 48 | 12.6 | 11.7 | 1.08 |
| 64 | 13.7 | 13.9 | 0.98 |
| 96 | 15.8 | 16.4 | 0.96 |
| 100 | 16.0 | 16.8 | 0.95 |
| 128 | 16.8 | 19.9 | 0.84 |
| 192 | 17.5 | 32.2 | 0.54 |
| 200 | 18.5 | 35.1 | 0.53 |
| 256 | 17.8 | 41.9 | 0.42 |
| 257 | 18.4 | 42.9 | 0.43 |
| 384 | 16.2 | 58.7 | 0.28 |
| 500 | 20.1 | 71.1 | 0.28 |
| 512 | 19.5 | 49.4 | 0.39 |
| 768 | 20.8 | 82.6 | 0.25 |
| 1000 | 22.2 | 108.2 | 0.21 |
| 1001 | 21.8 | 106.6 | 0.20 |
| 1024 | 19.2 | 76.9 | 0.25 |
GEEV double
| n | Eigen GFLOP/s | OpenBLAS GFLOP/s | Eigen ÷ OpenBLAS |
|---|---|---|---|
| 2 | 2.6 | 0.4 | 6.26 |
| 3 | 1.2 | 0.6 | 2.14 |
| 4 | 1.7 | 0.8 | 2.00 |
| 6 | 2.2 | 1.3 | 1.69 |
| 8 | 3.0 | 2.0 | 1.54 |
| 12 | 4.1 | 2.8 | 1.43 |
| 16 | 4.9 | 3.7 | 1.32 |
| 24 | 5.7 | 5.3 | 1.09 |
| 32 | 6.1 | 6.8 | 0.90 |
| 48 | 7.4 | 8.8 | 0.85 |
| 64 | 7.8 | 10.3 | 0.76 |
| 96 | 8.5 | 11.0 | 0.77 |
| 100 | 8.8 | 11.6 | 0.75 |
| 128 | 8.7 | 13.0 | 0.67 |
| 192 | 8.8 | 18.3 | 0.48 |
| 200 | 9.2 | 19.4 | 0.47 |
| 256 | 8.8 | 22.2 | 0.40 |
| 257 | 9.1 | 22.5 | 0.40 |
| 384 | 9.1 | 30.5 | 0.30 |
| 500 | 9.7 | 36.6 | 0.27 |
| 512 | 9.0 | 21.7 | 0.41 |
| 768 | 9.4 | 36.9 | 0.25 |
| 1000 | 9.5 | 51.3 | 0.19 |
| 1001 | 9.6 | 51.2 | 0.19 |
| 1024 | 7.2 | 35.7 | 0.20 |