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

Single-threaded BLAS (AXPY, DOT, GEMV, GEMM, TRSM, SYRK) and LAPACK (POTRF, GETRF, GEQRF, SYEV, GESDD, GEEV): Eigen master built for SVE at a 128-bit vector length against Arm Performance Libraries, NVPL and OpenBLAS on one core of an NVIDIA Grace (Arm Neoverse V2).

The cells of the Grace NEON page measured again on the same core with Eigen compiled for SVE (-march=armv9-a+sve2 -msve-vector-bits=128 -DEIGEN_ARM64_USE_SVE), which selects Eigen’s SVE packet backend at the 128-bit vector length of this CPU. SVE and NEON are the same width here, so a difference between the two pages is code generation, not vector width: Eigen’s SVE kernels are a separate, younger backend, and the compiler targets Armv9-A rather than the Armv8-A baseline of the NEON build.

The libraries are those of the NEON page and were not measured again: they choose their kernels at run time from the CPU and do not change with Eigen’s build flags.

Conditions

CPU NVIDIA Grace, 72 Arm Neoverse V2 cores in one socket (lscpu: Neoverse-V2, CPU part 0xd4f); per core L1d 64 KiB and L2 1 MiB, an L3 of 114 MiB shared by all cores; 494 GiB of memory; SVE2 at a 128-bit vector length (/proc/sys/abi/sve_default_vector_length is 16 bytes), bf16, i8mm; 64 KiB kernel pages
OS Ubuntu 24.04.4 LTS, Linux 6.14.0-1015-nvidia-64k
Compiler GCC 13.3.0, -O3 -DNDEBUG -march=armv9-a+sve2 -msve-vector-bits=128, C++17
Eigen master ab4f7316d (5.0.1-dev) with the harness commit of merge request !2903 on top (9512dcbcb on the author’s fork), default configuration, no external BLAS, EIGEN_ARM64_USE_SVE defined: every packet kernel is the SVE code at a fixed 128-bit length
Libraries Arm Performance Libraries 26.07, NVPL 26.5 and OpenBLAS 0.3.26 as on the NEON page, not measured again: their rates are those of that page’s session
Interface the libraries are called through the Fortran BLAS and LAPACK symbols with column-major operands
Threads 1 for every arm; 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; the process pinned to one core (taskset -c 8)
Date Eigen: 2026-09-22 (24 runs, about 2.7 hours of measurement). Libraries: the NEON page’s session, 2026-09-22, three to thirteen hours before the SVE passes
Harness benchmarks/comparison/run.py --isa aarch64-sve --filter /eigen/ from Eigen merge request !2903, machine profile neoverse-v2-72c

