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

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

The operations and shapes of the Zen 5 and Apple M4 pages measured on one core of an NVIDIA Grace, the 72-core Arm Neoverse V2 server CPU, with Eigen built for NEON, the default on AArch64, against the three BLAS/LAPACK libraries with tuned kernels for this CPU: Arm Performance Libraries, NVIDIA Performance Libraries (NVPL) and OpenBLAS. The SVE page has the same cells with Eigen built for SVE at the 128-bit vector length of this CPU.

Measured again in October 2026 at Eigen master 210e0a609, with OpenBLAS 0.3.34 in place of Ubuntu’s 0.3.26; Arm Performance Libraries and NVPL are unchanged and repeat their September rates within 0.1 % in geometric mean. Against September, Eigen’s TRSM is 3 to 26 % faster from n = 16 on, its GEEV 1 to 7 % faster from n = 192 on, and its smallest GEMMs (n = 2 to 6) 11 to 22 % slower; every other operation is within 2 % in geometric mean.

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, 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 for the default armv8-a target, no -mcpu or -march, C++17
Eigen master 210e0a609 (5.0.1-dev) with the harness commit of merge request !2903 and the Grace profile on top (916370756 on the author’s fork branch benchmark-comparison-harness-grace-2026-10), default configuration, no external BLAS. Eigen selects SVE only when asked (EIGEN_ARM64_USE_SVE), so every kernel here is the NEON code
Arm Performance Libraries 26.07 (reports 26.7.0 release), the GCC build from Arm’s deb installer, the sequential LP64 library libarmpl_lp64
NVPL NVIDIA Performance Libraries 26.5, nvpl_blas 0.6.0 and nvpl_lapack 0.4.0.1 from the redistributable archives, the sequential LP64 libraries libnvpl_blas_lp64_seq and libnvpl_lapack_lp64_seq
OpenBLAS 0.3.34, built from the release tarball with GCC and gfortran 13.3 (make TARGET=NEOVERSEV2 USE_OPENMP=0 NUM_THREADS=72, pthread build); kernel target NEOVERSEV2, as the library reports at run time; its LAPACK is the reference LAPACK it bundles. The September measurement used Ubuntu 24.04’s packaged 0.3.26, which predates a Neoverse V2 target and ran its Neoverse V1 kernels
Interface every library is called through the Fortran BLAS and LAPACK symbols (dgemm_, dpotrf_, …) with column-major operands, from one set of declarations shared by the three
Threads 1 for every arm: ARMPL_NUM_THREADS, NVPL_BLAS_NUM_THREADS, NVPL_LAPACK_NUM_THREADS, OPENBLAS_NUM_THREADS and OMP_NUM_THREADS all 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; the process pinned to one core (taskset -c 8)
Date 2026-10-02 to 2026-10-03 (36 runs, about 7.7 hours of measurement)
Harness benchmarks/comparison/run.py from Eigen merge request !2903, machine profile neoverse-v2-72c

GEMM at n = 1024 ran at 35 GFLOP/s in double and 84 in float in Eigen, against 45 and 94 for Arm Performance Libraries, 45 and 95 for NVPL, and 39 and 84 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. A ratio divides Eigen’s rate by the library’s rate from the same binary and the same run. Each of the three binaries, one per library, also measured every Eigen cell, so Eigen was measured three times: 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. The spread is within 3 % for 82 % of the cells, within 5 % for 90 % and above 10 % for 3.5 %. The widest are AXPY and DOT cells where one of the three binaries runs up to 30 % slower than the other two (DOT in float at n = 3: 4.4 against 5.8 and 6.3 GFLOP/s), a binary-dependent effect rather than noise.

Each run covered one operation against one library. The machine is a shared server that was otherwise idle: a run started only once the whole machine had used less than 0.5 of a core over a 5 s window, and the load average before and after each run is in its result file: between 0.92 and 1.13 for 30 of the 36 runs, which is the run’s own core. Before the first run it was 2.23, the tail of the builds that preceded it, with the CPU already idle. Four runs in the NVPL binary (AXPY, DOT, GEMV and GEEV) saw 1.14 to 1.80, so another process was awake for part of them, and the OpenBLAS AXPY run started at 1.19 just after the last of them; NVPL’s rows from those runs repeat the September measurement within 0.6 % in geometric mean, and their Eigen cells agree with the other two passes within 1 %. None of the 36 runs had to be repeated, and no cell errored.

The libraries select their kernels at run time from the CPU they find themselves on, so they run whatever they choose for the Neoverse V2, SVE or NEON; only Eigen is held to NEON on this page, and to SVE on the SVE page. The library rows are the same on both.

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

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 against 6.3 ns for Arm Performance Libraries, 4.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.

In double, Eigen runs at 0.83 to 0.97 of Arm Performance Libraries from n = 192 to 6144 and at 0.73 to 0.86 of OpenBLAS in L1 (n = 128 to 2048), then leads OpenBLAS by 4 to 12 % from n = 4096 through L2. In float Eigen leads OpenBLAS by 9 to 31 % above n = 512 and runs at 0.86 to 0.90 of Arm Performance Libraries from n = 512 to 8192. From L3 into DRAM the four arms meet at the bandwidth of one core, 43 GB/s at n = (2^{24}) in double. NVPL’s cost per call puts Eigen 9x ahead of it at n ≤ 16.

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.

Eigen’s dot product is the fastest arm at every length up to n = 32768 and within 2 % at the L2 edge: 18.4 GFLOP/s at n = 1024 in double against 14.5 for Arm Performance Libraries, 12.7 for OpenBLAS and 6.0 for NVPL, whose DOT stays at or below 6.3 GFLOP/s through L2 and only meets the others where DRAM bandwidth binds.

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.

Beyond L2 the square shapes run at the memory bandwidth for every arm. From n = 192 on Eigen runs at 0.8 to 1.3x the two vendor libraries. OpenBLAS 0.3.34 leads Eigen from n = 500 on, with Eigen at 0.65 to 0.99 of it in both scalar types outside one cell each (double at n = 3072, float at n = 4096); below n = 192 Eigen leads it by 1.1 to 2.7x. At n ≤ 16 the call costs put Eigen 1.5 to 2.7x ahead of OpenBLAS, 3 to 6.5x ahead of Arm Performance Libraries and 4 to 12x ahead of NVPL.

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.

Eigen’s NEON kernel reaches 37 GFLOP/s in double and 84 in float from n = 128 on and holds that to n = 4096 and the 10000-by-4000 shapes. The two vendor libraries reach 45 and 94, a lead of 18 % in double and 8 to 11 % in float that Eigen does not close at any size above 64. OpenBLAS 0.3.34’s Neoverse V2 kernels reach 39 and 82: 6 % ahead of Eigen in double and even with it in float, where the 0.3.26 release of the September measurement trailed Eigen by 6 % and 17 %. At n ≤ 16 Eigen is 1.7 to 2.6x ahead of every library. Its own rate at n = 2 to 6 is 11 to 22 % lower than in September (n = 3 in double: 2.7 against 3.5 GFLOP/s; n = 2 in float: 1.05 against 1.33), a regression on master since then that leaves it ahead of every library at those sizes.

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.

Eigen’s TRSM is faster than in the September measurement: by 10 to 26 % from n = 16 to 384 and by 3 to 12 % above, since master solves whole diagonal blocks with the shared packet kernel (libeigen/eigen!3187); only n = 4 and 6 are 6 to 15 % slower. From n = 192 on Eigen now leads Arm Performance Libraries by 6 to 26 % up to n = 1024 in double and runs at 0.91 to 1.00 of it above, runs at 0.96 to 1.09 of OpenBLAS in double and 3 to 87 % ahead of it in float, and trails NVPL by 12 to 19 % in double from n = 1536 on. NVPL’s call cost dominates the smallest triangles, where Eigen is 31 to 39x faster.

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.

Eigen runs SYRK at 39 GFLOP/s in double at n = 1024, within 2 % of Arm Performance Libraries and of OpenBLAS and 14 % behind NVPL, which holds the same margin as in GEMM. At n ≤ 16 the vendor libraries' call costs put Eigen 3x (Arm Performance Libraries) to 10 to 13x (NVPL) ahead; OpenBLAS keeps pace there in float and is ahead in double (Eigen at 0.82 of it).

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.

LLT is ahead of the two vendor libraries from n = 24 to 1024, by 1.1 to 1.5x, and within a few percent of them above, where NVPL’s potrf pulls ahead by 7 % in double at n ≥ 1536. OpenBLAS 0.3.34’s potrf is the fastest arm in double from n = 24 to 1024, with LLT at 0.76 to 0.93 of it, runs at 0.95 to 1.11 of LLT in float, and is even with it above n = 1536.

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.

PartialPivLU is 1.3 to 1.7x faster than Arm Performance Libraries between n = 24 and 1024 and even with it above. NVPL’s getrf is the fastest arm at the largest sizes, with Eigen at 0.89 of it in double. Against OpenBLAS 0.3.34 Eigen leads below n = 192 (1.1 to 2.2x) and in float, and runs at 0.90 to 0.92 of it in double from n = 192 on.

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 one factorization the vendor libraries lead throughout: NVPL by 13 to 15 % in double at every size above 24, Arm Performance Libraries by 1.8x in double at n ≤ 16 (a fixed cost in Eigen’s small Householder QR) and by 10 % at the largest sizes, with Eigen ahead between 192 and 1024. Eigen leads OpenBLAS by 8 to 26 % except in double from n = 192 on, where it runs at 0.96 to 0.98 of it.

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

Eigen’s tridiagonal QR path is 1.3 to 1.7x faster than every library in double and 1.6 to 2.7x in float at every size, the largest lead on the page for a LAPACK routine.

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.

Below n = 128 the libraries’ divide and conquer is 1.4 to 1.6x ahead of BDCSVD in double (ratios of 0.63 to 0.71); from 192 to 2048 Eigen is 1.2 to 1.7x ahead of Arm Performance Libraries, 15 % behind NVPL and 14 to 18 % behind OpenBLAS 0.3.34, which it matched in September.

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