GEMM at n = 1024 ran at 34 GFLOP/s in double and 78 in float with Eigen built for SVE, against 37 and 84 for the NEON build of the previous page; the libraries stand at 45 and 94 (Arm Performance Libraries), 45 and 95 (NVPL) and 35 and 71 (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. Eigen was measured twice, in two binaries of the same SVE build, those linked against Arm Performance Libraries and NVPL, 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. The spread is within 3 % for 93 % of the cells, within 5 % for 97 % and above 10 % for 1 %; the widest is AXPY in float at n = 100, 15.0 against 21.5 GFLOP/s, and the rest of the top ten are AXPY and DOT cells below L2, the binary-dependent effect the NEON page also shows.

A ratio divides that median by the library’s rate from the NEON page’s session, since the library does not change with Eigen’s build. The cells above L3, where both builds run at the bandwidth of one core, bound the drift between the two sessions: AXPY and DOT at n = (2^{24}) and GEMV at n = 4096 in double repeat the NEON session’s rates within 2 % (3.6 against 3.7, 3.7 against 3.7 and 7.9 against 7.9 GFLOP/s).

Each run covered one operation in one binary and started only once the whole machine had used less than 0.5 of a core over a 5 s window; the load average before and after each run is in its result file (between 0.92 and 1.48 before and between 1.00 and 1.61 after a run. Two of the 24 runs, DOT and GEQRF in the Arm Performance Libraries binary, ended at 1.6, so another process was awake for part of them; their cells agree with the second pass within the spreads above, the widest being DOT in double at n = 2048, 16.5 against 18.7 GFLOP/s). None of the 24 runs had to be repeated, and no cell errored.

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.

The dotted vertical lines on the charts mark the sizes at which the operands of the call, inputs and outputs together, fill the core’s L1 data cache (64 KiB), its L2 (1 MiB) and the shared L3 (114 MiB).

SVE against NEON

Geometric mean of the rate of the SVE build over the rate of the NEON build, Eigen against Eigen, over the square shapes in each size band; above 1, SVE is faster. Over all 882 cells the mean is 0.94: 365 cells are more than 5 % slower under SVE and 37 more than 5 % faster.

Operation Scalar n ≤ 16 24–128 192–1024 1536–16384 > 16384
AXPY float 1.24 1.00 1.01 1.00 0.99
AXPY double 1.17 1.05 0.98 1.00 0.99
DOT float 0.98 0.97 0.96 0.99 1.00
DOT double 0.93 0.99 0.99 1.00 1.00
GEMV float 0.86 0.89 0.96 0.99 –
GEMV double 0.90 0.88 0.98 1.00 –
GEMM float 0.88 0.79 0.91 0.92 –
GEMM double 0.98 0.97 0.96 0.95 –
TRSM float 0.65 0.57 0.80 0.89 –
TRSM double 0.94 0.82 0.94 0.94 –
SYRK float 1.01 0.98 0.94 0.94 –
SYRK double 1.00 0.98 0.96 0.96 –
POTRF float 0.77 0.97 0.94 0.92 –
POTRF double 0.88 0.98 0.96 0.96 –
GETRF float 0.65 0.76 0.84 0.90 –
GETRF double 0.90 0.96 0.94 0.94 –
GEQRF float 0.93 0.81 0.84 0.86 –
GEQRF double 0.93 0.96 0.97 0.96 –
SYEV float 0.92 0.95 0.98 1.02 –
SYEV double 0.99 1.00 1.00 1.01 –
GESDD float 0.96 0.91 0.92 0.93 –
GESDD double 0.99 0.98 0.97 0.97 –
GEEV float 1.02 1.02 1.01 – –
GEEV double 0.99 0.98 0.97 – –

The level-1 kernels and the two eigensolvers are unchanged, and AXPY below n = 16 gains 20 % from a shorter inlined loop. Everything that runs on the matrix-product kernel loses: GEMM by 4 to 5 % in double and 8 to 9 % in float above n = 192, and TRSM, SYRK, POTRF, GETRF and GEQRF with it. The float losses are the largest, and they concentrate at small sizes: TRSM in float runs at 0.46 to 0.58 of its NEON rate from n = 8 to 64 (24.9 against 11.5 GFLOP/s at n = 16), GETRF in float at 0.65 below n = 16 and 0.76 up to 128, GEQRF in float at 0.81 to 0.86 throughout. Since the vector width is the same, these are costs in Eigen’s SVE packet kernels and in the compiler’s handling of the fixed-length SVE types, not in the hardware. The tall-skinny GEMV sweep is the one place SVE is clearly ahead: 10000-by-100 runs at 1.5x (float) and 1.7x (double) the NEON rate.

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.95 ns per call for Eigen in either build, against 6.3 ns for Arm Performance Libraries, 11.1 ns for OpenBLAS and 28.9 ns for NVPL. Eigen still computes the whole operation on every call; nothing is hoisted out of the timed loop.

The SVE build matches the NEON build from n = 24 on and is 17 to 25 % faster below it; the comparison with the libraries is that of the NEON page.

AXPY double AXPY float

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.

Unchanged from the NEON build within 1 to 3 % at every length; Eigen remains the fastest arm up to L2.

DOT double DOT float

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.

Square shapes are within 2 % of the NEON build above n = 192 and 10 to 14 % slower below; the 10000-by-100 cells of the tall-skinny sweep run 1.5x (float) and 1.7x (double) faster than under NEON.

GEMV double, square GEMV double, sweeps GEMV float, square GEMV float, 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.

The SVE matrix-product kernel reaches 34 to 35 GFLOP/s in double and 78 in float, 4 to 5 % and 8 to 9 % below the NEON kernel, so the gap to the vendor libraries widens to 23 % (double) and 18 % (float); against OpenBLAS the double rate is even and the float rate 10 % ahead.

GEMM double, square GEMM double, tall-skinny sweeps GEMM double, other shapes GEMM float, square GEMM float, tall-skinny sweeps GEMM float, other shapes

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.

The largest loss on the page: in float the SVE build runs at 0.46 to 0.58 of its NEON rate from n = 8 to 64 and at 0.86 to 0.90 at n = 1024 and 4096; in double the loss is 6 to 18 %. Eigen is still even with OpenBLAS above n = 192 and 10 to 20 % behind the vendor libraries.

TRSM double, square TRSM double, sweeps TRSM double, other shapes TRSM float, square TRSM float, sweeps TRSM float, other shapes

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.

Within 2 % of the NEON build below n = 128 and 4 to 6 % slower above; 10 to 17 % behind NVPL and even with Arm Performance Libraries in double.

SYRK double, square SYRK double, sweeps SYRK float, square SYRK float, sweeps

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.

3 to 4 % slower than under NEON in double and 7 to 9 % in float above n = 192; still ahead of all three libraries from n = 24 to 1024 in double.

POTRF double POTRF float

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.

In float the SVE build runs at 0.65 of its NEON rate below n = 16 and 0.76 up to 128, at 0.87 to 0.91 above; in double the loss is 4 to 10 %. NVPL’s getrf leads by 18 % in double at the largest sizes.

GETRF double GETRF float

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.

The float build loses 14 to 19 % at every size above 24 and the double build 3 to 7 %; NVPL leads by 16 to 24 %, Arm Performance Libraries by 13 % at the largest sizes, and Eigen stays ahead of OpenBLAS in double.

GEQRF double, square GEQRF double, tall-skinny sweeps GEQRF float, square GEQRF float, tall-skinny sweeps

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 5.5 s in double.

Unchanged: within 2 % of the NEON build at every size, so Eigen’s tridiagonal QR remains 1.3 to 1.7x faster than the libraries in double and 1.9 to 2.8x in float.

SYEV double SYEV float

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.

2 to 3 % slower than under NEON in double and 7 to 9 % in float; the comparison with the libraries is that of the NEON page within those margins.

GESDD double, square GESDD double, tall-skinny sweeps GESDD float, square GESDD float, tall-skinny sweeps

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.8 s in double.

Unchanged from the NEON build within 3 %; EigenSolver stays at 7 to 8 GFLOP/s in double from n = 128 on while the libraries climb to 24 to 35 at n = 1024.

GEEV double GEEV float

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 Arm Performance Libraries 3.00 1.71 0.95 0.92 1.00
AXPY float NVPL 11.73 5.52 1.69 1.08 0.99
AXPY float OpenBLAS 1.86 1.36 1.13 1.22 1.06
AXPY double Arm Performance Libraries 2.92 1.36 0.85 0.95 0.99
AXPY double NVPL 10.89 3.58 1.33 1.04 0.99
AXPY double OpenBLAS 2.13 1.14 0.80 1.01 1.08
DOT float Arm Performance Libraries 5.63 1.91 1.32 1.20 1.00
DOT float NVPL 27.95 7.60 3.34 2.43 1.43
DOT float OpenBLAS 10.67 2.51 1.34 1.21 1.00
DOT double Arm Performance Libraries 4.50 1.64 1.29 1.17 1.05
DOT double NVPL 20.60 5.25 3.16 2.18 1.35
DOT double OpenBLAS 7.72 1.75 1.37 1.13 1.00
GEMV float Arm Performance Libraries 3.98 1.52 1.02 1.00 –
GEMV float NVPL 6.74 1.78 1.04 0.93 –
GEMV float OpenBLAS 2.85 2.40 1.30 1.17 –
GEMV double Arm Performance Libraries 3.95 1.34 1.01 1.00 –
GEMV double NVPL 6.59 1.47 1.00 0.93 –
GEMV double OpenBLAS 2.73 1.85 1.29 1.21 –
GEMM float Arm Performance Libraries 2.41 0.94 0.84 0.84 –
GEMM float NVPL 2.14 0.74 0.82 0.82 –
GEMM float OpenBLAS 1.65 0.91 1.07 1.10 –
GEMM double Arm Performance Libraries 2.61 1.03 0.82 0.77 –
GEMM double NVPL 2.76 0.89 0.81 0.77 –
GEMM double OpenBLAS 1.99 1.05 1.02 1.00 –
TRSM float Arm Performance Libraries 1.75 1.36 0.82 0.89 –
TRSM float NVPL 25.55 1.91 0.95 0.81 –
TRSM float OpenBLAS 1.61 0.95 1.06 1.07 –
TRSM double Arm Performance Libraries 1.92 1.34 0.94 0.86 –
TRSM double NVPL 29.32 1.68 0.88 0.78 –
TRSM double OpenBLAS 2.17 1.01 1.04 1.00 –
SYRK float Arm Performance Libraries 3.24 1.18 0.90 0.90 –
SYRK float NVPL 13.19 1.48 0.83 0.83 –
SYRK float OpenBLAS 1.14 1.10 1.06 1.09 –
SYRK double Arm Performance Libraries 2.81 0.96 0.88 0.96 –
SYRK double NVPL 10.23 1.12 0.82 0.84 –
SYRK double OpenBLAS 0.92 0.86 1.02 1.07 –
POTRF float Arm Performance Libraries 0.97 1.39 1.14 1.03 –
POTRF float NVPL 4.88 1.49 1.30 0.92 –
POTRF float OpenBLAS 1.63 1.62 1.43 1.19 –
POTRF double Arm Performance Libraries 1.03 1.15 1.05 1.01 –
POTRF double NVPL 4.59 1.21 1.09 0.89 –
POTRF double OpenBLAS 1.67 1.16 1.15 1.12 –
GETRF float Arm Performance Libraries 0.84 0.99 1.38 1.06 –
GETRF float NVPL 4.08 2.29 1.10 0.89 –
GETRF float OpenBLAS 1.77 1.57 1.02 1.05 –
GETRF double Arm Performance Libraries 0.92 1.31 1.45 0.93 –
GETRF double NVPL 5.00 2.03 1.00 0.82 –
GETRF double OpenBLAS 2.13 1.43 1.00 0.98 –
GEQRF float Arm Performance Libraries 0.61 0.71 1.18 0.91 –
GEQRF float NVPL 0.79 0.65 0.81 0.80 –
GEQRF float OpenBLAS 1.11 0.93 0.98 1.06 –
GEQRF double Arm Performance Libraries 0.54 0.85 1.03 0.87 –
GEQRF double NVPL 0.76 0.78 0.84 0.82 –
GEQRF double OpenBLAS 1.16 1.18 1.05 1.09 –
SYEV float Arm Performance Libraries 1.84 1.85 2.43 2.76 –
SYEV float NVPL 1.86 1.91 2.24 2.34 –
SYEV float OpenBLAS 1.69 1.95 2.34 2.47 –
SYEV double Arm Performance Libraries 1.70 1.43 1.59 1.65 –
SYEV double NVPL 1.73 1.47 1.39 1.30 –
SYEV double OpenBLAS 1.61 1.53 1.48 1.39 –
GESDD float Arm Performance Libraries 1.91 0.82 1.33 1.65 –
GESDD float NVPL 2.03 0.90 0.99 0.95 –
GESDD float OpenBLAS 1.64 0.84 1.22 1.15 –
GESDD double Arm Performance Libraries 1.56 0.66 1.14 1.63 –
GESDD double NVPL 1.68 0.69 0.82 0.83 –
GESDD double OpenBLAS 1.37 0.68 0.98 1.00 –
GEEV float Arm Performance Libraries 2.89 1.15 0.45 – –
GEEV float NVPL 4.05 1.75 0.45 – –
GEEV float OpenBLAS 2.79 1.44 0.44 – –
GEEV double Arm Performance Libraries 2.48 0.93 0.41 – –
GEEV double NVPL 3.50 1.29 0.38 – –
GEEV double OpenBLAS 2.71 1.16 0.40 – –

Caveats

  • The libraries were not measured again: their rows are the NEON page’s session, three to thirteen hours earlier on the same core, with the drift bound above. Each selects its kernels at run time for the CPU it finds, so their rates do not depend on Eigen’s build.
  • SVE and NEON are both 128 bits wide on this CPU, so this page says nothing about wider SVE implementations; it compares Eigen’s two AArch64 backends at equal width.
  • The SVE build targets Armv9-A (-march=armv9-a+sve2), the NEON build the Armv8-A baseline; the compiler’s own code generation for the scalar parts differs between the two as well.
  • OpenBLAS 0.3.26 is Ubuntu 24.04’s packaged build and runs its Neoverse V1 kernels on this CPU, as the library reports at run time; NVPL’s fixed cost per call, 29 ns at n = 2, sets its ratios at the smallest sizes.
  • The machine is a shared 72-core server. Runs were gated on measured CPU use rather than on the harness’s 1-minute load average, which still carried the previous run’s own core when the next run was due; the result files therefore record allow_noisy: true with the load average before and after each run. Two runs saw a load average of 1.6 at their end, as described above.
  • The kernel runs with 64 KiB pages, so the TLB reaches eight times further than on a 4 KiB-page system; rates at the largest sizes may not transfer to such a system.

Full tables

GFLOP/s per shape and library, with the Eigen ÷ library ratio: Eigen’s median over its two SVE passes against the library’s rate from the NEON page’s session.

AXPY float
n Eigen GFLOP/s Arm Performance Libraries GFLOP/s Eigen ÷ Arm Performance Libraries NVPL GFLOP/s Eigen ÷ NVPL OpenBLAS GFLOP/s Eigen ÷ OpenBLAS
2 1.6 0.5 3.11 0.1 11.67 0.9 1.70
3 2.4 0.7 3.41 0.2 11.73 1.4 1.75
4 3.2 1.1 2.74 0.3 11.56 1.6 2.00
6 4.7 1.5 3.12 0.4 11.95 2.1 2.25
8 6.3 2.3 2.77 0.5 11.72 3.9 1.62
12 9.3 3.2 2.96 0.8 11.76 4.4 2.10
16 12.3 4.2 2.91 1.1 11.73 7.2 1.71
24 15.2 5.9 2.56 1.5 9.85 9.4 1.62
32 17.7 7.2 2.46 2.0 8.87 11.0 1.61
48 17.7 10.1 1.76 2.8 6.21 13.2 1.34
64 18.3 11.9 1.53 3.6 5.05 14.8 1.24
96 22.0 14.8 1.48 5.0 4.38 16.4 1.34
100 18.2 14.6 1.25 5.1 3.55 15.5 1.18
128 22.6 16.8 1.35 6.2 3.66 17.5 1.29
192 23.2 19.5 1.19 8.2 2.85 18.8 1.24
256 20.0 21.3 0.94 9.4 2.12 19.3 1.04
384 24.3 23.5 1.04 12.3 1.97 20.0 1.22
512 22.1 24.6 0.90 14.1 1.56 20.2 1.09
768 22.9 24.7 0.93 15.9 1.44 20.7 1.11
1000 23.6 25.6 0.92 15.6 1.51 20.9 1.13
1001 23.2 26.5 0.88 17.9 1.29 20.9 1.11
1024 23.6 26.7 0.88 18.1 1.30 21.0 1.13
1536 23.5 26.7 0.88 19.3 1.22 20.9 1.13
2048 23.9 27.9 0.86 20.5 1.17 21.2 1.13
3072 24.3 27.9 0.87 21.9 1.11 21.2 1.15
4096 24.5 28.1 0.87 22.5 1.09 21.2 1.15
6144 24.8 27.5 0.90 23.4 1.06 19.5 1.27
8192 24.7 27.2 0.91 23.8 1.04 19.2 1.29
10000 23.9 24.4 0.98 23.2 1.03 17.6 1.36
12288 23.7 22.9 1.03 23.1 1.03 18.7 1.27
16384 20.2 20.0 1.01 19.9 1.01 16.4 1.23
32768 20.3 20.1 1.01 20.3 1.00 16.5 1.23
65536 19.4 20.0 0.97 20.3 0.96 16.4 1.18
100000 17.2 16.6 1.04 17.9 0.96 15.7 1.09
131072 18.4 17.6 1.04 18.1 1.02 16.2 1.13
262144 19.1 19.2 1.00 19.2 0.99 16.4 1.17
524288 16.3 16.4 0.99 16.2 1.01 16.3 1.00
1000000 14.7 14.4 1.02 14.2 1.03 13.7 1.08
1048576 15.7 15.7 1.00 15.8 1.00 16.1 0.98
2097152 15.3 15.5 0.99 15.2 1.01 15.5 0.99
4194304 14.2 14.3 0.99 14.6 0.97 14.6 0.97
8388608 12.3 12.2 1.01 12.5 0.99 12.3 1.00
16777216 8.8 8.9 0.99 9.1 0.97 8.9 0.99
AXPY double
n Eigen GFLOP/s Arm Performance Libraries GFLOP/s Eigen ÷ Arm Performance Libraries NVPL GFLOP/s Eigen ÷ NVPL OpenBLAS GFLOP/s Eigen ÷ OpenBLAS
2 1.6 0.5 2.99 0.1 11.55 0.9 1.71
3 2.4 0.7 3.38 0.2 11.66 1.3 1.75
4 3.1 1.1 2.98 0.3 11.56 1.6 1.99
6 4.7 1.5 3.20 0.4 11.59 2.1 2.23
8 6.2 2.1 2.93 0.5 11.66 2.5 2.44
12 7.6 2.8 2.71 0.8 9.80 3.2 2.41
16 9.0 3.7 2.39 1.0 8.84 3.6 2.50
24 9.1 4.6 1.97 1.5 6.24 3.4 2.63
32 9.8 5.6 1.75 1.8 5.35 9.1 1.08
48 9.2 7.2 1.28 2.5 3.63 8.1 1.15
64 10.5 8.4 1.25 3.2 3.28 11.4 0.92
96 11.6 9.9 1.17 4.4 2.66 12.4 0.94
100 11.8 10.0 1.18 3.9 3.01 12.1 0.98
128 12.0 10.8 1.11 5.0 2.38 12.8 0.93
192 11.4 12.0 0.95 6.5 1.76 13.5 0.84
256 11.0 12.8 0.86 7.4 1.50 13.9 0.79
384 11.5 12.9 0.89 8.0 1.43 14.3 0.80
512 11.8 13.7 0.86 8.8 1.34 14.5 0.82
768 11.8 14.2 0.83 9.8 1.20 14.7 0.80
1000 11.9 14.4 0.83 8.8 1.35 14.6 0.82
1001 10.9 14.3 0.76 10.4 1.05 14.6 0.74
1024 12.0 14.2 0.84 10.4 1.15 14.8 0.81
1536 12.2 14.5 0.84 11.1 1.10 14.9 0.82
2048 12.2 14.4 0.85 11.4 1.07 14.8 0.82
3072 12.4 13.8 0.90 11.8 1.05 12.4 1.00
4096 12.4 13.7 0.90 11.9 1.04 11.9 1.04
6144 11.9 11.5 1.03 11.5 1.03 11.0 1.08
8192 10.1 10.0 1.01 9.9 1.01 9.3 1.09
10000 10.8 10.7 1.01 10.7 1.01 10.1 1.07
12288 10.2 10.1 1.01 10.1 1.00 9.1 1.11
16384 10.1 10.1 1.01 10.1 1.00 9.1 1.11
32768 9.9 9.7 1.01 10.1 0.98 9.1 1.08
65536 9.3 9.4 0.99 9.5 0.97 9.0 1.03
100000 9.8 9.7 1.01 9.9 0.99 8.8 1.11
131072 9.6 9.6 0.99 9.7 0.98 8.9 1.07
262144 8.2 8.2 1.00 8.2 1.00 7.2 1.13
524288 7.9 7.8 1.00 7.9 1.00 6.8 1.16
1000000 6.4 6.4 0.99 6.3 1.02 6.0 1.06
1048576 7.5 7.7 0.98 7.7 0.98 6.5 1.16
2097152 6.9 7.1 0.97 7.1 0.97 6.1 1.12
4194304 6.2 6.3 0.98 6.3 0.99 6.4 0.97
8388608 4.4 4.6 0.95 4.6 0.96 4.4 1.01
16777216 3.7 3.6 1.01 3.6 1.01 3.4 1.07
DOT float
n Eigen GFLOP/s Arm Performance Libraries GFLOP/s Eigen ÷ Arm Performance Libraries NVPL GFLOP/s Eigen ÷ NVPL OpenBLAS GFLOP/s Eigen ÷ OpenBLAS
2 5.0 0.7 7.45 0.1 35.61 0.4 13.78
3 6.2 1.0 6.21 0.2 30.03 0.5 11.49
4 10.7 1.5 7.22 0.3 39.22 0.7 14.91
6 10.2 2.0 5.10 0.4 24.99 1.1 9.43
8 16.8 2.8 5.99 0.6 30.44 1.4 11.75
12 19.0 3.9 4.83 0.8 23.19 2.1 8.86
16 19.4 5.3 3.65 1.1 17.99 2.9 6.78
24 21.6 7.5 2.87 1.6 13.64 4.3 5.02
32 23.4 9.5 2.46 2.1 11.22 5.7 4.08
48 25.4 12.6 2.01 3.0 8.53 8.6 2.96
64 27.2 15.1 1.80 3.8 7.22 11.4 2.39
96 29.7 18.8 1.58 5.2 5.71 17.0 1.75
100 29.5 19.1 1.54 5.3 5.51 17.9 1.65
128 31.4 21.0 1.50 6.4 4.92 20.7 1.52
192 32.7 23.5 1.39 7.8 4.21 22.4 1.46
256 31.9 24.3 1.31 8.6 3.72 23.6 1.35
384 33.5 25.6 1.31 9.6 3.48 25.0 1.34
512 33.9 26.1 1.30 10.2 3.31 25.6 1.32
768 34.6 26.1 1.33 10.9 3.16 26.2 1.32
1000 33.6 26.0 1.29 11.3 2.98 26.1 1.29
1001 33.2 25.9 1.28 11.2 2.96 25.9 1.28
1024 34.8 25.9 1.34 11.3 3.07 25.5 1.36
1536 35.2 25.7 1.37 11.7 3.00 25.4 1.39
2048 34.5 25.3 1.36 11.9 2.89 25.6 1.35
3072 36.1 25.4 1.42 12.2 2.97 25.3 1.43
4096 35.2 25.5 1.38 12.3 2.87 25.3 1.39
6144 27.9 25.2 1.11 12.4 2.25 24.6 1.14
8192 29.3 25.0 1.17 12.4 2.35 24.3 1.20
10000 26.1 24.9 1.05 12.5 2.09 24.9 1.05
12288 25.1 24.9 1.01 12.5 2.01 24.7 1.02
16384 22.6 22.6 1.00 12.5 1.80 22.5 1.00
32768 23.8 23.5 1.02 12.6 1.89 23.4 1.02
65536 22.6 23.4 0.97 12.6 1.79 23.2 0.97
100000 21.4 21.0 1.02 12.5 1.71 20.9 1.02
131072 21.9 21.5 1.02 12.6 1.74 21.2 1.03
262144 18.5 18.6 1.00 12.6 1.47 18.8 0.98
524288 16.7 17.0 0.99 12.6 1.33 16.8 1.00
1000000 15.9 16.2 0.98 12.6 1.27 16.4 0.97
1048576 16.1 16.2 0.99 12.5 1.28 16.1 1.00
2097152 15.8 15.8 1.00 12.5 1.26 15.8 1.00
4194304 15.2 15.3 0.99 12.4 1.23 14.8 1.03
8388608 12.3 12.3 1.00 8.3 1.47 12.4 0.99
16777216 9.8 9.8 1.00 9.5 1.03 9.6 1.02
DOT double
n Eigen GFLOP/s Arm Performance Libraries GFLOP/s Eigen ÷ Arm Performance Libraries NVPL GFLOP/s Eigen ÷ NVPL OpenBLAS GFLOP/s Eigen ÷ OpenBLAS
2 4.2 0.6 6.64 0.1 30.25 0.4 11.66
3 6.3 0.9 6.98 0.2 30.64 0.5 11.69
4 6.3 1.3 4.74 0.3 23.23 0.7 8.78
6 9.5 1.7 5.48 0.4 23.33 1.1 8.78
8 10.0 2.7 3.76 0.5 18.67 1.4 7.00
12 11.2 3.5 3.23 0.8 14.04 2.2 5.19
16 12.3 4.8 2.55 1.0 11.93 2.9 4.29
24 13.1 6.6 1.99 1.5 8.84 4.3 3.05
32 13.5 7.2 1.88 1.9 7.08 5.7 2.35
48 15.0 8.8 1.71 2.6 5.70 8.5 1.76
64 15.9 9.6 1.66 3.2 4.92 10.3 1.54
96 16.5 11.2 1.48 3.9 4.19 11.5 1.44
100 15.8 10.2 1.55 3.9 4.02 11.6 1.37
128 16.1 12.2 1.33 4.3 3.72 12.1 1.33
192 17.0 12.2 1.40 4.9 3.51 12.7 1.34
256 17.4 12.8 1.36 5.1 3.37 13.0 1.33
384 17.8 13.4 1.33 5.5 3.24 13.2 1.35
512 17.4 13.9 1.25 5.7 3.07 13.1 1.32
768 17.9 14.3 1.25 5.9 3.04 12.7 1.40
1000 18.5 14.7 1.26 6.0 3.09 12.7 1.46
1001 18.0 14.6 1.23 6.0 3.02 12.7 1.42
1024 17.8 14.5 1.23 6.0 2.97 12.9 1.38
1536 17.6 14.7 1.20 6.1 2.89 12.6 1.39
2048 17.6 13.7 1.29 6.1 2.86 12.6 1.39
3072 14.0 12.9 1.09 6.2 2.25 12.4 1.13
4096 14.6 11.8 1.24 6.2 2.35 12.1 1.21
6144 12.6 11.8 1.07 6.3 2.01 12.4 1.01
8192 11.3 9.6 1.17 6.3 1.80 11.3 1.00
10000 12.2 10.9 1.12 6.3 1.94 11.9 1.03
12288 12.1 10.0 1.20 6.3 1.92 11.6 1.04
16384 11.9 10.0 1.19 6.3 1.89 11.7 1.02
32768 11.6 10.0 1.16 6.3 1.84 11.6 1.00
65536 10.9 9.9 1.10 6.3 1.73 10.5 1.03
100000 11.0 9.7 1.13 6.3 1.76 10.9 1.02
131072 9.2 9.7 0.95 6.3 1.47 9.2 1.01
262144 8.4 8.1 1.03 6.3 1.34 8.4 0.99
524288 8.0 7.7 1.04 6.3 1.28 8.0 1.00
1000000 7.8 7.5 1.05 6.2 1.27 7.9 0.99
1048576 7.8 7.5 1.05 6.2 1.27 7.9 0.99
2097152 7.5 7.1 1.06 6.2 1.20 7.5 1.00
4194304 6.1 6.2 0.99 4.5 1.37 6.2 0.99
8388608 4.8 4.8 1.01 4.7 1.02 4.8 1.01
16777216 3.7 3.5 1.06 3.7 0.99 3.7 1.00
GEMV float
m×n Eigen GFLOP/s Arm Performance Libraries GFLOP/s Eigen ÷ Arm Performance Libraries NVPL GFLOP/s Eigen ÷ NVPL OpenBLAS GFLOP/s Eigen ÷ OpenBLAS
2x2 1.0 0.2 4.23 0.1 7.69 0.5 1.94
3x3 1.9 0.5 3.46 0.3 6.60 0.8 2.25
4x4 5.2 0.9 5.52 0.5 10.59 1.9 2.66
6x6 5.9 2.0 2.97 1.0 6.12 2.4 2.51
8x8 14.4 3.4 4.17 2.2 6.57 4.5 3.23
12x12 24.5 5.7 4.31 3.7 6.60 6.4 3.84
16x16 32.2 8.7 3.69 7.2 4.44 7.6 4.25
24x24 32.6 15.7 2.08 12.9 2.53 10.0 3.26
32x32 43.6 21.2 2.06 17.5 2.48 12.6 3.45
48x48 46.2 29.6 1.56 24.0 1.92 16.8 2.74
64x64 48.0 32.5 1.47 28.3 1.69 21.2 2.27
96x96 48.8 35.9 1.36 31.9 1.53 24.2 2.01
100x100 43.8 38.6 1.13 32.8 1.34 24.2 1.81
128x128 43.7 36.3 1.20 32.9 1.33 24.4 1.79
192x192 35.1 31.5 1.11 31.6 1.11 24.0 1.47
200x200 34.7 38.3 0.91 35.3 0.98 23.4 1.49
256x256 33.7 30.8 1.10 31.1 1.08 23.8 1.41
257x257 26.6 25.1 1.06 24.2 1.10 20.9 1.28
384x384 30.8 29.6 1.04 26.9 1.14 23.5 1.31
500x500 28.9 31.8 0.91 30.4 0.95 22.3 1.30
512x512 29.5 26.5 1.11 26.5 1.11 22.2 1.33
768x768 28.8 25.8 1.12 26.8 1.08 22.7 1.27
1000x1000 28.3 29.8 0.95 28.2 1.01 22.7 1.25
1001x1001 26.1 27.6 0.95 26.3 0.99 20.5 1.27
1024x1024 22.4 22.6 0.99 25.8 0.87 22.5 0.99
1536x1536 26.7 25.7 1.04 26.8 1.00 22.7 1.18
2048x2048 18.9 21.0 0.90 24.3 0.78 22.8 0.83
3072x3072 22.6 21.8 1.04 25.2 0.90 20.6 1.10
4096x4096 16.2 17.1 0.95 16.5 0.98 13.1 1.23
4097x4097 14.7 11.1 1.32 13.7 1.07 12.4 1.18
6144x6144 15.4 17.4 0.88 17.9 0.86 10.7 1.44
8192x8192 12.9 13.6 0.95 13.9 0.93 10.0 1.28
12288x12288 11.3 11.8 0.96 12.0 0.94 9.5 1.19
16384x16384 11.2 11.1 1.01 11.4 0.99 9.2 1.21
8x10000 27.3 17.5 1.57 15.7 1.74 4.0 6.89
100x10000 22.3 23.5 0.95 22.2 1.00 22.0 1.01
1000x10000 24.5 26.0 0.94 24.2 1.01 19.0 1.29
4000x10000 16.6 17.4 0.96 17.2 0.97 10.6 1.57
10000x8 37.6 36.2 1.04 37.8 1.00 22.9 1.65
10000x100 23.0 32.0 0.72 32.4 0.71 22.4 1.02
10000x1000 27.0 25.9 1.04 26.3 1.03 20.3 1.33
10000x4000 17.8 18.4 0.97 18.3 0.98 10.6 1.68
GEMV double
m×n Eigen GFLOP/s Arm Performance Libraries GFLOP/s Eigen ÷ Arm Performance Libraries NVPL GFLOP/s Eigen ÷ NVPL OpenBLAS GFLOP/s Eigen ÷ OpenBLAS
2x2 1.5 0.2 6.00 0.1 10.88 0.5 2.79
3x3 2.3 0.5 4.13 0.3 8.03 0.8 2.72
4x4 4.6 0.9 4.82 0.5 9.67 1.9 2.46
6x6 8.0 2.0 3.97 1.0 8.29 2.3 3.43
8x8 11.8 2.7 4.45 2.1 5.67 4.3 2.79
12x12 14.5 5.3 2.75 3.4 4.28 6.0 2.41
16x16 19.1 7.4 2.58 6.0 3.17 7.3 2.60
24x24 21.5 11.6 1.84 9.5 2.27 9.3 2.30
32x32 22.8 13.8 1.65 12.0 1.90 11.3 2.02
48x48 23.9 16.6 1.44 15.2 1.57 11.9 2.00
64x64 24.1 18.2 1.32 16.4 1.47 12.2 1.98
96x96 20.8 17.5 1.19 16.7 1.25 12.2 1.71
100x100 18.9 19.5 0.97 17.5 1.08 12.1 1.56
128x128 18.1 15.9 1.13 16.1 1.12 12.2 1.49
192x192 16.6 15.4 1.08 15.5 1.07 12.0 1.39
200x200 16.6 18.0 0.92 17.5 0.95 11.6 1.43
256x256 16.3 14.4 1.13 14.3 1.14 11.8 1.38
257x257 13.9 14.3 0.98 13.1 1.06 10.8 1.29
384x384 15.9 13.8 1.16 14.0 1.14 11.0 1.45
500x500 15.4 16.0 0.96 15.2 1.02 10.7 1.44
512x512 11.9 11.7 1.02 13.7 0.87 10.8 1.10
768x768 13.8 13.1 1.06 13.8 1.00 10.9 1.26
1000x1000 14.1 14.7 0.96 14.0 1.00 10.8 1.31
1001x1001 13.9 14.5 0.96 13.8 1.01 10.5 1.33
1024x1024 9.6 10.5 0.91 12.1 0.79 10.8 0.89
1536x1536 11.3 11.5 0.98 12.8 0.88 10.6 1.07
2048x2048 8.8 8.6 1.03 11.0 0.80 10.7 0.83
3072x3072 9.0 9.0 1.00 9.4 0.96 6.8 1.33
4096x4096 7.9 8.1 0.97 8.8 0.90 5.4 1.44
4097x4097 7.5 7.1 1.06 8.0 0.94 5.4 1.40
6144x6144 6.3 6.5 0.96 6.7 0.93 4.9 1.27
8192x8192 6.0 5.9 1.01 6.1 0.98 4.7 1.27
12288x12288 5.6 5.6 1.01 5.7 0.99 4.6 1.22
16384x16384 5.5 5.4 1.01 5.3 1.03 4.6 1.21
8x10000 15.4 12.3 1.25 10.3 1.50 4.9 3.13
100x10000 11.2 12.2 0.92 12.4 0.91 10.1 1.11
1000x10000 11.8 11.1 1.05 9.8 1.20 6.7 1.76
4000x10000 6.6 6.8 0.96 6.8 0.97 4.9 1.33
10000x8 18.0 16.2 1.11 15.9 1.13 9.4 1.92
10000x100 12.2 15.2 0.80 15.1 0.81 9.5 1.29
10000x1000 10.7 12.7 0.84 12.7 0.84 6.4 1.68
10000x4000 6.6 6.8 0.97 6.9 0.96 4.9 1.35
GEMM float
m×n×k Eigen GFLOP/s Arm Performance Libraries GFLOP/s Eigen ÷ Arm Performance Libraries NVPL GFLOP/s Eigen ÷ NVPL OpenBLAS GFLOP/s Eigen ÷ OpenBLAS
2x2x2 1.3 0.5 2.42 0.2 5.93 0.3 3.90
3x3x3 1.9 1.1 1.85 0.7 2.81 1.0 2.02
4x4x4 10.2 1.9 5.28 1.5 6.76 2.3 4.39
6x6x6 7.2 3.4 2.11 4.2 1.71 5.4 1.32
8x8x8 11.7 5.7 2.07 11.1 1.06 12.1 0.97
12x12x12 20.2 7.9 2.56 16.9 1.19 21.3 0.95
16x16x16 27.6 15.4 1.79 32.8 0.84 35.3 0.78
24x24x24 40.5 33.7 1.20 56.4 0.72 51.0 0.79
32x32x32 46.8 45.7 1.02 67.4 0.69 57.0 0.82
48x48x48 56.7 62.4 0.91 79.8 0.71 64.1 0.88
64x64x64 59.9 67.1 0.89 82.2 0.73 65.8 0.91
96x96x96 67.1 78.4 0.86 88.7 0.76 68.3 0.98
100x100x100 66.3 76.6 0.87 84.1 0.79 68.6 0.97
128x128x128 70.0 82.6 0.85 90.9 0.77 68.8 1.02
160x160x160 72.3 85.7 0.84 91.7 0.79 70.7 1.02
192x192x192 74.1 88.2 0.84 93.2 0.80 71.4 1.04
200x200x200 75.0 89.5 0.84 92.8 0.81 71.0 1.06
224x224x224 75.3 88.7 0.85 93.4 0.81 71.7 1.05
256x256x256 74.8 88.4 0.85 92.1 0.81 71.2 1.05
257x257x257 72.8 86.3 0.84 89.1 0.82 70.5 1.03
288x288x288 75.1 89.3 0.84 93.7 0.80 72.3 1.04
320x320x320 75.6 89.4 0.85 93.6 0.81 71.5 1.06
384x384x384 76.2 90.7 0.84 93.0 0.82 71.4 1.07
448x448x448 77.4 91.0 0.85 93.6 0.83 71.7 1.08
500x500x500 78.3 91.7 0.85 94.8 0.83 72.1 1.09
512x512x512 77.5 92.6 0.84 94.4 0.82 71.4 1.09
768x768x768 78.6 94.7 0.83 95.5 0.82 71.9 1.09
1000x1000x1000 79.5 94.6 0.84 96.3 0.82 72.0 1.10
1001x1001x1001 79.0 93.9 0.84 95.7 0.83 72.3 1.09
1024x1024x1024 77.6 94.2 0.82 95.1 0.82 70.7 1.10
1536x1536x1536 77.3 94.8 0.81 96.5 0.80 72.0 1.07
2048x2048x2048 79.3 94.8 0.84 96.3 0.82 72.0 1.10
3072x3072x3072 79.1 94.2 0.84 96.4 0.82 72.0 1.10
4096x4096x4096 78.3 92.5 0.85 95.6 0.82 70.9 1.10
4097x4097x4097 78.2 91.3 0.86 95.1 0.82 70.4 1.11
64x64x1024 60.6 76.3 0.79 71.8 0.84 61.2 0.99
64x1024x64 61.1 71.9 0.85 86.1 0.71 67.1 0.91
256x256x1024 74.0 89.4 0.83 89.8 0.82 69.7 1.06
1024x64x64 70.2 23.6 2.97 79.1 0.89 60.8 1.15
1024x256x256 75.7 89.4 0.85 90.4 0.84 69.2 1.09
4096x96x96 70.7 81.0 0.87 81.0 0.87 61.6 1.15
4096x128x128 72.5 83.8 0.87 84.3 0.86 64.3 1.13
4096x144x144 72.2 85.1 0.85 84.8 0.85 64.9 1.11
4096x160x160 73.0 85.7 0.85 85.2 0.86 65.9 1.11
4096x176x176 73.8 86.8 0.85 87.2 0.85 66.5 1.11
8192x128x128 72.0 83.9 0.86 84.8 0.85 64.1 1.12
10000x8x8 40.0 32.5 1.23 38.9 1.03 46.3 0.86
10000x100x100 73.0 81.2 0.90 87.5 0.84 68.6 1.06
10000x1000x1000 75.4 94.1 0.80 96.7 0.78 73.2 1.03
10000x4000x4000 78.2 91.7 0.85 96.5 0.81 71.6 1.09
GEMM double
m×n×k Eigen GFLOP/s Arm Performance Libraries GFLOP/s Eigen ÷ Arm Performance Libraries NVPL GFLOP/s Eigen ÷ NVPL OpenBLAS GFLOP/s Eigen ÷ OpenBLAS
2x2x2 2.3 0.4 5.23 0.2 10.67 0.3 6.95
3x3x3 3.3 1.6 2.07 0.6 5.29 0.9 3.56
4x4x4 6.2 2.0 3.19 1.3 4.70 2.2 2.89
6x6x6 8.4 3.0 2.80 3.8 2.20 5.0 1.68
8x8x8 9.6 5.0 1.94 6.7 1.44 9.6 1.00
12x12x12 16.3 7.1 2.30 12.1 1.35 16.0 1.02
16x16x16 22.0 11.5 1.92 20.4 1.08 22.2 0.99
24x24x24 28.8 22.2 1.30 30.7 0.94 28.5 1.01
32x32x32 31.3 24.7 1.27 34.2 0.91 30.6 1.02
48x48x48 34.0 33.7 1.01 39.3 0.87 32.5 1.05
64x64x64 34.8 36.4 0.96 39.8 0.87 33.3 1.05
96x96x96 37.5 40.9 0.92 43.1 0.87 34.3 1.09
100x100x100 37.7 40.2 0.94 41.2 0.92 34.9 1.08
128x128x128 37.5 41.0 0.92 44.1 0.85 34.7 1.08
160x160x160 38.3 42.2 0.91 43.4 0.88 35.0 1.09
192x192x192 35.4 43.2 0.82 43.1 0.82 35.3 1.00
200x200x200 38.1 42.6 0.89 43.6 0.87 36.0 1.06
224x224x224 37.5 42.9 0.87 43.6 0.86 35.5 1.05
256x256x256 36.3 43.6 0.83 43.5 0.83 35.1 1.03
257x257x257 35.6 43.5 0.82 43.0 0.83 35.1 1.01
288x288x288 36.4 44.5 0.82 44.6 0.82 35.3 1.03
320x320x320 36.1 44.1 0.82 44.8 0.81 35.6 1.01
384x384x384 37.3 45.3 0.82 45.4 0.82 35.5 1.05
448x448x448 35.9 44.9 0.80 45.6 0.79 35.8 1.00
500x500x500 37.2 44.4 0.84 45.5 0.82 36.0 1.03
512x512x512 35.2 44.0 0.80 45.1 0.78 35.2 1.00
768x768x768 35.4 45.7 0.77 45.6 0.78 35.5 1.00
1000x1000x1000 36.8 45.7 0.81 46.4 0.79 36.2 1.02
1001x1001x1001 36.5 45.6 0.80 46.3 0.79 36.3 1.01
1024x1024x1024 34.0 45.2 0.75 45.0 0.76 34.9 0.98
1536x1536x1536 34.7 46.2 0.75 46.5 0.75 36.0 0.96
2048x2048x2048 35.6 45.5 0.78 46.4 0.77 35.8 1.00
3072x3072x3072 34.9 45.3 0.77 45.8 0.76 35.6 0.98
4096x4096x4096 35.3 45.3 0.78 45.5 0.77 34.5 1.02
4097x4097x4097 35.4 45.4 0.78 45.6 0.78 34.5 1.03
64x64x1024 34.2 37.2 0.92 38.4 0.89 31.4 1.09
64x1024x64 35.3 39.2 0.90 39.4 0.90 34.3 1.03
256x256x1024 36.5 43.3 0.84 44.0 0.83 34.6 1.05
1024x64x64 33.3 38.2 0.87 37.7 0.88 30.1 1.11
1024x256x256 36.0 44.2 0.81 44.3 0.81 34.2 1.05
4096x96x96 34.2 41.4 0.83 40.8 0.84 30.6 1.12
4096x128x128 35.0 41.4 0.84 42.2 0.83 31.8 1.10
4096x144x144 35.5 42.8 0.83 42.9 0.83 32.2 1.10
4096x160x160 35.5 42.7 0.83 42.8 0.83 32.3 1.10
4096x176x176 35.5 42.7 0.83 43.4 0.82 32.7 1.09
8192x128x128 34.4 41.2 0.83 41.9 0.82 31.6 1.09
10000x8x8 19.0 16.7 1.14 19.2 0.99 22.6 0.84
10000x100x100 35.4 41.9 0.85 40.7 0.87 33.7 1.05
10000x1000x1000 35.7 45.4 0.79 45.9 0.78 36.4 0.98
10000x4000x4000 34.8 45.4 0.77 45.7 0.76 35.4 0.98
TRSM float
m×n Eigen GFLOP/s Arm Performance Libraries GFLOP/s Eigen ÷ Arm Performance Libraries NVPL GFLOP/s Eigen ÷ NVPL OpenBLAS GFLOP/s Eigen ÷ OpenBLAS
2x2 0.3 0.3 1.14 0.0 52.24 0.2 1.44
3x3 0.7 0.7 1.05 0.0 37.66 0.5 1.28
4x4 2.2 1.9 1.18 0.0 54.16 1.1 2.07
6x6 3.5 1.7 2.13 0.1 27.83 1.9 1.85
8x8 6.8 2.0 3.46 0.3 24.31 3.7 1.83
12x12 9.4 4.6 2.05 0.8 12.08 5.7 1.65
16x16 11.5 5.0 2.32 1.4 8.15 8.7 1.32
24x24 14.7 7.8 1.88 3.7 3.96 13.3 1.10
32x32 17.3 8.8 1.96 5.4 3.18 16.4 1.05
48x48 21.3 11.9 1.79 10.6 2.02 22.0 0.97
64x64 24.2 12.5 1.93 13.4 1.81 25.9 0.93
96x96 27.9 30.0 0.93 21.5 1.30 31.7 0.88
100x100 28.0 29.6 0.95 20.3 1.38 32.2 0.87
128x128 29.9 38.3 0.78 26.7 1.12 35.4 0.85
192x192 37.7 50.1 0.75 36.0 1.05 40.2 0.94
200x200 38.4 52.4 0.73 37.2 1.03 41.1 0.93
256x256 45.1 52.7 0.85 42.4 1.06 43.3 1.04
257x257 42.9 53.9 0.80 41.2 1.04 42.4 1.01
384x384 48.7 60.3 0.81 52.5 0.93 46.4 1.05
500x500 55.2 66.9 0.83 58.5 0.94 48.2 1.15
512x512 53.9 62.4 0.86 59.4 0.91 48.1 1.12
768x768 60.2 71.6 0.84 68.8 0.87 54.3 1.11
1000x1000 64.4 77.1 0.84 73.9 0.87 58.3 1.11
1001x1001 63.3 74.2 0.85 72.9 0.87 57.7 1.10
1024x1024 63.1 68.0 0.93 73.6 0.86 57.8 1.09
1536x1536 67.6 78.3 0.86 80.5 0.84 61.9 1.09
2048x2048 68.9 74.0 0.93 83.8 0.82 63.9 1.08
3072x3072 70.5 76.9 0.92 86.9 0.81 66.1 1.07
4096x4096 71.0 78.5 0.90 88.1 0.81 66.5 1.07
4097x4097 67.9 82.5 0.82 87.8 0.77 66.3 1.02
64x4096 23.5 25.1 0.94 15.9 1.47 26.1 0.90
256x4096 43.4 47.6 0.91 43.6 0.99 43.5 1.00
1024x8 33.7 23.4 1.44 25.1 1.34 18.2 1.85
1024x64 57.5 50.2 1.15 58.6 0.98 45.6 1.26
1024x256 61.9 65.1 0.95 69.7 0.89 54.9 1.13
1024x4096 63.0 63.5 0.99 73.6 0.86 57.6 1.09
4096x8 30.8 23.8 1.30 28.9 1.07 20.9 1.48
4096x64 63.0 59.9 1.05 67.8 0.93 52.7 1.19
4096x256 70.3 70.4 1.00 82.6 0.85 63.3 1.11
4096x1024 71.9 79.2 0.91 87.8 0.82 66.5 1.08
TRSM double
m×n Eigen GFLOP/s Arm Performance Libraries GFLOP/s Eigen ÷ Arm Performance Libraries NVPL GFLOP/s Eigen ÷ NVPL OpenBLAS GFLOP/s Eigen ÷ OpenBLAS
2x2 0.4 0.3 1.45 0.0 62.00 0.2 1.90
3x3 1.0 0.6 1.59 0.0 50.33 0.4 2.35
4x4 3.0 2.0 1.44 0.0 69.15 0.9 3.12
6x6 4.6 1.4 3.19 0.1 34.61 1.8 2.63
8x8 6.9 3.6 1.95 0.3 25.24 3.3 2.11
12x12 9.5 4.3 2.19 0.7 13.02 5.0 1.91
16x16 10.9 5.1 2.13 1.4 7.59 7.2 1.52
24x24 13.4 6.2 2.15 3.3 4.00 10.2 1.31
32x32 14.7 6.8 2.16 4.9 3.01 12.3 1.20
48x48 16.3 8.1 2.01 8.8 1.84 15.5 1.05
64x64 17.1 11.5 1.49 11.4 1.51 17.4 0.99
96x96 18.0 20.7 0.87 16.5 1.09 19.9 0.90
100x100 18.0 21.7 0.83 15.8 1.14 20.2 0.90
128x128 17.4 23.2 0.75 19.4 0.89 21.0 0.83
192x192 24.4 26.7 0.92 24.7 0.99 22.9 1.06
200x200 25.2 28.3 0.89 25.0 1.01 23.4 1.07
256x256 24.4 25.5 0.96 27.0 0.91 23.2 1.05
257x257 24.1 25.5 0.95 26.3 0.92 22.7 1.06
384x384 27.3 28.5 0.96 32.1 0.85 26.0 1.05
500x500 29.6 31.2 0.95 34.2 0.87 28.5 1.04
512x512 28.6 29.5 0.97 34.7 0.82 28.0 1.02
768x768 31.3 32.2 0.97 37.8 0.83 30.4 1.03
1000x1000 32.6 35.1 0.93 39.6 0.82 31.8 1.03
1001x1001 32.3 33.7 0.96 39.2 0.82 31.7 1.02
1024x1024 31.8 33.6 0.95 38.7 0.82 31.2 1.02
1536x1536 33.3 37.5 0.89 41.7 0.80 33.1 1.01
2048x2048 32.8 37.8 0.87 42.0 0.78 33.1 0.99
3072x3072 33.6 39.4 0.85 42.7 0.79 33.9 0.99
4096x4096 33.9 39.8 0.85 43.3 0.78 33.9 1.00
4097x4097 33.5 40.2 0.83 43.2 0.77 33.8 0.99
64x4096 16.0 15.4 1.04 12.5 1.28 17.0 0.94
256x4096 24.0 25.5 0.94 27.5 0.87 23.8 1.01
1024x8 17.2 15.7 1.10 14.8 1.17 10.2 1.68
1024x64 29.5 31.4 0.94 33.2 0.89 25.1 1.17
1024x256 31.4 35.4 0.89 38.1 0.82 29.8 1.05
1024x4096 31.9 34.1 0.93 39.0 0.82 31.2 1.02
4096x8 13.8 14.1 0.98 12.7 1.09 9.4 1.47
4096x64 31.2 32.1 0.97 33.8 0.92 26.1 1.19
4096x256 33.9 38.9 0.87 41.4 0.82 32.2 1.05
4096x1024 33.8 39.1 0.86 43.3 0.78 33.9 1.00
SYRK float
n×k Eigen GFLOP/s Arm Performance Libraries GFLOP/s Eigen ÷ Arm Performance Libraries NVPL GFLOP/s Eigen ÷ NVPL OpenBLAS GFLOP/s Eigen ÷ OpenBLAS
2x2 0.2 0.0 4.08 0.0 19.30 0.2 0.91
3x3 0.4 0.1 3.71 0.0 17.56 0.4 0.95
4x4 1.0 0.2 4.39 0.1 20.19 0.9 1.16
6x6 2.1 0.7 3.01 0.2 13.06 2.0 1.04
8x8 5.3 1.5 3.56 0.4 14.68 3.9 1.34
12x12 8.6 3.7 2.33 1.1 7.91 7.1 1.21
16x16 15.7 6.9 2.26 2.3 6.70 10.9 1.44
24x24 25.0 15.5 1.62 6.8 3.70 21.7 1.15
32x32 32.9 23.7 1.39 13.0 2.53 27.2 1.21
48x48 43.4 35.6 1.22 28.4 1.53 39.2 1.11
64x64 50.7 44.8 1.13 40.9 1.24 46.1 1.10
96x96 58.1 58.7 0.99 59.8 0.97 54.2 1.07
100x100 57.7 53.6 1.08 56.8 1.02 56.1 1.03
128x128 61.7 63.0 0.98 69.0 0.89 58.9 1.05
192x192 68.5 73.4 0.93 79.0 0.87 64.2 1.07
200x200 69.9 73.5 0.95 81.1 0.86 66.2 1.06
256x256 69.4 77.8 0.89 82.1 0.85 65.2 1.07
257x257 66.3 74.2 0.89 77.7 0.85 64.5 1.03
384x384 71.2 82.0 0.87 86.2 0.83 67.2 1.06
500x500 72.4 82.9 0.87 87.7 0.83 68.9 1.05
512x512 71.2 80.9 0.88 88.3 0.81 68.3 1.04
768x768 75.1 84.5 0.89 91.7 0.82 70.8 1.06
1000x1000 77.3 86.6 0.89 93.8 0.82 71.9 1.07
1001x1001 76.3 86.3 0.88 92.1 0.83 71.1 1.07
1024x1024 74.4 82.4 0.90 91.7 0.81 70.3 1.06
1536x1536 78.6 86.8 0.91 95.1 0.83 72.5 1.08
2048x2048 78.4 86.8 0.90 94.6 0.83 72.3 1.08
3072x3072 79.1 87.6 0.90 95.1 0.83 73.0 1.08
4096x4096 78.7 87.2 0.90 94.3 0.84 72.3 1.09
4097x4097 78.4 87.6 0.89 93.8 0.84 72.2 1.09
64x4096 48.3 54.1 0.89 54.4 0.89 46.5 1.04
256x4096 66.8 73.0 0.91 81.9 0.82 63.5 1.05
1024x4096 75.0 83.2 0.90 91.7 0.82 70.2 1.07
4096x8 39.3 26.5 1.48 38.3 1.03 42.8 0.92
4096x64 72.1 73.4 0.98 82.0 0.88 69.3 1.04
4096x256 78.2 85.6 0.91 93.4 0.84 72.2 1.08
4096x1024 78.5 88.2 0.89 95.0 0.83 73.0 1.08
SYRK double
n×k Eigen GFLOP/s Arm Performance Libraries GFLOP/s Eigen ÷ Arm Performance Libraries NVPL GFLOP/s Eigen ÷ NVPL OpenBLAS GFLOP/s Eigen ÷ OpenBLAS
2x2 0.1 0.0 4.09 0.0 17.91 0.2 0.87
3x3 0.4 0.1 3.61 0.0 15.59 0.4 0.91
4x4 0.8 0.2 3.85 0.1 16.37 0.8 1.00
6x6 2.0 0.6 3.10 0.2 12.46 1.8 1.10
8x8 3.3 1.2 2.76 0.3 9.50 3.4 0.99
12x12 5.5 3.1 1.78 1.0 5.36 7.0 0.78
16x16 8.9 5.6 1.59 2.2 4.05 10.5 0.85
24x24 12.8 11.5 1.11 6.0 2.13 16.5 0.77
32x32 16.3 16.1 1.01 10.4 1.58 20.6 0.79
48x48 20.8 22.1 0.94 19.5 1.07 25.4 0.82
64x64 24.3 25.6 0.95 25.2 0.96 27.7 0.88
96x96 28.3 31.4 0.90 32.9 0.86 30.6 0.92
100x100 28.7 30.3 0.95 31.7 0.91 31.8 0.90
128x128 30.4 33.9 0.90 35.7 0.85 31.1 0.98
192x192 28.7 38.2 0.75 38.8 0.74 32.2 0.89
200x200 31.7 36.5 0.87 38.9 0.81 32.9 0.96
256x256 32.3 37.8 0.86 39.6 0.82 32.4 1.00
257x257 32.1 37.6 0.85 37.8 0.85 32.5 0.99
384x384 33.4 39.7 0.84 42.2 0.79 33.4 1.00
500x500 36.3 40.0 0.91 42.8 0.85 34.4 1.05
512x512 34.3 38.1 0.90 42.4 0.81 33.2 1.03
768x768 37.4 40.2 0.93 44.6 0.84 35.1 1.07
1000x1000 38.4 41.0 0.94 45.6 0.84 35.9 1.07
1001x1001 38.2 40.9 0.93 44.7 0.85 35.6 1.07
1024x1024 37.7 39.9 0.94 44.8 0.84 34.9 1.08
1536x1536 38.4 40.9 0.94 45.4 0.85 35.8 1.07
2048x2048 38.4 40.1 0.96 45.6 0.84 35.8 1.07
3072x3072 38.1 39.3 0.97 45.1 0.84 36.0 1.06
4096x4096 37.7 38.6 0.98 45.0 0.84 35.3 1.07
4097x4097 37.6 40.1 0.94 45.0 0.84 35.5 1.06
64x4096 23.6 27.1 0.87 29.0 0.81 25.4 0.93
256x4096 32.6 36.4 0.90 39.7 0.82 31.8 1.02
1024x4096 37.9 39.5 0.96 44.7 0.85 35.1 1.08
4096x8 18.7 15.0 1.25 23.2 0.81 22.8 0.82
4096x64 34.7 34.9 0.99 41.3 0.84 31.9 1.09
4096x256 37.4 39.1 0.96 45.0 0.83 35.4 1.06
4096x1024 37.7 39.4 0.96 45.2 0.83 35.2 1.07
POTRF float
n Eigen GFLOP/s Arm Performance Libraries GFLOP/s Eigen ÷ Arm Performance Libraries NVPL GFLOP/s Eigen ÷ NVPL OpenBLAS GFLOP/s Eigen ÷ OpenBLAS
2 0.2 0.2 1.47 0.0 16.34 0.1 2.52
3 0.4 0.3 1.11 0.0 8.18 0.2 1.56
4 0.6 0.6 0.96 0.1 6.13 0.4 1.37
6 0.9 1.3 0.71 0.3 3.59 0.8 1.21
8 1.6 2.0 0.77 0.5 3.08 1.1 1.39
12 3.0 3.3 0.91 1.0 2.95 1.7 1.74
16 4.5 4.3 1.03 1.8 2.47 2.3 1.92
24 7.4 3.6 2.08 3.7 2.04 3.4 2.17
32 7.1 4.9 1.44 5.6 1.26 4.4 1.62
48 11.1 7.6 1.45 9.0 1.23 7.5 1.47
64 14.4 10.9 1.32 11.8 1.23 9.1 1.58
96 19.7 17.5 1.13 15.0 1.31 13.3 1.48
100 19.6 16.1 1.22 11.4 1.73 14.1 1.39
128 29.8 23.8 1.25 16.1 1.84 16.7 1.78
192 36.6 32.7 1.12 24.5 1.49 23.4 1.56
200 37.3 33.8 1.10 23.1 1.62 25.1 1.49
256 45.7 37.6 1.22 28.2 1.62 27.7 1.65
257 43.0 37.2 1.16 28.6 1.50 28.5 1.51
384 54.1 45.4 1.19 38.3 1.41 34.5 1.57
500 55.9 52.6 1.06 43.2 1.29 39.4 1.42
512 54.6 49.3 1.11 42.8 1.27 38.4 1.42
768 61.2 53.1 1.15 53.7 1.14 45.1 1.36
1000 64.7 55.7 1.16 60.1 1.08 50.1 1.29
1001 62.9 53.0 1.19 58.9 1.07 50.0 1.26
1024 60.5 54.3 1.11 58.8 1.03 48.5 1.25
1536 67.7 63.6 1.06 69.3 0.98 54.5 1.24
2048 68.4 65.3 1.05 73.1 0.94 56.7 1.21
3072 71.3 69.6 1.02 79.0 0.90 59.8 1.19
4096 71.4 66.6 1.07 80.2 0.89 61.0 1.17
4097 70.0 72.4 0.97 79.8 0.88 61.7 1.13
POTRF double
n Eigen GFLOP/s Arm Performance Libraries GFLOP/s Eigen ÷ Arm Performance Libraries NVPL GFLOP/s Eigen ÷ NVPL OpenBLAS GFLOP/s Eigen ÷ OpenBLAS
2 0.2 0.2 1.22 0.0 15.79 0.1 2.65
3 0.4 0.4 1.04 0.0 9.19 0.2 1.96
4 0.6 0.6 0.93 0.1 5.53 0.4 1.39
6 1.0 1.2 0.84 0.3 3.45 0.8 1.29
8 1.5 1.4 1.10 0.5 2.79 1.1 1.39
12 2.8 2.9 0.99 1.1 2.59 1.8 1.60
16 4.1 3.7 1.11 1.9 2.15 2.4 1.72
24 5.9 3.2 1.85 3.7 1.59 3.4 1.73
32 5.2 4.7 1.11 5.2 0.99 4.2 1.22
48 7.3 6.4 1.14 7.4 0.98 6.7 1.09
64 8.8 8.2 1.07 8.5 1.04 8.3 1.06
96 11.3 11.9 0.95 9.7 1.17 11.3 1.00
100 11.3 10.8 1.05 8.4 1.36 11.6 0.97
128 16.1 14.7 1.10 10.9 1.48 13.5 1.20
192 19.0 18.4 1.04 16.0 1.19 17.2 1.10
200 19.4 18.9 1.03 15.6 1.25 17.6 1.10
256 23.3 20.2 1.15 17.8 1.31 19.1 1.22
257 22.5 19.4 1.16 18.5 1.22 20.1 1.12
384 26.0 24.6 1.06 22.5 1.16 21.4 1.21
500 27.2 26.5 1.03 25.8 1.05 23.4 1.17
512 26.7 24.7 1.08 24.8 1.08 22.8 1.17
768 30.6 30.2 1.01 30.4 1.01 26.2 1.17
1000 32.4 33.0 0.98 33.6 0.97 27.9 1.16
1001 31.9 32.0 0.99 33.2 0.96 27.8 1.15
1024 30.8 28.9 1.07 32.8 0.94 27.2 1.13
1536 33.5 33.7 0.99 36.5 0.92 29.4 1.14
2048 34.0 33.8 1.01 38.0 0.90 30.4 1.12
3072 35.4 34.3 1.03 39.5 0.90 31.7 1.12
4096 35.5 33.7 1.06 39.8 0.89 31.6 1.12
4097 35.4 36.3 0.98 40.6 0.87 32.8 1.08
GETRF float
n Eigen GFLOP/s Arm Performance Libraries GFLOP/s Eigen ÷ Arm Performance Libraries NVPL GFLOP/s Eigen ÷ NVPL OpenBLAS GFLOP/s Eigen ÷ OpenBLAS
2 0.1 0.2 0.77 0.0 6.33 0.1 1.43
3 0.3 0.3 0.89 0.1 5.18 0.2 1.54
4 0.5 0.6 0.98 0.1 4.62 0.3 1.61
6 1.0 1.2 0.82 0.3 3.18 0.6 1.61
8 1.5 2.0 0.72 0.5 2.68 0.8 1.82
12 2.7 3.2 0.84 1.0 2.61 1.2 2.29
16 3.5 4.0 0.88 0.6 5.61 1.5 2.29
24 5.1 6.4 0.78 1.7 3.06 2.2 2.28
32 6.8 6.7 1.01 2.1 3.32 2.9 2.39
48 10.2 9.9 1.02 4.2 2.43 6.3 1.62
64 13.1 13.1 1.00 5.4 2.44 8.0 1.65
96 18.2 17.0 1.07 10.1 1.79 15.6 1.16
100 18.3 18.6 0.98 9.9 1.85 15.8 1.16
128 22.7 21.3 1.07 13.7 1.66 19.0 1.20
192 28.9 18.4 1.57 21.6 1.33 29.0 0.99
200 29.2 19.2 1.52 22.6 1.29 29.8 0.98
256 35.7 26.3 1.36 27.3 1.31 33.2 1.08
257 34.7 31.2 1.11 27.3 1.27 32.8 1.06
384 43.0 26.6 1.61 37.5 1.15 41.9 1.03
500 45.8 34.1 1.35 43.3 1.06 45.4 1.01
512 45.4 28.4 1.60 43.0 1.06 45.0 1.01
768 51.0 38.5 1.33 52.1 0.98 51.8 0.99
1000 55.5 46.9 1.18 59.8 0.93 54.3 1.02
1001 54.6 43.2 1.26 59.1 0.92 53.9 1.01
1024 54.3 37.4 1.45 58.5 0.93 52.9 1.03
1536 61.0 55.5 1.10 68.1 0.90 58.7 1.04
2048 64.4 56.1 1.15 69.0 0.93 60.9 1.06
3072 68.3 63.9 1.07 78.6 0.87 64.3 1.06
4096 69.2 66.0 1.05 78.4 0.88 65.1 1.06
4097 67.3 72.6 0.93 79.1 0.85 65.2 1.03
GETRF double
n Eigen GFLOP/s Arm Performance Libraries GFLOP/s Eigen ÷ Arm Performance Libraries NVPL GFLOP/s Eigen ÷ NVPL OpenBLAS GFLOP/s Eigen ÷ OpenBLAS
2 0.2 0.2 1.26 0.0 11.25 0.1 2.51
3 0.4 0.4 1.03 0.1 7.15 0.2 2.03
4 0.7 0.7 0.96 0.1 5.62 0.3 1.93
6 1.3 1.4 0.88 0.3 4.19 0.6 2.09
8 1.8 2.1 0.82 0.5 3.20 0.8 2.08
12 2.6 3.3 0.81 1.1 2.49 1.2 2.17
16 3.4 4.3 0.78 0.6 5.20 1.6 2.13
24 4.8 4.2 1.14 1.6 2.95 2.2 2.15
32 6.3 5.7 1.10 2.0 3.11 2.8 2.20
48 8.7 6.7 1.30 3.8 2.26 6.0 1.43
64 10.4 8.8 1.18 5.0 2.07 7.4 1.40
96 12.9 9.6 1.34 8.6 1.51 12.1 1.06
100 13.1 8.7 1.50 8.5 1.54 12.2 1.07
128 15.5 8.9 1.74 11.0 1.40 14.0 1.10
192 18.1 9.4 1.93 16.1 1.12 19.0 0.95
200 18.7 9.8 1.91 16.7 1.12 19.3 0.97
256 21.7 13.1 1.66 19.1 1.14 20.2 1.08
257 21.3 13.3 1.60 19.1 1.12 20.5 1.04
384 23.5 14.4 1.63 23.3 1.01 23.6 1.00
500 25.0 18.0 1.39 26.0 0.96 24.9 1.00
512 24.6 15.8 1.55 24.2 1.02 23.9 1.03
768 27.2 22.8 1.19 30.2 0.90 27.7 0.98
1000 28.9 26.0 1.11 33.5 0.86 29.6 0.97
1001 28.6 25.8 1.11 33.3 0.86 29.5 0.97
1024 28.2 24.2 1.16 30.8 0.91 28.7 0.98
1536 31.1 28.2 1.10 35.1 0.89 30.9 1.01
2048 30.8 30.9 1.00 36.0 0.86 31.7 0.97
3072 32.0 35.0 0.91 38.9 0.82 32.7 0.98
4096 31.6 36.5 0.86 40.0 0.79 32.6 0.97
4097 31.2 38.6 0.81 40.7 0.77 32.8 0.95
GEQRF float
m×n Eigen GFLOP/s Arm Performance Libraries GFLOP/s Eigen ÷ Arm Performance Libraries NVPL GFLOP/s Eigen ÷ NVPL OpenBLAS GFLOP/s Eigen ÷ OpenBLAS
2x2 0.1 0.2 0.59 0.1 1.12 0.1 1.15
3x3 0.2 0.3 0.58 0.2 0.83 0.2 1.06
4x4 0.3 0.5 0.58 0.4 0.74 0.3 1.05
6x6 0.6 1.0 0.60 0.8 0.70 0.5 1.08
8x8 0.9 1.6 0.59 1.4 0.70 0.9 1.10
12x12 1.9 3.0 0.63 2.6 0.73 1.7 1.14
16x16 3.0 4.4 0.69 3.9 0.77 2.5 1.19
24x24 4.7 7.0 0.67 6.6 0.71 4.4 1.06
32x32 6.3 9.4 0.67 9.0 0.70 6.3 1.00
48x48 8.9 13.0 0.68 13.3 0.67 9.4 0.94
64x64 7.9 15.1 0.53 16.3 0.49 11.6 0.68
96x96 14.2 17.4 0.82 20.7 0.69 14.7 0.97
100x100 12.7 17.6 0.72 21.4 0.59 15.0 0.85
128x128 17.9 18.2 0.98 23.5 0.76 16.0 1.12
192x192 26.0 17.8 1.46 33.5 0.78 25.3 1.03
200x200 26.0 18.0 1.44 34.5 0.75 29.9 0.87
256x256 31.1 16.9 1.84 39.0 0.80 30.0 1.04
257x257 30.1 17.8 1.69 39.4 0.76 34.7 0.87
384x384 39.1 35.4 1.10 48.0 0.82 38.8 1.01
500x500 43.6 48.6 0.90 54.1 0.81 46.2 0.94
512x512 42.8 45.2 0.95 51.1 0.84 43.0 1.00
768x768 49.6 47.2 1.05 57.4 0.86 48.9 1.01
1000x1000 53.5 54.3 0.99 65.9 0.81 54.1 0.99
1001x1001 52.5 54.4 0.97 64.5 0.82 53.4 0.98
1024x1024 52.3 50.1 1.04 59.8 0.87 49.8 1.05
1536x1536 57.3 58.6 0.98 69.3 0.83 55.5 1.03
2048x2048 58.9 61.2 0.96 70.6 0.83 55.8 1.06
3072x3072 61.9 68.5 0.90 76.9 0.81 57.9 1.07
4096x4096 61.2 68.8 0.89 77.5 0.79 56.9 1.08
4097x4097 59.6 70.6 0.84 78.6 0.76 57.2 1.04
4096x8 15.2 12.2 1.25 11.9 1.28 14.7 1.04
4096x64 15.9 14.7 1.08 22.8 0.70 16.6 0.96
4096x256 33.7 14.9 2.27 42.1 0.80 31.1 1.08
4096x1024 52.4 45.9 1.14 63.3 0.83 51.9 1.01
10000x8 15.2 11.7 1.30 11.9 1.28 14.4 1.06
10000x100 24.2 14.4 1.69 29.7 0.82 15.9 1.53
10000x1000 56.8 52.4 1.08 68.5 0.83 53.8 1.06
10000x4000 63.8 72.8 0.88 83.1 0.77 58.7 1.09
100000x8 13.0 10.2 1.28 10.2 1.28 11.9 1.09
100000x64 18.9 13.2 1.43 24.5 0.77 14.4 1.32
100000x256 36.1 10.0 3.60 44.6 0.81 25.8 1.40
GEQRF double
m×n Eigen GFLOP/s Arm Performance Libraries GFLOP/s Eigen ÷ Arm Performance Libraries NVPL GFLOP/s Eigen ÷ NVPL OpenBLAS GFLOP/s Eigen ÷ OpenBLAS
2x2 0.1 0.2 0.52 0.1 1.14 0.1 1.20
3x3 0.2 0.4 0.51 0.2 0.81 0.2 1.09
4x4 0.3 0.6 0.49 0.4 0.73 0.3 1.07
6x6 0.5 1.0 0.51 0.8 0.68 0.5 1.09
8x8 0.9 1.6 0.54 1.3 0.67 0.8 1.14
12x12 1.7 2.8 0.60 2.4 0.69 1.4 1.23
16x16 2.6 4.0 0.65 3.6 0.72 2.0 1.30
24x24 4.3 6.0 0.72 5.5 0.78 3.2 1.35
32x32 5.6 7.5 0.75 7.1 0.79 4.2 1.34
48x48 7.5 9.3 0.81 10.1 0.74 6.5 1.15
64x64 6.6 10.3 0.64 11.8 0.56 7.6 0.87
96x96 10.8 11.1 0.98 12.3 0.88 9.2 1.18
100x100 10.1 11.1 0.91 11.2 0.90 9.3 1.08
128x128 12.7 10.3 1.23 15.3 0.83 9.2 1.38
192x192 16.7 10.3 1.63 20.4 0.82 14.0 1.19
200x200 17.1 10.3 1.66 20.8 0.82 16.6 1.03
256x256 18.2 18.9 0.96 22.2 0.82 17.0 1.07
257x257 18.3 20.1 0.91 22.0 0.83 19.0 0.96
384x384 21.8 23.0 0.95 25.8 0.85 21.0 1.04
500x500 24.2 26.1 0.93 28.7 0.85 23.8 1.02
512x512 23.4 24.4 0.96 26.8 0.87 22.3 1.05
768x768 26.6 29.0 0.92 31.0 0.86 25.5 1.04
1000x1000 28.4 31.6 0.90 34.0 0.84 27.5 1.03
1001x1001 28.1 31.5 0.89 33.6 0.83 27.4 1.03
1024x1024 27.6 30.0 0.92 32.1 0.86 26.2 1.05
1536x1536 29.6 33.4 0.89 35.3 0.84 28.1 1.06
2048x2048 29.8 34.1 0.87 35.8 0.83 28.1 1.06
3072x3072 31.4 36.1 0.87 38.2 0.82 29.0 1.08
4096x4096 31.3 36.1 0.87 38.7 0.81 27.6 1.13
4097x4097 31.1 36.2 0.86 39.3 0.79 27.9 1.12
4096x8 6.7 7.4 0.91 7.4 0.91 7.2 0.94
4096x64 8.2 9.3 0.88 14.2 0.58 9.0 0.91
4096x256 17.6 18.8 0.94 23.4 0.75 16.8 1.05
4096x1024 27.2 30.0 0.91 34.1 0.80 26.7 1.02
10000x8 6.6 6.7 0.98 9.1 0.73 6.4 1.04
10000x100 12.4 9.1 1.36 19.3 0.64 8.4 1.48
10000x1000 28.6 31.5 0.91 35.1 0.81 26.5 1.08
10000x4000 31.3 35.2 0.89 39.6 0.79 26.8 1.17
100000x8 5.8 5.7 1.02 7.7 0.76 5.9 0.99
100000x64 9.4 7.5 1.26 16.5 0.57 6.7 1.41
100000x256 17.0 16.5 1.03 22.8 0.74 12.1 1.40
SYEV float
n Eigen GFLOP/s Arm Performance Libraries GFLOP/s Eigen ÷ Arm Performance Libraries NVPL GFLOP/s Eigen ÷ NVPL OpenBLAS GFLOP/s Eigen ÷ OpenBLAS
2 0.5 0.4 1.34 0.4 1.47 0.3 1.58
3 0.7 0.3 2.09 0.3 2.14 0.4 1.84
4 0.8 0.4 2.03 0.4 1.94 0.5 1.66
6 1.3 0.7 1.87 0.7 1.99 0.8 1.69
8 1.9 1.0 1.95 1.0 1.89 1.1 1.65
12 3.1 1.6 1.92 1.7 1.86 1.8 1.70
16 4.2 2.3 1.81 2.4 1.77 2.5 1.68
24 6.4 3.6 1.77 3.7 1.74 3.7 1.73
32 8.3 4.8 1.75 4.7 1.77 4.7 1.79
48 11.4 6.5 1.75 5.8 1.96 5.8 1.96
64 14.0 7.6 1.85 7.3 1.91 7.1 1.96
96 17.4 9.1 1.91 8.7 2.00 8.4 2.07
100 17.7 9.3 1.90 8.9 1.99 8.6 2.05
128 20.1 9.8 2.05 9.8 2.06 9.4 2.15
192 24.2 11.0 2.19 11.1 2.19 10.8 2.24
200 24.7 10.9 2.26 11.3 2.18 10.9 2.27
256 26.3 11.4 2.32 12.0 2.19 11.5 2.29
257 24.9 11.4 2.18 12.1 2.06 11.6 2.15
384 29.9 12.0 2.50 13.0 2.30 12.5 2.38
500 31.3 12.4 2.53 13.6 2.31 12.9 2.42
512 30.8 12.2 2.53 13.5 2.28 12.9 2.38
768 32.3 12.5 2.57 14.1 2.28 13.4 2.40
1000 34.1 12.9 2.63 14.5 2.36 13.7 2.49
1001 32.2 13.0 2.48 14.5 2.23 13.8 2.34
1024 33.3 12.6 2.64 14.4 2.31 13.6 2.44
1536 34.8 13.1 2.66 14.8 2.36 14.0 2.49
2048 34.4 12.0 2.87 14.9 2.32 14.0 2.46
SYEV double
n Eigen GFLOP/s Arm Performance Libraries GFLOP/s Eigen ÷ Arm Performance Libraries NVPL GFLOP/s Eigen ÷ NVPL OpenBLAS GFLOP/s Eigen ÷ OpenBLAS
2 0.6 0.4 1.58 0.3 1.90 0.3 1.82
3 0.5 0.3 1.94 0.3 1.89 0.3 1.68
4 0.7 0.4 1.79 0.4 1.84 0.4 1.65
6 1.0 0.6 1.76 0.6 1.72 0.6 1.57
8 1.4 0.8 1.71 0.8 1.71 0.9 1.58
12 2.2 1.4 1.57 1.4 1.57 1.5 1.50
16 3.0 1.9 1.57 2.0 1.54 2.0 1.52
24 4.4 2.9 1.48 3.0 1.46 2.9 1.52
32 5.4 3.7 1.46 3.8 1.43 3.6 1.52
48 7.1 5.1 1.40 4.6 1.56 4.5 1.58
64 8.4 5.9 1.42 5.6 1.49 5.4 1.55
96 9.8 7.0 1.41 6.8 1.45 6.5 1.51
100 10.0 7.1 1.40 6.8 1.46 6.6 1.52
128 10.8 7.5 1.45 7.5 1.45 7.1 1.52
192 12.4 8.2 1.51 8.6 1.44 8.2 1.52
200 12.7 8.2 1.54 8.9 1.43 8.4 1.52
256 13.2 8.5 1.56 9.2 1.43 8.9 1.49
257 13.0 8.6 1.52 9.3 1.41 8.8 1.49
384 13.8 8.7 1.58 10.0 1.38 9.6 1.44
500 14.7 9.1 1.62 10.6 1.39 9.9 1.48
512 14.5 8.9 1.64 10.5 1.38 9.8 1.48
768 15.2 9.4 1.61 11.1 1.37 10.2 1.49
1000 15.9 9.7 1.64 11.2 1.41 10.6 1.50
1001 15.4 9.9 1.57 11.5 1.34 10.4 1.49
1024 15.3 9.2 1.66 11.4 1.34 10.6 1.44
1536 15.9 9.7 1.63 11.8 1.35 10.9 1.46
2048 14.0 8.4 1.67 11.2 1.25 10.5 1.34
GESDD float
m×n Eigen GFLOP/s Arm Performance Libraries GFLOP/s Eigen ÷ Arm Performance Libraries NVPL GFLOP/s Eigen ÷ NVPL OpenBLAS GFLOP/s Eigen ÷ OpenBLAS
2x2 1.6 0.2 7.45 0.2 9.15 0.2 7.16
3x3 1.3 0.4 3.50 0.3 3.88 0.4 2.95
4x4 1.4 0.5 2.56 0.5 2.73 0.7 2.09
6x6 1.5 1.0 1.52 1.0 1.59 1.2 1.25
8x8 1.8 1.5 1.15 1.5 1.21 1.9 0.96
12x12 2.1 2.6 0.81 2.6 0.80 3.0 0.70
16x16 3.6 3.7 0.97 3.7 0.98 4.1 0.87
24x24 5.1 5.8 0.89 5.6 0.91 6.0 0.86
32x32 7.1 9.0 0.78 8.5 0.84 9.4 0.75
48x48 11.7 14.2 0.82 11.8 0.99 13.4 0.87
64x64 15.4 21.0 0.73 17.5 0.88 19.6 0.79
96x96 24.3 29.7 0.82 26.8 0.90 28.2 0.86
100x100 25.3 30.8 0.82 27.6 0.92 29.4 0.86
128x128 31.5 37.3 0.85 35.5 0.89 36.3 0.87
192x192 46.0 44.3 1.04 46.4 0.99 40.0 1.15
200x200 47.5 46.2 1.03 48.2 0.99 40.0 1.19
256x256 54.1 47.0 1.15 54.0 1.00 44.9 1.20
257x257 55.3 47.2 1.17 56.3 0.98 46.0 1.20
384x384 69.6 52.4 1.33 68.6 1.01 54.5 1.28
500x500 79.1 59.8 1.32 81.8 0.97 64.3 1.23
512x512 76.9 55.7 1.38 76.1 1.01 61.8 1.24
768x768 88.8 57.4 1.55 87.7 1.01 72.0 1.23
1000x1000 98.3 63.3 1.55 102.1 0.96 80.7 1.22
1001x1001 98.0 60.2 1.63 101.7 0.96 80.9 1.21
1024x1024 90.3 54.9 1.65 90.3 1.00 74.1 1.22
1536x1536 103.4 65.3 1.58 106.7 0.97 86.8 1.19
2048x2048 96.0 55.6 1.73 103.7 0.93 87.0 1.10
4096x64 53.3 40.5 1.32 50.4 1.06 36.1 1.47
4096x256 90.1 43.4 2.08 89.2 1.01 69.0 1.31
4096x1024 102.5 50.6 2.03 110.0 0.93 89.2 1.15
10000x8 21.2 23.3 0.91 23.0 0.92 12.5 1.69
10000x100 76.5 49.3 1.55 64.9 1.18 39.9 1.92
10000x1000 126.2 72.1 1.75 143.6 0.88 111.4 1.13
GESDD double
m×n Eigen GFLOP/s Arm Performance Libraries GFLOP/s Eigen ÷ Arm Performance Libraries NVPL GFLOP/s Eigen ÷ NVPL OpenBLAS GFLOP/s Eigen ÷ OpenBLAS
2x2 1.7 0.2 7.90 0.2 9.76 0.2 7.23
3x3 0.9 0.3 2.82 0.3 3.07 0.4 2.38
4x4 0.9 0.5 1.91 0.5 2.06 0.6 1.58
6x6 1.0 0.9 1.19 0.8 1.25 1.0 1.01
8x8 1.2 1.2 0.95 1.2 0.99 1.4 0.82
12x12 1.3 2.1 0.61 2.1 0.61 2.3 0.56
16x16 2.3 3.0 0.77 2.9 0.80 3.1 0.74
24x24 3.2 4.4 0.72 4.3 0.74 4.3 0.75
32x32 4.4 6.7 0.66 6.5 0.68 6.6 0.67
48x48 6.3 10.1 0.63 8.7 0.73 9.4 0.67
64x64 8.2 14.0 0.59 12.6 0.65 13.0 0.63
96x96 12.2 18.6 0.66 18.1 0.68 17.9 0.68
100x100 12.6 19.1 0.66 18.3 0.69 18.8 0.67
128x128 15.3 21.0 0.73 22.1 0.69 21.6 0.71
192x192 21.9 24.8 0.88 28.4 0.77 25.0 0.88
200x200 22.8 26.6 0.86 29.9 0.76 25.6 0.89
256x256 26.1 26.4 0.99 33.1 0.79 28.1 0.93
257x257 26.5 27.6 0.96 34.2 0.78 29.1 0.91
384x384 32.9 29.0 1.13 39.8 0.83 33.1 0.99
500x500 38.2 32.1 1.19 45.8 0.84 37.8 1.01
512x512 36.1 28.5 1.27 41.6 0.87 34.7 1.04
768x768 43.1 32.7 1.32 50.3 0.86 41.0 1.05
1000x1000 47.8 35.5 1.34 55.8 0.86 45.6 1.05
1001x1001 47.9 35.1 1.37 56.0 0.85 45.8 1.05
1024x1024 42.1 29.7 1.42 50.8 0.83 42.6 0.99
1536x1536 49.5 32.5 1.52 57.1 0.87 46.8 1.06
2048x2048 44.7 25.7 1.74 56.3 0.79 47.7 0.94
4096x64 29.2 24.3 1.20 29.8 0.98 22.5 1.30
4096x256 47.5 30.4 1.56 49.8 0.95 40.0 1.19
4096x1024 51.1 27.1 1.89 59.6 0.86 48.3 1.06
10000x8 8.7 15.2 0.57 16.9 0.51 9.7 0.90
10000x100 41.0 29.0 1.42 37.4 1.10 23.2 1.77
10000x1000 63.4 35.3 1.79 73.2 0.87 57.7 1.10
GEEV float
n Eigen GFLOP/s Arm Performance Libraries GFLOP/s Eigen ÷ Arm Performance Libraries NVPL GFLOP/s Eigen ÷ NVPL OpenBLAS GFLOP/s Eigen ÷ OpenBLAS
2 1.8 0.3 7.00 0.2 11.08 0.2 7.56
3 1.0 0.3 2.94 0.2 4.28 0.4 2.69
4 1.7 0.5 3.40 0.4 4.45 0.6 3.00
6 2.1 0.9 2.43 0.7 3.17 1.0 2.14
8 3.2 1.3 2.40 1.0 3.29 1.4 2.29
12 4.7 2.2 2.14 1.7 2.86 2.2 2.17
16 5.9 3.1 1.92 2.1 2.85 2.9 2.04
24 7.4 5.3 1.41 3.3 2.28 4.3 1.74
32 8.6 7.3 1.19 4.1 2.09 5.5 1.57
48 11.0 10.9 1.00 5.8 1.88 7.3 1.50
64 12.1 13.5 0.89 7.0 1.73 8.5 1.42
96 13.8 10.5 1.31 8.7 1.59 10.1 1.37
100 13.8 11.2 1.24 9.1 1.52 10.4 1.33
128 14.6 13.1 1.12 11.0 1.33 12.1 1.21
192 15.5 23.0 0.67 18.6 0.83 20.3 0.76
200 15.8 24.9 0.63 19.7 0.80 22.4 0.70
256 15.7 28.2 0.56 24.0 0.66 25.7 0.61
257 15.3 28.3 0.54 24.4 0.63 25.9 0.59
384 14.7 36.2 0.41 34.5 0.43 35.9 0.41
500 17.2 42.7 0.40 43.5 0.40 43.5 0.40
512 16.2 31.5 0.51 32.9 0.49 32.3 0.50
768 16.9 43.4 0.39 47.4 0.36 48.0 0.35
1000 18.4 55.2 0.33 65.9 0.28 63.0 0.29
1001 18.0 54.3 0.33 66.2 0.27 62.9 0.29
1024 15.7 49.4 0.32 59.8 0.26 57.4 0.27
GEEV double
n Eigen GFLOP/s Arm Performance Libraries GFLOP/s Eigen ÷ Arm Performance Libraries NVPL GFLOP/s Eigen ÷ NVPL OpenBLAS GFLOP/s Eigen ÷ OpenBLAS
2 2.0 0.2 8.10 0.2 12.78 0.2 9.16
3 0.9 0.3 3.02 0.2 4.10 0.3 3.02
4 1.2 0.5 2.50 0.4 3.31 0.5 2.38
6 1.8 0.8 2.21 0.6 3.00 0.8 2.25
8 2.2 1.2 1.86 0.8 2.62 1.0 2.14
12 3.0 1.9 1.62 1.4 2.25 1.6 1.91
16 3.8 2.7 1.42 1.8 2.08 2.1 1.76
24 4.6 4.1 1.12 2.6 1.76 3.1 1.48
32 5.4 5.5 0.98 3.4 1.57 4.0 1.35
48 6.1 7.5 0.81 4.6 1.34 5.3 1.15
64 6.9 8.9 0.77 5.5 1.25 6.3 1.10
96 7.2 7.3 0.99 6.3 1.15 6.6 1.09
100 7.2 7.6 0.94 6.5 1.10 7.0 1.03
128 7.4 7.9 0.94 7.3 1.02 7.5 0.99
192 7.4 11.7 0.63 11.3 0.66 11.3 0.66
200 7.9 12.6 0.63 11.9 0.66 12.0 0.66
256 7.7 14.1 0.55 13.6 0.57 13.7 0.57
257 7.6 14.6 0.52 14.4 0.53 14.1 0.54
384 7.4 19.3 0.38 19.2 0.38 18.9 0.39
500 7.7 22.4 0.34 23.5 0.33 22.4 0.34
512 7.3 16.7 0.44 18.0 0.40 16.6 0.44
768 7.7 22.7 0.34 26.5 0.29 24.3 0.32
1000 7.7 28.1 0.27 34.9 0.22 31.2 0.25
1001 7.7 27.9 0.27 34.9 0.22 31.3 0.24
1024 7.0 24.0 0.29 30.5 0.23 27.5 0.26