EigenSolver stops scaling at n = 128 and stays at 7 to 8.5 GFLOP/s in double, while the three libraries' dgeev climb to 24 to 31 GFLOP/s at n = 1024, so Eigen is at 0.4x from n = 192 on, as on the Zen 5 and Apple M4 pages. At n ≤ 16 Eigen leads by 2.3 to 3.7x. EigenSolver itself is faster than in September from n = 192 on, by 2 to 6 % in double and 1 to 7 % in float.

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 2.51 1.62 0.93 0.92 1.01
AXPY float NVPL 9.41 5.25 1.65 1.09 1.00
AXPY float OpenBLAS 1.63 1.33 1.12 1.20 1.07
AXPY double Arm Performance Libraries 2.49 1.32 0.86 0.94 0.99
AXPY double NVPL 9.37 3.29 1.32 1.04 0.99
AXPY double OpenBLAS 1.86 1.07 0.81 1.02 1.10
DOT float Arm Performance Libraries 5.89 1.96 1.37 1.21 1.00
DOT float NVPL 28.83 7.74 3.47 2.50 1.43
DOT float OpenBLAS 4.22 1.87 1.40 1.22 1.01
DOT double Arm Performance Libraries 4.87 1.64 1.30 1.17 1.05
DOT double NVPL 21.51 5.41 3.20 2.19 1.36
DOT double OpenBLAS 3.68 1.57 1.41 1.12 1.00
GEMV float Arm Performance Libraries 4.71 1.69 1.05 1.01 –
GEMV float NVPL 7.99 2.00 1.07 0.94 –
GEMV float OpenBLAS 2.01 1.58 0.91 0.87 –
GEMV double Arm Performance Libraries 4.37 1.52 1.02 1.00 –
GEMV double NVPL 7.28 1.68 1.01 0.94 –
GEMV double OpenBLAS 2.09 1.42 0.90 0.86 –
GEMM float Arm Performance Libraries 2.63 1.18 0.93 0.91 –
GEMM float NVPL 2.32 0.93 0.90 0.89 –
GEMM float OpenBLAS 1.71 1.01 1.02 1.02 –
GEMM double Arm Performance Libraries 2.47 1.06 0.85 0.80 –
GEMM double NVPL 2.56 0.92 0.84 0.82 –
GEMM double OpenBLAS 1.76 0.96 0.94 0.91 –
TRSM float Arm Performance Libraries 2.68 2.84 1.14 1.03 –
TRSM float NVPL 38.99 3.99 1.31 0.94 –
TRSM float OpenBLAS 2.94 3.24 1.45 1.07 –
TRSM double Arm Performance Libraries 2.06 1.96 1.13 0.95 –
TRSM double NVPL 31.11 2.46 1.05 0.87 –
TRSM double OpenBLAS 2.22 1.40 1.03 0.97 –
SYRK float Arm Performance Libraries 3.20 1.21 0.95 0.97 –
SYRK float NVPL 13.09 1.51 0.88 0.89 –
SYRK float OpenBLAS 0.99 0.98 0.98 1.01 –
SYRK double Arm Performance Libraries 2.78 0.99 0.91 0.99 –
SYRK double NVPL 10.28 1.15 0.85 0.87 –
SYRK double OpenBLAS 0.82 0.80 0.95 1.00 –
POTRF float Arm Performance Libraries 1.24 1.44 1.21 1.12 –
POTRF float NVPL 6.32 1.52 1.37 0.99 –
POTRF float OpenBLAS 1.51 0.95 1.11 1.00 –
POTRF double Arm Performance Libraries 1.18 1.19 1.10 1.06 –
POTRF double NVPL 5.18 1.24 1.14 0.93 –
POTRF double OpenBLAS 1.41 0.76 0.93 0.97 –
GETRF float Arm Performance Libraries 1.24 1.31 1.67 1.19 –
GETRF float NVPL 6.01 3.01 1.32 0.99 –
GETRF float OpenBLAS 2.19 1.66 1.18 1.02 –
GETRF double Arm Performance Libraries 1.01 1.40 1.56 1.01 –
GETRF double NVPL 5.64 2.14 1.07 0.89 –
GETRF double OpenBLAS 1.98 1.08 0.90 0.92 –
GEQRF float Arm Performance Libraries 0.63 0.91 1.43 1.06 –
GEQRF float NVPL 0.88 0.83 0.97 0.93 –
GEQRF float OpenBLAS 1.26 1.19 1.08 1.10 –
GEQRF double Arm Performance Libraries 0.55 0.91 1.07 0.90 –
GEQRF double NVPL 0.84 0.85 0.87 0.86 –
GEQRF double OpenBLAS 1.21 1.21 0.96 0.98 –
SYEV float Arm Performance Libraries 2.01 1.98 2.49 2.70 –
SYEV float NVPL 2.05 2.03 2.30 2.28 –
SYEV float OpenBLAS 1.61 1.90 2.31 2.34 –
SYEV double Arm Performance Libraries 1.73 1.43 1.59 1.63 –
SYEV double NVPL 1.75 1.47 1.39 1.27 –
SYEV double OpenBLAS 1.43 1.41 1.41 1.30 –
GESDD float Arm Performance Libraries 1.98 0.90 1.44 1.79 –
GESDD float NVPL 2.09 1.00 1.08 1.02 –
GESDD float OpenBLAS 1.64 0.84 1.05 1.03 –
GESDD double Arm Performance Libraries 1.56 0.68 1.17 1.70 –
GESDD double NVPL 1.67 0.71 0.84 0.86 –
GESDD double OpenBLAS 1.34 0.63 0.82 0.86 –
GEEV float Arm Performance Libraries 2.75 1.13 0.46 – –
GEEV float NVPL 3.71 1.70 0.46 – –
GEEV float OpenBLAS 2.51 1.36 0.42 – –
GEEV double Arm Performance Libraries 2.30 0.96 0.44 – –
GEEV double NVPL 3.46 1.33 0.40 – –
GEEV double OpenBLAS 2.40 1.12 0.38 – –

Caveats

  • The libraries are not held to NEON: each selects its kernels at run time for the CPU it finds, so the library rows here and on the SVE page are the same measurements, and only Eigen’s build differs between the two pages.
  • OpenBLAS 0.3.34 is built from source for the Neoverse V2 target. Ubuntu 24.04’s packaged 0.3.26, what apt install libopenblas-dev gives and what the September measurement used, predates that target and runs its Neoverse V1 kernels; the newer release is 16 % faster across the cells in geometric mean, most in GEMV (1.5x) and POTRF (1.3 to 1.4x).
  • NVPL’s fixed cost per call, 29 ns for AXPY and DOT at n = 2 against 3 and 1 ns for Eigen, sets its ratios at the smallest sizes; those cells say nothing about its kernels.
  • The machine is a shared 72-core server. Every run took place with the rest of the machine idle, 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 together with the load average before and after each run.
  • Eigen was compiled for the Armv8-A baseline that GCC targets by default; -mcpu=neoverse-v2 was not tried, and would change the compiler’s scheduling rather than Eigen’s kernels.
  • 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 three passes against the library’s rate from the same binary.

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.3 0.5 2.78 0.1 9.30 0.8 1.50
3 1.9 0.7 2.70 0.2 9.38 1.2 1.61
4 2.5 1.1 2.30 0.3 9.21 1.4 1.81
6 3.8 1.5 2.60 0.4 9.54 1.8 2.15
8 5.0 2.2 2.30 0.5 9.36 3.9 1.30
12 7.6 3.0 2.50 0.8 9.50 4.4 1.70
16 10.1 4.2 2.40 1.0 9.61 7.0 1.45
24 15.0 5.8 2.57 1.5 9.72 9.5 1.58
32 16.8 7.2 2.33 2.0 8.42 11.2 1.50
48 18.9 9.8 1.93 2.8 6.66 13.7 1.38
64 18.1 11.2 1.51 3.6 4.98 15.2 1.23
96 20.5 15.0 1.37 5.0 3.58 16.8 1.22
100 17.6 15.0 1.00 5.2 3.41 15.8 1.31
128 20.8 17.3 1.21 6.3 3.31 17.6 1.17
192 21.9 19.7 1.11 8.1 2.69 19.0 1.16
256 21.0 21.6 0.97 9.5 2.14 17.4 1.27
384 23.5 23.7 1.00 12.3 1.91 20.1 1.01
512 22.1 24.9 0.89 14.1 1.57 20.3 1.09
768 22.8 26.2 0.88 15.8 1.44 20.7 1.10
1000 23.6 26.8 0.88 18.0 1.31 21.0 1.12
1001 23.5 26.7 0.88 17.9 1.31 21.0 1.12
1024 23.6 26.8 0.88 18.1 1.30 20.9 1.13
1536 23.6 27.6 0.86 19.2 1.23 20.9 1.13
2048 24.0 27.3 0.88 20.4 1.17 21.3 1.13
3072 24.4 27.9 0.88 21.8 1.12 21.2 1.15
4096 24.6 28.1 0.88 22.5 1.09 21.2 1.16
6144 24.8 27.6 0.90 23.4 1.06 19.6 1.26
8192 24.7 27.5 0.90 23.7 1.04 20.3 1.21
10000 23.7 24.5 0.97 23.2 1.03 18.1 1.31
12288 23.4 23.0 1.02 23.2 1.03 18.9 1.24
16384 20.3 20.0 1.02 19.8 1.02 16.4 1.24
32768 20.3 20.1 0.99 20.2 1.01 16.5 1.23
65536 19.7 17.7 1.01 19.9 1.01 16.5 1.20
100000 17.5 17.8 1.03 17.3 1.02 15.8 1.10
131072 19.0 19.1 1.02 18.7 0.99 16.3 1.16
262144 19.3 19.1 1.01 19.1 1.01 16.4 1.16
524288 16.4 16.4 0.99 16.3 1.01 16.2 1.01
1000000 15.0 15.1 0.99 15.8 0.98 14.3 1.01
1048576 15.8 15.8 1.00 15.5 1.02 16.0 0.98
2097152 15.5 15.2 1.02 12.1 1.00 14.9 1.04
4194304 14.5 14.4 1.01 14.2 1.00 14.5 1.00
8388608 12.5 12.2 1.02 12.4 1.00 12.3 1.02
16777216 9.0 9.0 1.00 9.1 0.99 9.0 1.01
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.3 0.5 2.40 0.1 9.30 0.9 1.38
3 1.9 0.7 2.60 0.2 9.41 1.2 1.51
4 2.5 1.1 2.40 0.3 9.35 1.5 1.74
6 3.8 1.5 2.60 0.4 9.44 2.1 1.80
8 5.0 2.1 2.40 0.5 9.60 2.5 2.00
12 7.5 2.8 2.67 0.8 9.67 3.2 2.37
16 8.9 3.7 2.38 1.0 8.83 3.6 2.52
24 10.0 4.9 2.05 1.4 6.93 4.1 2.45
32 9.2 5.6 1.63 1.8 4.98 9.4 1.01
48 10.2 6.8 1.34 2.5 4.04 8.1 1.27
64 10.2 8.4 1.20 3.2 2.94 11.7 0.88
96 11.1 9.9 1.12 4.3 2.24 12.5 0.89
100 11.1 10.0 1.11 3.9 2.47 12.2 0.91
128 9.6 11.0 1.04 5.2 1.85 13.2 0.73
192 11.7 12.1 0.96 6.5 1.80 13.6 0.86
256 10.9 12.8 0.86 7.4 1.49 14.0 0.77
384 11.4 13.4 0.86 8.0 1.43 14.4 0.80
512 11.8 13.8 0.86 9.3 1.27 14.5 0.81
768 11.8 13.9 0.85 9.8 1.21 14.7 0.80
1000 12.0 14.5 0.83 10.3 1.16 14.7 0.82
1001 12.0 14.4 0.83 10.3 1.16 14.6 0.82
1024 12.0 14.4 0.83 10.4 1.16 14.8 0.81
1536 12.2 14.5 0.84 11.0 1.11 14.9 0.82
2048 12.3 14.4 0.86 11.3 1.08 14.9 0.83
3072 12.4 13.9 0.90 11.7 1.06 12.3 1.01
4096 12.3 13.8 0.89 11.9 1.04 11.9 1.04
6144 11.6 11.5 0.97 11.6 1.04 10.6 1.10
8192 10.2 10.0 1.02 9.9 1.02 9.2 1.11
10000 10.9 10.7 1.01 10.7 1.01 10.2 1.07
12288 10.2 10.1 1.01 10.1 1.01 9.1 1.12
16384 10.2 10.1 0.99 10.1 1.01 9.1 1.12
32768 9.7 9.1 0.92 10.0 1.01 9.0 1.08
65536 9.5 9.7 0.97 9.3 1.01 8.9 1.08
100000 9.8 9.8 1.01 9.8 0.98 8.8 1.12
131072 9.7 9.7 1.01 9.7 1.00 8.9 1.09
262144 8.2 8.2 1.00 8.2 1.00 7.3 1.12
524288 7.9 7.9 1.00 7.9 1.00 6.7 1.17
1000000 6.6 6.4 1.01 7.1 0.98 6.0 1.09
1048576 7.7 7.7 1.00 6.9 1.07 6.4 1.20
2097152 6.8 7.0 0.97 7.1 0.83 6.1 1.17
4194304 6.3 6.3 0.99 6.2 0.99 6.4 0.99
8388608 4.6 4.6 0.99 4.5 1.02 4.4 1.04
16777216 3.6 3.6 1.00 3.6 1.00 3.4 1.05
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 4.9 0.7 7.60 0.1 35.05 0.9 5.20
3 5.8 1.0 6.31 0.2 28.43 1.4 3.11
4 11.3 1.5 7.64 0.3 41.41 1.9 5.82
6 10.5 2.0 5.37 0.4 26.00 2.7 3.90
8 16.8 2.8 6.01 0.5 30.58 3.6 4.67
12 21.1 4.0 5.31 0.8 25.68 5.0 4.18
16 21.1 5.3 3.93 1.1 19.68 6.3 3.37
24 23.5 7.4 3.20 1.6 14.85 8.4 2.79
32 24.6 9.5 2.60 2.1 10.61 10.3 2.38
48 26.1 12.6 2.07 3.0 8.74 13.5 1.93
64 27.6 15.1 1.82 3.8 7.42 15.5 1.77
96 29.4 18.5 1.59 5.2 5.78 18.9 1.54
100 29.4 19.1 1.53 5.3 5.58 19.1 1.54
128 31.6 21.0 1.46 6.3 5.05 21.2 1.49
192 32.9 23.4 1.43 7.7 4.25 22.2 1.42
256 33.8 24.0 1.41 8.6 3.90 23.3 1.46
384 33.0 25.6 1.29 9.6 3.43 24.6 1.35
512 34.9 26.2 1.31 10.2 3.42 25.4 1.37
768 35.4 26.1 1.35 10.9 3.25 25.8 1.39
1000 36.2 26.0 1.38 11.3 3.22 25.5 1.42
1001 36.8 25.9 1.43 11.2 3.28 25.5 1.44
1024 35.4 25.9 1.36 11.3 3.12 25.5 1.39
1536 36.3 25.7 1.42 11.7 3.10 25.5 1.43
2048 35.8 25.4 1.41 11.9 3.00 25.5 1.44
3072 37.1 25.4 1.46 12.1 3.06 25.3 1.46
4096 33.1 25.5 1.30 12.2 2.81 25.3 1.30
6144 29.6 25.2 1.17 12.4 2.47 24.7 1.20
8192 28.9 25.1 1.14 12.4 2.50 24.4 1.18
10000 26.1 24.9 1.04 12.4 2.10 25.0 1.05
12288 25.1 24.9 1.02 12.5 2.00 24.7 1.02
16384 22.7 22.6 1.00 12.5 1.81 22.5 1.01
32768 23.5 23.5 1.00 12.6 1.87 23.2 1.01
65536 23.3 23.1 1.02 12.6 1.85 18.7 1.03
100000 20.0 19.4 1.03 12.4 1.69 18.8 1.02
131072 21.5 21.1 0.99 12.5 1.72 21.4 1.02
262144 18.8 18.6 1.01 12.6 1.49 18.6 0.99
524288 16.8 16.8 1.00 12.6 1.34 16.8 1.00
1000000 16.1 16.1 1.00 12.5 1.26 16.2 1.00
1048576 16.1 16.2 1.00 12.5 1.29 16.1 1.00
2097152 15.8 15.7 1.00 12.6 1.26 15.8 1.00
4194304 15.3 15.3 1.00 12.3 1.25 15.2 1.00
8388608 12.2 12.3 1.01 8.5 1.42 12.2 1.00
16777216 9.7 9.7 1.00 9.5 1.03 9.7 1.00
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.68 0.1 30.36 1.0 4.33
3 6.3 0.9 7.00 0.2 30.63 1.3 4.67
4 8.4 1.3 6.34 0.3 31.04 1.8 4.67
6 9.5 1.7 5.50 0.4 23.42 2.5 4.34
8 10.1 2.7 3.80 0.5 18.82 3.2 3.20
12 12.2 3.3 3.81 0.8 15.08 4.3 2.82
16 13.0 4.8 2.74 1.0 11.11 5.3 2.45
24 13.7 6.6 2.08 1.5 9.25 6.8 1.99
32 13.8 7.4 1.83 1.9 7.38 7.9 1.74
48 14.5 8.6 1.69 2.6 5.69 9.4 1.51
64 16.0 9.6 1.60 3.2 4.95 10.6 1.52
96 16.7 11.7 1.43 3.9 4.24 11.5 1.37
100 17.0 11.5 1.48 4.0 4.25 11.5 1.48
128 17.1 11.7 1.49 4.3 3.90 11.9 1.44
192 16.5 12.2 1.36 4.8 3.40 12.6 1.31
256 17.9 12.8 1.32 5.1 3.49 12.9 1.39
384 17.4 13.3 1.30 5.5 3.16 13.2 1.37
512 18.4 13.9 1.33 5.7 3.21 13.0 1.42
768 18.1 14.3 1.27 5.9 3.07 12.8 1.45
1000 18.5 14.5 1.28 6.0 3.10 12.7 1.45
1001 18.6 14.6 1.28 5.9 3.13 12.7 1.45
1024 18.4 14.5 1.28 6.0 3.08 12.7 1.45
1536 18.6 14.7 1.27 6.1 3.05 12.7 1.47
2048 16.3 13.6 1.20 6.1 2.66 12.6 1.29
3072 14.7 12.6 1.17 6.2 2.44 12.6 1.17
4096 14.6 11.8 1.23 6.2 2.45 12.2 1.20
6144 12.5 11.8 1.07 6.2 2.00 12.4 1.02
8192 11.3 9.6 1.18 6.3 1.80 11.3 1.01
10000 11.9 10.8 1.10 6.3 1.90 11.9 1.00
12288 11.7 10.0 1.17 6.3 1.87 11.6 1.01
16384 11.7 10.0 1.18 6.3 1.87 11.6 1.01
32768 11.7 10.0 1.17 6.3 1.85 9.5 1.04
65536 10.9 9.9 1.09 6.3 1.77 11.0 0.98
100000 10.7 9.7 1.07 6.3 1.75 10.6 1.01
131072 9.3 9.8 0.98 6.3 1.46 9.1 1.02
262144 8.4 8.1 1.04 6.3 1.34 8.3 1.00
524288 8.1 7.7 1.05 6.3 1.29 8.0 1.01
1000000 7.8 7.5 1.04 6.2 1.26 7.8 0.99
1048576 7.9 7.4 1.05 6.3 1.26 7.9 1.00
2097152 7.6 7.0 1.06 6.1 1.26 7.6 1.00
4194304 6.1 6.2 0.99 4.3 1.39 6.1 1.00
8388608 4.8 4.8 1.01 4.8 1.02 4.9 1.00
16777216 3.7 3.5 1.05 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.5 0.2 6.15 0.1 11.20 0.6 2.52
3x3 2.5 0.5 4.60 0.3 8.80 1.4 1.79
4x4 5.3 0.9 5.68 0.5 10.90 2.3 2.23
6x6 7.8 2.0 3.93 1.0 8.11 4.6 1.53
8x8 15.6 3.4 4.54 2.2 7.17 7.1 2.20
12x12 26.1 5.7 4.59 3.7 7.05 13.4 1.94
16x16 34.2 8.7 3.92 7.2 4.75 16.6 2.05
24x24 33.3 15.7 2.14 12.8 2.59 24.2 1.37
32x32 50.4 21.2 2.38 17.5 2.88 26.9 1.86
48x48 51.3 29.6 1.74 23.9 2.15 31.8 1.61
64x64 55.9 32.5 1.72 28.3 1.97 32.7 1.71
96x96 55.7 36.1 1.55 31.3 1.73 35.0 1.59
100x100 48.6 38.6 1.24 32.5 1.51 30.3 1.60
128x128 49.4 36.3 1.36 32.8 1.52 35.4 1.40
192x192 38.0 31.6 1.22 31.6 1.20 31.8 1.19
200x200 36.8 38.3 0.96 35.2 1.06 36.2 1.01
256x256 36.1 30.8 1.17 31.1 1.16 35.6 0.99
257x257 28.4 25.1 1.14 24.2 1.17 30.8 0.92
384x384 33.7 29.8 1.14 30.0 1.12 30.4 0.96
500x500 29.8 31.4 0.95 30.3 1.01 34.4 0.82
512x512 29.0 26.4 1.07 26.2 1.15 33.7 0.86
768x768 28.8 25.9 1.06 26.6 1.08 29.2 0.98
1000x1000 28.9 29.6 0.98 28.3 1.02 34.5 0.84
1001x1001 26.1 27.6 0.95 26.2 1.00 30.5 0.86
1024x1024 22.5 22.7 0.97 25.7 0.87 33.1 0.69
1536x1536 26.8 25.8 1.02 26.6 1.01 29.2 0.93
2048x2048 19.1 21.0 0.89 24.3 0.79 29.0 0.71
3072x3072 23.2 22.5 1.03 25.6 0.92 26.0 0.87
4096x4096 16.4 15.8 1.05 16.5 0.98 15.4 1.06
4097x4097 14.9 10.9 1.29 14.0 1.09 17.4 0.85
6144x6144 15.4 17.4 0.89 17.8 0.87 19.5 0.79
8192x8192 12.9 13.5 0.95 13.8 0.92 15.2 0.85
12288x12288 11.3 11.7 0.97 12.2 0.92 12.7 0.89
16384x16384 11.2 10.5 1.06 11.4 0.98 11.9 0.94
8x10000 28.9 17.5 1.65 15.7 1.85 10.7 2.68
100x10000 22.1 23.6 0.94 22.2 0.99 29.1 0.76
1000x10000 24.7 25.6 0.96 23.9 0.99 27.6 0.90
4000x10000 17.1 17.4 0.99 17.3 0.99 19.5 0.88
10000x8 37.6 36.2 1.00 37.6 1.00 29.5 1.27
10000x100 14.9 32.1 0.47 32.1 0.46 32.8 0.45
10000x1000 28.1 27.1 1.01 27.2 1.03 26.8 1.05
10000x4000 18.3 18.8 0.98 18.5 0.99 19.6 0.93
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.6 0.2 6.48 0.1 11.82 0.6 2.72
3x3 2.6 0.5 4.74 0.3 9.22 1.3 1.99
4x4 5.0 1.0 5.32 0.5 10.68 2.1 2.37
6x6 9.0 2.0 4.46 1.0 9.22 4.2 2.11
8x8 12.5 2.7 4.70 2.1 6.01 5.8 2.17
12x12 15.2 5.3 2.89 3.4 4.49 9.9 1.54
16x16 22.5 7.4 3.05 6.0 3.76 11.7 1.94
24x24 24.2 11.6 2.08 9.4 2.57 14.8 1.63
32x32 26.7 13.8 1.94 12.0 2.23 15.5 1.72
48x48 27.8 16.6 1.68 15.2 1.83 17.0 1.64
64x64 26.4 18.2 1.45 16.1 1.64 17.4 1.49
96x96 24.0 17.4 1.38 16.6 1.45 17.9 1.31
100x100 21.8 19.5 1.12 17.3 1.27 18.1 1.20
128x128 19.3 15.9 1.21 16.1 1.21 17.8 1.07
192x192 17.1 15.4 1.14 15.5 1.09 16.9 1.01
200x200 17.5 18.0 0.98 17.4 1.00 17.8 0.96
256x256 17.0 14.6 1.16 15.2 1.14 15.9 1.03
257x257 14.7 14.8 1.00 13.5 1.09 15.0 0.91
384x384 15.3 13.7 1.11 13.8 1.11 14.9 1.04
500x500 15.6 16.2 0.97 15.1 1.04 17.8 0.87
512x512 12.1 11.8 1.02 13.6 0.89 17.1 0.70
768x768 14.3 13.2 1.06 13.8 1.04 14.4 0.99
1000x1000 14.3 14.7 0.97 14.1 1.01 16.0 0.89
1001x1001 14.0 14.6 0.97 13.8 1.02 15.5 0.90
1024x1024 9.6 10.5 0.89 12.1 0.80 15.8 0.65
1536x1536 11.8 11.5 0.99 12.7 0.93 14.1 0.85
2048x2048 8.9 8.8 1.02 11.1 0.80 13.6 0.66
3072x3072 9.0 10.1 0.90 9.1 0.98 7.3 1.23
4096x4096 7.8 8.0 0.98 8.7 0.89 10.5 0.75
4097x4097 5.9 5.9 0.98 6.6 0.88 10.7 0.71
6144x6144 6.3 6.5 0.96 6.8 0.92 7.3 0.85
8192x8192 6.0 5.9 1.01 6.1 0.98 6.4 0.92
12288x12288 5.6 5.6 1.02 5.7 0.99 5.9 0.95
16384x16384 5.4 4.3 1.18 4.8 1.12 5.7 0.96
8x10000 17.0 13.0 1.31 10.9 1.59 10.4 1.56
100x10000 11.1 12.2 0.94 12.3 0.90 15.8 0.70
1000x10000 11.9 11.1 1.06 9.7 1.22 13.6 0.88
4000x10000 6.6 6.8 0.97 6.8 0.98 7.2 0.93
10000x8 18.2 16.7 1.07 16.0 1.14 13.2 1.38
10000x100 7.3 15.3 0.47 15.1 0.48 14.7 0.50
10000x1000 11.6 13.0 0.96 13.0 0.89 11.8 0.98
10000x4000 6.6 6.8 0.97 6.9 0.96 7.2 0.93
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.1 0.5 2.10 0.2 4.80 0.3 3.31
3x3x3 2.0 1.0 1.87 0.7 2.86 0.9 2.20
4x4x4 9.3 1.9 4.88 1.5 6.22 2.5 3.78
6x6x6 6.2 3.4 1.83 4.2 1.47 5.1 1.19
8x8x8 15.4 5.7 2.71 11.0 1.41 12.5 1.23
12x12x12 28.4 7.9 3.62 16.8 1.69 25.7 1.10
16x16x16 39.3 15.5 2.55 32.6 1.21 39.8 0.97
24x24x24 56.6 33.5 1.69 56.2 1.01 50.9 1.10
32x32x32 63.9 45.6 1.40 67.2 0.95 64.3 0.98
48x48x48 72.3 62.4 1.16 79.5 0.91 73.5 0.98
64x64x64 73.9 67.3 1.10 81.9 0.90 76.4 0.96
96x96x96 78.8 78.2 1.01 88.3 0.89 78.7 1.00
100x100x100 78.9 76.4 1.03 83.9 0.94 75.3 1.03
128x128x128 81.0 82.4 0.98 90.7 0.89 80.1 1.00
160x160x160 82.1 85.5 0.96 91.6 0.90 81.3 1.01
192x192x192 83.6 87.8 0.95 93.5 0.91 81.4 1.03
200x200x200 85.2 89.1 0.96 93.6 0.91 81.5 1.04
224x224x224 84.9 88.6 0.96 93.3 0.91 82.3 1.03
256x256x256 83.7 88.6 0.94 91.1 0.92 82.2 1.02
257x257x257 81.1 85.9 0.95 89.2 0.90 78.7 1.03
288x288x288 84.4 88.8 0.92 93.7 0.91 81.9 1.03
320x320x320 83.4 89.3 0.93 93.4 0.89 82.0 1.02
384x384x384 83.6 90.3 0.93 92.7 0.90 81.5 1.02
448x448x448 83.7 90.9 0.92 93.3 0.90 82.0 1.02
500x500x500 84.9 91.4 0.92 94.6 0.90 81.7 1.04
512x512x512 84.4 92.1 0.92 94.1 0.89 82.4 1.02
768x768x768 84.9 94.2 0.90 95.2 0.89 83.0 1.02
1000x1000x1000 85.2 94.2 0.91 96.3 0.88 83.4 1.02
1001x1001x1001 84.4 93.5 0.91 95.6 0.88 82.7 1.02
1024x1024x1024 83.8 93.6 0.89 94.7 0.89 83.7 1.00
1536x1536x1536 84.0 94.6 0.89 96.2 0.88 83.0 1.00
2048x2048x2048 86.1 94.7 0.90 95.9 0.90 84.0 1.03
3072x3072x3072 85.0 94.1 0.90 96.2 0.88 84.0 1.02
4096x4096x4096 85.5 92.2 0.93 95.1 0.90 83.4 1.03
4097x4097x4097 84.0 91.4 0.93 94.9 0.88 82.9 1.01
64x64x1024 75.3 76.5 0.99 72.5 1.04 76.4 0.97
64x1024x64 76.7 72.1 1.06 86.9 0.88 78.2 0.98
256x256x1024 81.4 89.4 0.91 89.6 0.91 80.9 1.01
1024x64x64 76.4 23.8 3.22 79.2 0.96 78.1 0.96
1024x256x256 82.4 89.4 0.93 90.4 0.91 82.1 1.00
4096x96x96 76.0 81.1 0.94 80.6 0.95 79.4 0.95
4096x128x128 78.6 83.7 0.94 84.3 0.94 80.2 0.97
4096x144x144 78.7 84.9 0.93 84.5 0.93 80.7 0.97
4096x160x160 79.6 86.0 0.93 84.9 0.94 81.1 0.97
4096x176x176 80.1 86.8 0.92 86.6 0.92 81.3 0.98
8192x128x128 77.6 83.5 0.93 84.5 0.92 80.2 0.97
10000x8x8 41.5 32.5 1.28 38.8 1.07 55.1 0.71
10000x100x100 79.4 81.3 0.98 87.1 0.91 78.3 1.01
10000x1000x1000 82.5 94.0 0.88 96.3 0.86 83.8 0.97
10000x4000x4000 84.7 91.6 0.92 95.8 0.89 83.8 1.01
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.5 5.13 0.2 11.15 0.3 7.14
3x3x3 2.7 1.6 1.73 0.6 4.47 0.9 2.97
4x4x4 5.2 2.0 2.84 1.3 3.81 2.3 2.26
6x6x6 6.4 3.0 2.23 3.8 1.55 4.9 1.29
8x8x8 9.9 5.0 2.01 6.7 1.49 10.0 0.98
12x12x12 17.7 7.1 2.51 11.9 1.48 18.3 0.96
16x16x16 22.7 11.4 1.99 20.3 1.12 24.4 0.91
24x24x24 29.2 22.2 1.32 30.6 0.96 30.8 0.93
32x32x32 31.9 24.6 1.30 34.1 0.93 33.5 0.94
48x48x48 34.8 33.6 1.04 39.1 0.89 36.3 0.94
64x64x64 36.0 36.4 0.99 39.8 0.90 37.2 0.95
96x96x96 38.5 40.8 0.95 43.3 0.89 38.7 0.99
100x100x100 38.5 40.1 0.97 41.1 0.94 37.8 1.02
128x128x128 38.9 40.9 0.95 43.9 0.90 39.4 0.98
160x160x160 40.0 42.2 0.95 43.3 0.92 39.2 1.01
192x192x192 38.7 43.1 0.90 42.9 0.91 39.0 0.99
200x200x200 39.6 42.5 0.92 43.5 0.91 39.0 1.02
224x224x224 38.0 42.9 0.86 43.4 0.88 38.9 1.00
256x256x256 37.6 43.4 0.87 43.5 0.87 39.4 0.95
257x257x257 37.2 43.4 0.86 42.9 0.87 37.7 0.99
288x288x288 37.4 44.5 0.84 44.5 0.84 38.8 0.96
320x320x320 36.6 44.0 0.83 44.4 0.83 39.3 0.92
384x384x384 37.9 45.0 0.84 45.3 0.83 39.6 0.96
448x448x448 34.5 44.8 0.77 45.6 0.86 39.5 0.87
500x500x500 37.5 44.3 0.85 45.4 0.82 39.5 0.95
512x512x512 36.5 43.7 0.83 44.9 0.84 39.5 0.92
768x768x768 36.6 45.1 0.81 45.0 0.81 39.6 0.93
1000x1000x1000 36.1 45.4 0.87 46.2 0.78 39.9 0.90
1001x1001x1001 36.9 45.2 0.87 46.1 0.80 39.5 0.92
1024x1024x1024 35.3 44.8 0.82 44.9 0.79 39.2 0.90
1536x1536x1536 36.7 46.0 0.80 46.2 0.79 40.1 0.93
2048x2048x2048 34.9 45.3 0.84 45.9 0.76 40.0 0.87
3072x3072x3072 37.6 44.9 0.85 45.5 0.83 40.0 0.93
4096x4096x4096 35.7 45.0 0.77 45.4 0.87 39.8 0.90
4097x4097x4097 35.2 45.1 0.76 45.5 0.86 39.2 0.90
64x64x1024 34.0 36.8 0.90 38.3 0.90 36.8 0.92
64x1024x64 37.4 38.9 0.96 39.2 0.95 37.7 0.99
256x256x1024 37.3 43.3 0.89 43.9 0.85 39.3 0.94
1024x64x64 35.0 38.4 0.91 37.9 0.93 37.4 0.92
1024x256x256 37.2 44.1 0.84 44.3 0.84 39.8 0.92
4096x96x96 35.6 41.3 0.87 40.6 0.88 38.5 0.92
4096x128x128 36.6 41.2 0.89 42.0 0.87 39.1 0.93
4096x144x144 37.1 42.8 0.87 42.8 0.87 38.3 0.97
4096x160x160 37.3 42.7 0.87 42.7 0.87 38.4 0.96
4096x176x176 37.1 42.6 0.88 43.3 0.86 38.7 0.96
8192x128x128 35.5 41.2 0.86 41.9 0.86 39.1 0.91
10000x8x8 19.4 16.5 1.17 18.8 1.03 27.1 0.67
10000x100x100 37.2 41.9 0.89 40.8 0.91 38.0 0.97
10000x1000x1000 34.0 45.1 0.74 45.8 0.76 40.0 0.85
10000x4000x4000 36.9 45.1 0.84 45.1 0.82 39.8 0.89
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.4 0.3 1.30 0.0 57.62 0.2 1.62
3x3 0.9 0.7 1.35 0.0 47.89 0.4 2.10
4x4 3.0 1.9 1.60 0.0 73.92 1.1 2.66
6x6 4.1 1.6 2.48 0.1 32.23 1.8 2.32
8x8 12.6 2.0 6.38 0.3 44.80 3.1 4.14
12x12 17.6 4.5 3.87 0.8 22.96 5.1 3.32
16x16 28.8 4.9 5.83 1.4 20.25 4.4 6.58
24x24 34.0 7.8 4.37 3.7 9.24 7.3 4.60
32x32 41.1 8.9 4.61 5.4 7.55 8.4 4.89
48x48 46.9 11.9 3.93 10.6 4.43 12.1 3.88
64x64 50.3 12.6 4.00 13.4 3.77 15.3 3.28
96x96 53.9 29.9 1.80 21.5 2.51 21.2 2.54
100x100 53.1 29.5 1.80 20.3 2.61 21.9 2.42
128x128 55.4 38.1 1.45 26.6 2.10 26.0 2.13
192x192 62.9 50.0 1.26 36.2 1.73 33.8 1.87
200x200 63.1 52.2 1.21 37.1 1.69 34.7 1.83
256x256 68.1 52.5 1.30 42.5 1.60 39.5 1.73
257x257 64.5 53.9 1.19 41.1 1.57 38.4 1.68
384x384 69.9 60.1 1.17 52.4 1.33 47.3 1.47
500x500 73.3 66.6 1.10 58.4 1.26 52.4 1.40
512x512 72.1 62.3 1.15 59.4 1.21 53.2 1.36
768x768 75.5 71.3 1.06 68.6 1.10 60.7 1.25
1000x1000 78.2 77.2 1.01 73.9 1.06 64.8 1.21
1001x1001 76.1 74.0 1.03 72.9 1.04 63.8 1.20
1024x1024 76.9 67.6 1.14 73.4 1.05 65.2 1.19
1536x1536 79.8 78.2 1.02 80.7 0.99 70.6 1.13
2048x2048 80.7 73.6 1.10 83.6 0.96 73.9 1.10
3072x3072 81.1 76.7 1.06 87.0 0.93 76.3 1.07
4096x4096 81.1 78.3 1.04 88.3 0.92 77.8 1.05
4097x4097 79.0 82.4 0.96 87.9 0.90 77.0 1.03
64x4096 47.2 25.7 1.84 16.0 2.96 15.4 3.07
256x4096 64.8 47.6 1.36 43.8 1.50 39.2 1.65
1024x8 33.1 23.4 1.41 25.5 1.28 34.9 1.05
1024x64 67.6 50.0 1.35 58.9 1.14 59.8 1.16
1024x256 75.5 64.7 1.16 70.0 1.08 64.0 1.19
1024x4096 76.4 63.5 1.19 73.7 1.04 65.2 1.18
4096x8 29.5 22.8 1.28 28.6 1.03 41.8 0.81
4096x64 67.6 59.6 1.13 67.6 0.99 71.3 0.97
4096x256 78.9 69.4 1.14 83.2 0.95 76.6 1.04
4096x1024 81.6 78.9 1.03 87.8 0.93 77.9 1.05
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.38 0.0 57.76 0.2 1.64
3x3 0.9 0.6 1.48 0.0 46.00 0.4 2.04
4x4 2.7 2.0 1.33 0.0 62.60 1.1 2.48
6x6 4.2 1.4 2.94 0.1 31.74 1.8 2.33
8x8 8.6 3.5 2.43 0.3 31.87 3.1 2.64
12x12 11.5 4.3 2.72 0.7 15.51 5.0 2.27
16x16 15.4 5.0 3.03 1.4 10.81 6.7 2.30
24x24 18.7 6.2 3.04 3.3 5.61 9.6 1.95
32x32 20.8 6.8 3.07 4.9 4.25 11.8 1.76
48x48 23.5 8.1 2.90 8.8 2.67 15.7 1.50
64x64 25.0 11.4 2.19 11.4 2.20 18.5 1.35
96x96 26.8 20.7 1.30 16.4 1.63 22.6 1.19
100x100 26.8 21.6 1.24 15.8 1.70 22.9 1.17
128x128 27.1 23.1 1.16 19.5 1.40 24.9 1.09
192x192 30.8 26.6 1.16 24.6 1.25 28.4 1.09
200x200 31.3 28.2 1.11 24.9 1.24 29.1 1.08
256x256 32.0 25.9 1.24 27.0 1.18 30.3 1.07
257x257 31.7 25.3 1.26 26.3 1.19 29.5 1.08
384x384 33.5 28.3 1.18 32.1 1.04 32.5 1.04
500x500 33.7 30.8 1.09 34.2 0.99 34.0 1.00
512x512 34.0 29.5 1.15 34.6 0.98 34.0 1.01
768x768 35.7 32.3 1.10 37.4 0.95 35.9 1.01
1000x1000 37.0 34.9 1.06 39.3 0.93 37.2 1.00
1001x1001 36.3 33.6 1.07 39.3 0.92 36.6 0.99
1024x1024 36.5 33.7 1.08 39.3 0.92 36.9 1.00
1536x1536 37.5 37.5 1.00 41.6 0.89 38.0 0.99
2048x2048 37.1 37.9 0.98 42.1 0.88 38.2 0.98
3072x3072 37.4 39.4 0.95 43.1 0.87 38.7 0.97
4096x4096 37.3 39.9 0.94 43.5 0.86 39.0 0.96
4097x4097 36.6 40.1 0.91 43.4 0.84 38.5 0.96
64x4096 22.7 15.3 1.48 12.5 1.81 17.2 1.32
256x4096 31.0 25.5 1.21 27.3 1.13 29.9 1.04
1024x8 16.5 15.5 1.06 14.8 1.11 23.5 0.74
1024x64 32.6 31.3 1.04 33.3 0.97 35.1 0.95
1024x256 35.7 35.5 1.01 38.2 0.93 36.6 0.99
1024x4096 36.5 34.0 1.07 39.1 0.93 36.8 1.00
4096x8 13.7 13.5 1.01 12.6 1.08 23.3 0.62
4096x64 32.6 31.5 1.03 34.4 0.94 35.2 0.95
4096x256 36.4 38.7 0.94 41.6 0.88 38.0 0.96
4096x1024 36.9 39.1 0.95 43.4 0.85 38.9 0.96
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.44 0.0 20.83 0.2 0.91
3x3 0.4 0.1 3.74 0.0 17.07 0.4 0.90
4x4 1.0 0.2 4.21 0.1 19.76 1.0 0.98
6x6 2.1 0.7 3.00 0.2 13.23 2.2 0.94
8x8 5.0 1.5 3.33 0.4 14.17 4.6 1.09
12x12 8.3 3.7 2.26 1.1 7.73 8.5 0.99
16x16 15.1 6.9 2.19 2.3 6.45 13.3 1.14
24x24 24.6 15.4 1.60 6.8 3.63 23.8 1.04
32x32 33.0 23.7 1.39 13.0 2.53 32.4 1.02
48x48 43.6 35.3 1.23 28.4 1.54 46.0 0.95
64x64 52.4 44.6 1.17 40.8 1.28 53.6 0.98
96x96 59.6 58.7 1.02 59.9 1.00 63.6 0.94
100x100 60.2 53.4 1.13 56.8 1.06 60.6 0.99
128x128 64.7 62.9 1.03 69.1 0.94 68.3 0.94
192x192 72.0 73.2 0.98 79.1 0.91 73.3 0.97
200x200 73.4 73.6 1.00 80.6 0.91 72.9 0.99
256x256 73.7 77.7 0.96 81.7 0.90 75.5 0.97
257x257 69.9 75.2 0.95 77.3 0.90 71.0 0.97
384x384 75.3 82.0 0.91 86.0 0.88 77.3 0.97
500x500 77.0 82.3 0.94 87.7 0.88 77.5 0.99
512x512 75.8 80.4 0.94 88.5 0.86 78.3 0.97
768x768 79.2 84.5 0.94 91.8 0.86 80.7 0.98
1000x1000 82.1 86.4 0.95 93.9 0.87 81.1 1.01
1001x1001 80.5 86.0 0.94 92.0 0.88 80.0 1.00
1024x1024 79.5 82.2 0.97 91.6 0.87 81.9 0.97
1536x1536 83.7 86.6 0.97 94.5 0.89 82.9 1.01
2048x2048 84.0 86.6 0.97 94.4 0.89 83.1 1.01
3072x3072 84.6 87.2 0.97 95.2 0.89 83.3 1.01
4096x4096 84.4 87.1 0.97 94.3 0.90 83.3 1.01
4097x4097 83.8 87.4 0.96 93.8 0.89 82.5 1.02
64x4096 49.4 54.4 0.91 54.5 0.91 58.5 0.85
256x4096 70.0 72.8 0.96 82.0 0.85 75.0 0.94
1024x4096 80.4 83.0 0.97 91.6 0.88 81.8 0.98
4096x8 41.6 26.1 1.60 38.1 1.09 57.3 0.73
4096x64 77.2 72.3 1.07 82.0 0.94 80.5 0.96
4096x256 84.2 85.5 0.99 93.4 0.90 82.7 1.02
4096x1024 83.8 87.9 0.95 95.0 0.88 83.4 1.00
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.13 0.0 18.53 0.2 0.79
3x3 0.4 0.1 3.66 0.0 15.71 0.4 0.83
4x4 0.8 0.2 3.59 0.1 15.70 1.0 0.81
6x6 2.0 0.7 3.03 0.2 12.35 2.2 0.93
8x8 3.3 1.2 2.70 0.3 9.50 3.9 0.85
12x12 5.5 3.1 1.77 1.0 5.41 7.7 0.71
16x16 9.2 5.7 1.63 2.2 4.19 11.5 0.80
24x24 12.8 11.5 1.12 6.0 2.16 17.9 0.72
32x32 16.7 16.1 1.04 10.3 1.63 22.6 0.74
48x48 21.3 21.9 0.97 19.6 1.09 28.2 0.75
64x64 24.8 25.5 0.97 25.2 0.98 30.6 0.81
96x96 29.0 31.3 0.93 33.0 0.88 33.9 0.86
100x100 29.4 30.2 0.97 31.7 0.93 33.3 0.88
128x128 31.4 33.8 0.93 35.8 0.88 35.9 0.87
192x192 33.2 38.2 0.87 39.1 0.85 36.3 0.92
200x200 33.2 38.2 0.87 38.9 0.84 35.7 0.93
256x256 33.4 38.2 0.87 39.5 0.84 37.3 0.91
257x257 32.8 37.7 0.85 37.8 0.87 35.7 0.92
384x384 34.3 39.7 0.87 42.2 0.81 38.0 0.90
500x500 37.3 40.0 0.93 42.6 0.87 37.7 0.99
512x512 35.1 38.0 0.92 41.8 0.84 38.2 0.92
768x768 38.7 40.2 0.96 44.4 0.87 38.9 0.99
1000x1000 39.6 41.0 0.97 45.5 0.86 39.2 1.01
1001x1001 39.3 40.9 0.96 44.7 0.88 38.7 1.01
1024x1024 38.8 39.8 0.98 44.5 0.86 39.3 0.99
1536x1536 39.6 40.8 0.97 45.3 0.86 39.6 1.00
2048x2048 39.5 40.0 0.99 45.6 0.86 39.6 1.00
3072x3072 39.5 39.2 1.01 45.3 0.87 39.7 0.99
4096x4096 39.3 38.6 1.02 44.8 0.88 39.6 0.99
4097x4097 39.3 40.0 0.98 44.8 0.88 39.3 1.00
64x4096 24.1 27.0 0.90 29.5 0.81 30.5 0.79
256x4096 33.5 36.2 0.92 39.4 0.84 37.2 0.91
1024x4096 39.0 39.4 0.99 44.4 0.88 39.2 0.99
4096x8 20.6 15.0 1.37 23.2 0.89 29.3 0.70
4096x64 37.1 34.9 1.06 41.3 0.90 38.9 0.95
4096x256 39.8 38.8 1.02 44.8 0.89 39.8 1.00
4096x1024 39.2 39.3 1.00 45.3 0.86 39.7 0.99
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.3 0.2 1.70 0.0 18.54 0.1 2.62
3 0.6 0.4 1.67 0.0 12.65 0.2 2.42
4 0.9 0.6 1.37 0.1 8.67 0.4 1.92
6 1.3 1.3 0.98 0.3 4.95 1.1 1.20
8 2.0 2.1 0.97 0.5 3.90 1.7 1.14
12 3.6 3.4 1.03 1.0 3.55 3.4 1.07
16 5.2 4.3 1.21 1.8 2.88 5.0 1.00
24 8.5 3.5 2.44 3.7 2.31 8.1 1.04
32 7.3 4.9 1.50 5.6 1.29 10.0 0.73
48 11.2 7.6 1.47 9.0 1.23 10.9 1.02
64 14.4 10.9 1.32 11.8 1.21 15.1 0.96
96 19.7 17.4 1.13 15.0 1.30 22.0 0.90
100 19.6 16.0 1.23 11.4 1.70 21.1 0.93
128 30.1 23.7 1.27 16.2 1.86 27.7 1.10
192 37.4 32.5 1.15 24.6 1.52 34.7 1.08
200 38.3 33.9 1.13 23.2 1.64 33.5 1.15
256 47.1 37.8 1.25 28.2 1.63 40.7 1.16
257 44.4 37.1 1.21 28.5 1.54 39.7 1.12
384 56.4 45.1 1.26 38.2 1.47 50.2 1.12
500 59.8 52.8 1.13 43.2 1.37 50.4 1.19
512 58.5 49.5 1.19 43.0 1.34 54.5 1.07
768 65.9 53.0 1.24 53.7 1.22 61.3 1.08
1000 71.0 55.7 1.28 60.3 1.17 63.6 1.12
1001 67.7 52.8 1.28 58.9 1.14 62.7 1.08
1024 65.8 54.4 1.21 59.1 1.11 65.6 1.01
1536 73.6 63.5 1.16 69.3 1.06 71.7 1.03
2048 74.7 65.3 1.15 73.2 1.01 74.5 1.00
3072 77.2 69.4 1.11 79.0 0.98 77.2 1.00
4096 76.6 66.7 1.15 80.1 0.96 78.0 0.99
4097 74.7 72.3 1.03 79.8 0.93 77.7 0.96
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.3 0.2 1.42 0.0 18.49 0.1 2.76
3 0.5 0.4 1.23 0.0 10.48 0.2 2.07
4 0.7 0.6 1.20 0.1 7.01 0.4 1.59
6 1.1 1.2 0.94 0.3 3.84 0.9 1.14
8 1.6 1.4 1.17 0.5 3.02 1.6 1.03
12 3.0 2.8 1.11 1.1 2.74 3.0 1.02
16 4.5 3.6 1.24 1.9 2.33 4.3 1.03
24 6.4 3.1 2.05 3.7 1.75 6.3 1.02
32 5.2 4.6 1.13 5.2 0.99 7.8 0.67
48 7.3 6.4 1.15 7.4 0.99 9.4 0.78
64 8.9 8.1 1.10 8.5 1.05 12.4 0.72
96 11.5 11.9 0.97 9.7 1.19 16.8 0.69
100 11.6 10.8 1.07 8.4 1.38 16.3 0.71
128 16.4 14.6 1.12 10.9 1.50 19.8 0.83
192 19.5 18.3 1.06 16.1 1.21 23.3 0.84
200 19.9 19.0 1.05 15.2 1.31 23.1 0.86
256 23.8 19.8 1.20 17.9 1.31 25.2 0.95
257 23.3 19.6 1.20 18.6 1.23 25.1 0.93
384 27.1 24.5 1.10 22.6 1.20 28.3 0.96
500 28.8 26.4 1.09 25.7 1.12 29.2 0.99
512 28.1 24.7 1.14 24.7 1.13 30.0 0.95
768 31.9 30.3 1.05 30.5 1.05 33.4 0.96
1000 34.1 32.9 1.04 33.6 1.01 34.9 0.98
1001 33.4 31.9 1.04 33.2 1.01 34.6 0.97
1024 32.3 29.0 1.11 32.9 0.97 34.8 0.93
1536 35.1 33.6 1.05 36.5 0.96 36.6 0.96
2048 35.6 33.8 1.06 38.1 0.93 37.3 0.96
3072 37.0 34.2 1.08 39.4 0.94 37.7 0.98
4096 37.1 33.5 1.10 39.8 0.93 37.6 0.99
4097 36.8 36.2 1.02 40.7 0.90 37.8 0.97
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.2 0.2 1.41 0.0 11.46 0.1 2.35
3 0.5 0.3 1.42 0.1 8.44 0.2 2.31
4 0.8 0.6 1.40 0.1 6.82 0.4 2.05
6 1.4 1.2 1.22 0.3 4.63 0.7 2.04
8 2.0 2.0 1.02 0.5 3.78 1.0 2.07
12 3.4 3.2 1.07 1.0 3.25 1.5 2.20
16 4.7 4.0 1.22 0.6 7.51 2.0 2.34
24 6.6 6.4 1.03 1.7 3.98 3.7 1.77
32 9.0 6.7 1.34 2.1 4.37 4.7 1.93
48 13.8 9.9 1.39 4.2 3.31 8.0 1.73
64 17.6 13.0 1.36 5.4 3.25 9.8 1.79
96 23.4 17.0 1.38 10.2 2.29 16.0 1.47
100 24.0 18.5 1.30 9.9 2.40 16.5 1.45
128 30.0 21.3 1.41 13.7 2.16 19.6 1.53
192 36.2 18.4 1.98 21.6 1.66 28.0 1.29
200 37.6 19.3 1.95 22.6 1.63 28.5 1.32
256 43.7 26.3 1.66 27.3 1.59 33.5 1.31
257 42.2 31.2 1.35 27.4 1.53 32.6 1.31
384 51.3 26.7 1.94 37.5 1.36 42.2 1.22
500 54.3 34.1 1.60 43.3 1.25 46.9 1.16
512 54.1 28.4 1.91 42.9 1.26 47.2 1.15
768 60.1 39.1 1.54 52.1 1.15 55.6 1.08
1000 64.5 46.9 1.38 59.8 1.08 60.8 1.06
1001 62.9 43.1 1.46 59.1 1.06 59.9 1.05
1024 64.6 37.0 1.75 58.6 1.10 61.0 1.06
1536 69.9 55.8 1.26 68.1 1.02 67.5 1.04
2048 72.6 56.3 1.31 69.0 1.05 71.0 1.02
3072 77.0 64.0 1.21 78.9 0.98 74.6 1.03
4096 77.1 66.1 1.17 78.5 0.98 75.8 1.02
4097 75.2 72.8 1.04 79.1 0.95 75.2 1.00
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.27 0.0 11.85 0.1 2.22
3 0.5 0.4 1.21 0.1 8.51 0.2 2.11
4 0.7 0.7 1.05 0.1 6.22 0.4 1.86
6 1.4 1.5 0.96 0.3 4.61 0.7 1.88
8 2.0 2.2 0.90 0.5 3.67 1.0 1.96
12 3.1 3.3 0.90 1.1 2.89 1.6 1.96
16 3.8 4.3 0.89 0.6 5.90 2.0 1.91
24 5.1 4.2 1.22 1.6 3.12 3.6 1.41
32 6.6 5.7 1.17 2.0 3.27 4.8 1.39
48 9.1 6.7 1.39 3.8 2.38 8.0 1.10
64 11.0 8.8 1.26 5.0 2.18 10.2 1.06
96 13.6 9.6 1.44 8.6 1.58 14.6 0.92
100 13.9 8.7 1.61 8.5 1.63 15.0 0.91
128 16.4 8.9 1.86 11.0 1.49 17.6 0.93
192 19.2 9.3 2.07 16.1 1.20 22.2 0.86
200 19.9 9.8 2.04 16.6 1.19 22.4 0.88
256 22.9 13.1 1.76 19.0 1.20 24.7 0.92
257 22.6 13.6 1.66 19.1 1.18 24.0 0.93
384 25.4 14.4 1.76 23.3 1.09 27.5 0.91
500 26.9 18.1 1.49 26.0 1.03 29.6 0.90
512 26.8 16.1 1.67 24.2 1.11 29.6 0.90
768 29.5 22.9 1.29 30.2 0.98 32.6 0.90
1000 31.5 26.0 1.21 33.4 0.94 34.1 0.91
1001 30.9 25.8 1.20 33.2 0.93 33.7 0.91
1024 31.1 24.3 1.28 30.8 1.01 34.0 0.91
1536 33.2 28.2 1.19 35.1 0.95 35.8 0.93
2048 33.2 30.8 1.08 36.1 0.92 36.6 0.90
3072 34.5 35.0 0.99 38.9 0.89 37.4 0.92
4096 34.7 36.4 0.96 39.9 0.87 37.5 0.92
4097 34.2 38.6 0.88 40.8 0.84 37.1 0.92
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.52 0.1 1.24 0.1 1.21
3x3 0.2 0.3 0.59 0.2 0.91 0.2 1.13
4x4 0.3 0.5 0.60 0.4 0.83 0.3 1.17
6x6 0.7 1.0 0.63 0.8 0.79 0.5 1.25
8x8 1.1 1.6 0.63 1.4 0.79 0.8 1.30
12x12 2.2 3.0 0.69 2.6 0.83 1.6 1.36
16x16 3.4 4.4 0.76 3.9 0.87 2.4 1.45
24x24 6.0 7.1 0.83 6.6 0.90 4.3 1.40
32x32 8.0 9.4 0.85 9.0 0.90 6.2 1.32
48x48 12.4 13.0 0.95 13.3 0.92 9.4 1.31
64x64 9.6 15.2 0.63 16.4 0.59 11.9 0.81
96x96 18.1 17.4 1.04 20.8 0.87 15.1 1.20
100x100 16.1 17.6 0.91 21.5 0.75 15.6 1.03
128x128 22.3 18.2 1.23 23.7 0.94 16.5 1.35
192x192 32.2 17.8 1.81 33.6 0.96 26.3 1.23
200x200 32.7 18.0 1.81 34.6 0.94 31.7 1.03
256x256 37.9 16.8 2.24 39.4 0.96 32.0 1.18
257x257 36.8 17.8 2.07 39.6 0.93 37.3 0.99
384x384 47.3 35.0 1.35 48.4 0.98 42.9 1.10
500x500 52.6 48.5 1.09 54.2 0.97 51.2 1.03
512x512 50.9 45.0 1.13 51.3 0.99 47.1 1.08
768x768 58.4 47.2 1.24 57.8 1.01 54.3 1.07
1000x1000 62.8 54.4 1.15 66.0 0.95 60.7 1.03
1001x1001 61.4 54.4 1.13 64.7 0.95 59.1 1.04
1024x1024 61.2 49.5 1.23 60.1 1.02 55.7 1.10
1536x1536 66.9 58.5 1.14 69.5 0.96 62.3 1.08
2048x2048 68.6 60.5 1.13 70.8 0.97 60.7 1.13
3072x3072 71.9 68.5 1.05 77.1 0.93 65.3 1.10
4096x4096 71.2 68.9 1.03 77.7 0.92 63.0 1.13
4097x4097 68.8 70.6 0.97 78.9 0.87 63.6 1.09
4096x8 15.5 12.2 1.25 11.9 1.30 8.2 1.90
4096x64 16.7 14.7 1.14 22.8 0.72 15.9 1.07
4096x256 37.2 15.0 2.48 42.2 0.88 32.1 1.16
4096x1024 59.9 45.0 1.31 63.5 0.94 55.6 1.08
10000x8 15.4 11.6 1.32 11.8 1.31 8.2 1.88
10000x100 26.1 14.4 1.82 29.7 0.88 16.4 1.59
10000x1000 64.9 52.4 1.24 68.8 0.95 60.1 1.08
10000x4000 72.7 72.9 1.00 83.5 0.87 67.4 1.08
100000x8 13.2 10.1 1.30 10.3 1.28 7.6 1.72
100000x64 19.8 13.1 1.51 24.5 0.81 14.6 1.35
100000x256 38.6 9.9 3.93 44.3 0.86 28.4 1.36
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.44 0.1 1.09 0.1 1.13
3x3 0.2 0.4 0.48 0.2 0.85 0.2 1.10
4x4 0.3 0.6 0.49 0.4 0.79 0.3 1.11
6x6 0.6 1.0 0.54 0.8 0.77 0.5 1.18
8x8 1.0 1.6 0.58 1.3 0.78 0.8 1.22
12x12 1.9 2.8 0.66 2.4 0.80 1.5 1.34
16x16 3.0 4.0 0.72 3.6 0.84 2.1 1.40
24x24 4.9 6.0 0.79 5.5 0.88 3.3 1.47
32x32 6.3 7.4 0.83 7.1 0.89 4.3 1.47
48x48 8.6 9.3 0.90 10.2 0.84 6.9 1.25
64x64 7.1 10.2 0.69 11.8 0.60 8.2 0.86
96x96 11.6 11.1 1.04 12.3 0.94 10.1 1.16
100x100 10.7 11.1 0.96 11.2 0.96 10.3 1.05
128x128 13.4 10.3 1.30 15.4 0.87 10.0 1.34
192x192 17.6 10.2 1.71 20.4 0.86 16.2 1.09
200x200 17.9 10.3 1.75 20.6 0.86 19.3 0.94
256x256 19.0 18.8 1.01 22.3 0.85 19.3 0.99
257x257 19.1 20.1 0.94 22.2 0.86 21.6 0.89
384x384 22.8 23.0 0.98 26.0 0.88 24.2 0.94
500x500 25.3 26.0 0.97 28.7 0.88 27.5 0.93
512x512 24.5 24.2 1.00 26.9 0.91 25.5 0.96
768x768 27.7 28.9 0.96 31.2 0.89 29.4 0.94
1000x1000 29.4 31.5 0.93 34.1 0.87 31.3 0.94
1001x1001 29.1 31.4 0.92 33.7 0.87 30.8 0.95
1024x1024 28.7 29.6 0.97 32.2 0.89 29.8 0.96
1536x1536 30.8 33.3 0.92 35.3 0.88 31.9 0.97
2048x2048 30.9 34.1 0.90 36.0 0.86 32.5 0.96
3072x3072 32.6 36.1 0.90 38.3 0.87 32.9 0.99
4096x4096 32.5 36.0 0.90 38.7 0.85 32.5 1.00
4097x4097 32.3 36.1 0.89 39.3 0.83 32.2 1.00
4096x8 6.8 7.3 0.92 7.4 0.92 6.1 1.11
4096x64 8.2 9.3 0.88 14.2 0.57 9.3 0.89
4096x256 17.9 18.7 0.95 23.5 0.76 17.9 1.01
4096x1024 28.0 29.9 0.93 34.1 0.82 30.2 0.93
10000x8 6.6 6.7 0.99 8.8 0.75 5.9 1.13
10000x100 12.5 9.1 1.37 19.3 0.65 9.5 1.32
10000x1000 29.5 31.3 0.94 35.3 0.84 30.2 0.98
10000x4000 32.6 35.2 0.93 39.7 0.83 31.8 1.03
100000x8 5.8 5.8 1.01 7.5 0.78 5.4 1.08
100000x64 9.4 7.2 1.29 16.6 0.57 8.1 1.16
100000x256 17.2 16.4 1.05 23.0 0.75 14.9 1.16
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.6 0.4 1.52 0.4 1.66 0.4 1.59
3 0.7 0.3 2.13 0.3 2.38 0.4 1.60
4 1.0 0.4 2.50 0.4 2.30 0.6 1.77
6 1.4 0.7 2.03 0.7 2.16 1.0 1.48
8 2.0 1.0 2.10 1.0 2.10 1.3 1.61
12 3.3 1.6 2.05 1.7 1.98 2.0 1.62
16 4.4 2.3 1.88 2.4 1.87 2.8 1.57
24 6.9 3.6 1.90 3.7 1.87 4.1 1.68
32 9.0 4.8 1.88 4.7 1.89 5.2 1.72
48 12.3 6.5 1.89 5.8 2.11 6.7 1.84
64 15.0 7.6 1.99 7.3 2.01 7.8 1.94
96 18.5 9.1 2.04 8.7 2.09 9.2 2.01
100 18.9 9.3 2.03 8.9 2.12 9.4 2.01
128 21.0 9.8 2.14 9.8 2.16 9.8 2.15
192 25.0 11.0 2.26 11.1 2.25 11.4 2.18
200 25.4 11.0 2.32 11.3 2.25 11.4 2.23
256 27.0 11.3 2.38 12.0 2.24 12.0 2.25
257 28.4 11.4 2.48 12.1 2.35 12.1 2.34
384 30.2 12.0 2.50 13.0 2.32 12.9 2.33
500 31.4 12.4 2.53 13.6 2.32 13.4 2.33
512 30.4 12.1 2.51 13.6 2.26 13.3 2.28
768 31.7 12.5 2.53 14.2 2.25 13.8 2.29
1000 33.5 12.9 2.59 14.5 2.32 14.2 2.36
1001 35.8 13.0 2.76 14.5 2.47 14.1 2.53
1024 32.9 12.6 2.61 14.4 2.27 14.1 2.34
1536 34.1 13.1 2.60 14.8 2.31 14.4 2.36
2048 33.7 12.1 2.80 14.9 2.26 14.5 2.33
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.89 0.4 1.60
3 0.5 0.3 1.86 0.3 1.80 0.4 1.43
4 0.7 0.4 1.91 0.4 1.94 0.5 1.48
6 1.1 0.6 1.87 0.6 1.76 0.7 1.44
8 1.4 0.8 1.66 0.9 1.74 1.1 1.31
12 2.3 1.4 1.63 1.4 1.60 1.7 1.37
16 3.1 1.9 1.61 2.0 1.55 2.2 1.41
24 4.4 2.9 1.49 3.0 1.46 3.1 1.40
32 5.4 3.7 1.47 3.8 1.43 3.8 1.43
48 7.1 5.1 1.38 4.6 1.56 5.1 1.38
64 8.4 5.9 1.42 5.7 1.49 5.9 1.42
96 9.7 7.0 1.40 6.8 1.44 7.0 1.40
100 10.0 7.1 1.40 6.9 1.46 7.1 1.40
128 10.8 7.5 1.44 7.5 1.44 7.5 1.43
192 12.3 8.2 1.49 8.6 1.44 8.7 1.41
200 12.5 8.2 1.52 8.9 1.42 8.8 1.43
256 13.0 8.5 1.54 9.2 1.41 9.3 1.40
257 14.2 8.6 1.65 9.3 1.52 9.2 1.53
384 13.6 8.8 1.55 10.1 1.35 9.9 1.37
500 14.4 9.0 1.59 10.6 1.36 10.4 1.38
512 14.2 8.9 1.60 10.6 1.35 10.4 1.37
768 14.9 9.4 1.59 11.2 1.33 10.8 1.38
1000 15.4 9.8 1.58 11.3 1.37 11.1 1.39
1001 17.1 9.9 1.73 11.6 1.48 11.1 1.53
1024 14.9 9.2 1.62 11.5 1.30 10.9 1.36
1536 15.6 9.8 1.60 11.9 1.32 11.3 1.33
2048 13.8 8.3 1.66 11.0 1.22 11.0 1.26
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.8 0.2 8.09 0.2 9.86 0.2 7.74
3x3 1.3 0.4 3.63 0.3 4.02 0.5 2.93
4x4 1.4 0.5 2.64 0.5 2.76 0.7 2.07
6x6 1.5 1.0 1.52 1.0 1.57 1.3 1.19
8x8 1.8 1.5 1.15 1.5 1.21 1.9 0.93
12x12 2.2 2.6 0.84 2.7 0.79 3.2 0.69
16x16 3.8 3.6 1.05 3.7 1.04 4.3 0.87
24x24 5.6 5.6 0.99 5.6 1.00 6.4 0.87
32x32 7.8 8.9 0.87 8.5 0.91 10.0 0.78
48x48 12.7 14.1 0.90 11.8 1.09 15.0 0.85
64x64 17.1 20.9 0.81 17.5 0.98 21.9 0.78
96x96 27.1 29.7 0.91 26.7 1.01 31.1 0.87
100x100 28.1 30.9 0.91 27.5 1.02 32.6 0.86
128x128 34.8 37.5 0.92 35.5 0.99 40.2 0.86
192x192 50.3 44.2 1.14 46.3 1.09 50.1 1.00
200x200 52.6 46.5 1.13 48.0 1.10 53.3 0.99
256x256 59.0 46.8 1.26 53.6 1.11 54.1 1.09
257x257 61.0 47.3 1.29 56.2 1.09 62.4 0.98
384x384 75.9 52.9 1.44 68.1 1.11 68.3 1.11
500x500 86.7 59.6 1.46 81.7 1.06 85.8 1.01
512x512 83.2 55.1 1.51 76.1 1.09 76.2 1.09
768x768 95.7 58.0 1.65 88.5 1.08 86.9 1.10
1000x1000 105.9 63.3 1.68 101.9 1.04 102.9 1.03
1001x1001 106.0 60.2 1.76 101.2 1.05 102.2 1.04
1024x1024 97.0 55.4 1.75 90.8 1.07 88.3 1.10
1536x1536 111.1 64.3 1.73 107.1 1.04 104.6 1.06
2048x2048 103.7 56.0 1.86 104.1 1.00 103.9 1.00
4096x64 59.4 40.0 1.47 50.3 1.18 45.2 1.32
4096x256 102.0 43.1 2.36 89.2 1.14 82.0 1.25
4096x1024 115.4 50.3 2.30 110.5 1.04 104.0 1.11
10000x8 20.3 23.0 0.90 23.5 0.85 19.8 1.02
10000x100 86.4 49.2 1.75 64.7 1.34 49.1 1.77
10000x1000 143.2 70.8 2.02 143.4 1.00 132.9 1.08
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.6 0.2 7.63 0.2 9.16 0.2 7.02
3x3 0.9 0.3 2.79 0.3 3.04 0.4 2.33
4x4 1.0 0.5 2.06 0.5 2.03 0.6 1.68
6x6 1.0 0.9 1.15 0.8 1.26 1.1 0.95
8x8 1.2 1.3 0.92 1.2 1.00 1.5 0.77
12x12 1.3 2.2 0.63 2.1 0.62 2.4 0.55
16x16 2.3 3.0 0.77 2.9 0.83 3.2 0.71
24x24 3.2 4.4 0.73 4.3 0.75 4.4 0.73
32x32 4.4 6.7 0.66 6.5 0.66 7.0 0.63
48x48 6.5 10.2 0.64 8.7 0.75 10.4 0.63
64x64 8.5 14.0 0.61 12.6 0.66 14.6 0.58
96x96 12.5 18.5 0.67 18.0 0.70 20.2 0.62
100x100 13.1 19.2 0.68 18.3 0.71 21.1 0.61
128x128 15.9 20.9 0.76 22.0 0.70 24.7 0.65
192x192 22.3 24.8 0.89 28.4 0.79 30.3 0.74
200x200 23.5 26.6 0.89 29.9 0.79 32.6 0.71
256x256 26.7 26.8 1.00 32.7 0.82 33.9 0.79
257x257 27.4 27.4 0.99 33.6 0.81 36.8 0.75
384x384 33.8 29.2 1.16 40.0 0.85 40.5 0.84
500x500 39.3 32.0 1.23 45.9 0.86 47.7 0.82
512x512 37.0 28.8 1.29 41.7 0.88 41.6 0.90
768x768 44.2 32.6 1.36 50.3 0.88 49.5 0.89
1000x1000 49.1 34.8 1.41 56.0 0.88 56.4 0.87
1001x1001 49.1 35.0 1.40 56.0 0.88 56.1 0.88
1024x1024 43.5 29.5 1.48 51.2 0.85 50.1 0.87
1536x1536 50.8 32.1 1.58 57.0 0.89 56.1 0.91
2048x2048 46.8 25.6 1.83 56.3 0.83 57.1 0.82
4096x64 29.4 24.5 1.22 29.9 0.98 26.8 1.10
4096x256 48.7 30.6 1.59 49.7 0.98 46.1 1.05
4096x1024 53.4 27.1 1.97 59.5 0.89 56.3 0.95
10000x8 8.6 15.1 0.57 16.6 0.50 14.8 0.59
10000x100 41.9 29.0 1.45 37.1 1.13 28.5 1.46
10000x1000 65.6 35.3 1.86 73.3 0.89 67.3 0.98
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 2.0 0.3 7.66 0.2 12.34 0.3 7.90
3 1.0 0.3 3.08 0.2 4.04 0.4 2.56
4 1.4 0.5 2.99 0.4 3.70 0.6 2.26
6 1.9 0.9 2.24 0.7 2.85 1.0 2.04
8 2.8 1.3 2.13 1.0 2.84 1.5 1.92
12 4.2 2.2 1.96 1.7 2.51 2.3 1.96
16 5.4 3.0 1.80 2.1 2.58 3.1 1.77
24 7.3 5.3 1.40 3.3 2.24 4.5 1.65
32 8.5 7.2 1.18 4.1 2.06 5.6 1.57
48 10.6 10.9 0.98 5.8 1.78 7.6 1.40
64 11.5 13.5 0.84 7.0 1.64 8.9 1.30
96 13.5 10.5 1.29 8.7 1.54 10.3 1.30
100 13.6 11.1 1.22 9.1 1.49 10.8 1.25
128 14.3 13.0 1.09 10.9 1.31 12.9 1.13
192 15.5 22.9 0.68 18.6 0.82 21.5 0.72
200 16.1 24.8 0.65 19.7 0.81 23.3 0.70
256 16.5 28.2 0.59 24.0 0.68 27.8 0.60
257 16.2 28.4 0.57 24.3 0.67 27.8 0.58
384 14.3 36.2 0.40 34.6 0.41 38.7 0.37
500 17.1 42.6 0.40 43.4 0.39 47.9 0.36
512 17.3 31.4 0.56 33.0 0.52 36.0 0.48
768 17.8 43.5 0.41 47.5 0.37 52.8 0.34
1000 18.5 55.2 0.33 66.1 0.29 70.5 0.26
1001 17.8 54.2 0.33 66.3 0.27 69.7 0.26
1024 16.6 49.4 0.34 60.1 0.28 62.6 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 1.9 0.2 7.77 0.2 12.18 0.2 8.03
3 1.0 0.4 2.78 0.2 4.28 0.3 2.62
4 1.2 0.5 2.44 0.4 3.54 0.5 2.40
6 1.7 0.9 1.98 0.6 2.91 0.9 1.94
8 2.1 1.2 1.65 0.8 2.47 1.2 1.80
12 3.0 2.0 1.46 1.3 2.19 1.8 1.69
16 3.7 2.8 1.32 1.8 2.04 2.5 1.54
24 4.6 4.2 1.08 2.6 1.72 3.5 1.39
32 5.3 5.5 0.92 3.4 1.55 4.4 1.25
48 6.4 7.6 0.85 4.6 1.37 5.7 1.13
64 7.0 8.9 0.79 5.5 1.25 6.8 1.03
96 7.6 7.3 1.07 6.3 1.22 7.1 1.07
100 7.8 7.5 1.03 6.5 1.20 7.5 1.04
128 8.0 7.8 1.02 7.2 1.10 8.0 1.01
192 7.6 11.6 0.66 11.3 0.68 12.7 0.60
200 8.5 12.5 0.68 11.9 0.71 13.4 0.63
256 8.4 14.0 0.61 13.7 0.61 15.1 0.55
257 8.2 14.5 0.57 14.3 0.57 15.7 0.54
384 7.9 19.2 0.41 19.3 0.41 20.8 0.38
500 8.3 22.4 0.37 23.6 0.35 25.0 0.33
512 7.9 16.7 0.47 18.1 0.44 18.1 0.43
768 8.1 22.7 0.36 26.6 0.31 27.1 0.30
1000 8.3 28.0 0.29 35.0 0.24 35.3 0.24
1001 8.2 27.9 0.30 34.9 0.24 35.2 0.23
1024 7.4 23.9 0.31 30.5 0.24 31.2 0.24