Eigen vs. BLAS/LAPACK libraries, NVIDIA Grace with SVE (October 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 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_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.34 (built from source for its Neoverse V2 target; it replaces Ubuntu’s 0.3.26 of the September pages) 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-10-03 (24 runs, about 2.7 hours of measurement). Libraries: the NEON page’s session, 2026-10-02 to 2026-10-03, the 7.8 hours that ended as the SVE passes began
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 77 in float with Eigen built for SVE, against 35 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 39 and 84 (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 91 % of the cells, within 5 % for 95 % and above 10 % for 2 %; the widest is AXPY in float at n = 100, 14.8 against 21.3 GFLOP/s, and the rest of the top ten are AXPY and DOT cells below L2 and GEQRF at n = 2 and 3 (about 0.1 GFLOP/s), 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 1.1 % (3.6 against 3.7, 3.7 against 3.7 and 7.8 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.00 before and between 1.00 and 1.04 after a run, which is the run’s own core). 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: 380 cells are more than 5 % slower under SVE and 38 more than 5 % faster.

Operation Scalar n ≤ 16 24–128 192–1024 1536–16384 > 16384
AXPY float 1.25 1.06 1.02 0.98 0.99
AXPY double 1.18 1.06 0.99 1.00 1.00
DOT float 0.94 0.97 0.96 0.99 1.00
DOT double 0.99 0.97 0.99 1.00 1.00
GEMV float 0.85 0.90 0.97 0.99 –
GEMV double 0.91 0.88 0.99 1.00 –
GEMM float 0.82 0.81 0.91 0.93 –
GEMM double 0.95 0.98 0.98 0.96 –
TRSM float 0.65 0.55 0.76 0.89 –
TRSM double 0.94 0.74 0.88 0.94 –
SYRK float 1.01 0.98 0.95 0.94 –
SYRK double 1.01 0.98 0.96 0.97 –
POTRF float 0.75 0.98 0.94 0.92 –
POTRF double 0.87 0.97 0.96 0.96 –
GETRF float 0.68 0.77 0.84 0.90 –
GETRF double 0.90 0.95 0.94 0.94 –
GEQRF float 0.89 0.79 0.83 0.85 –
GEQRF double 0.87 0.94 0.97 0.97 –
SYEV float 0.93 0.94 0.98 1.02 –
SYEV double 0.99 1.02 1.00 1.02 –
GESDD float 0.97 0.91 0.92 0.93 –
GESDD double 1.00 0.97 0.98 0.97 –
GEEV float 1.05 1.01 0.99 – –
GEEV double 1.01 0.97 0.93 – –

The level-1 kernels and SYEV are unchanged, and AXPY below n = 16 gains about 20 % from a shorter inlined loop. Everything that runs on the matrix-product kernel loses: GEMM by 2 to 4 % in double and 7 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.55 of its NEON rate from n = 8 to 64 (28.8 against 13.3 GFLOP/s at n = 16), GETRF in float at 0.68 below n = 16 and 0.77 up to 128, GEQRF in float at 0.79 to 0.85 from n = 24 on. 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. Both builds solve TRSM faster than in September, the NEON build by more, so TRSM in double now trails it by 19 to 29 % from n = 16 to 128 (16 to 19 % in September); the NEON build’s GEEV has also gained, so GEEV in double trails it by 7 % from n = 192 to 1024. 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 4.1 ns for OpenBLAS, 6.3 ns for Arm Performance Libraries 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 is 22 to 25 % faster than the NEON build up to n = 16 in float and n = 8 in double, 6 % ahead on average from n = 24 to 128, within the binary-to-binary spread of those lengths, and level with it on average from n = 192 on; 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.

Within 4 % of the NEON build in every size band but the shortest float vectors (0.94 at n ≤ 16); 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 3 % of the NEON build on average from n = 192 on and 9 to 15 % 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 37 GFLOP/s in double and 77 to 80 in float from n = 512 on, 2 to 4 % and 7 to 9 % below the NEON kernel, so the gap to the vendor libraries widens to 24 % (double) and 16 to 18 % (float) from n = 1536 on. OpenBLAS 0.3.34, with its Neoverse V2 kernels, is ahead too: Eigen runs at 0.87 of it in double and 0.94 in float there.

At n = 3 to 6, and n = 2 in float, both builds are slower than in September, this one by 14 to 36 % (n = 3 in double: 2.1 against 3.3 GFLOP/s); the cause has not been bisected.

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.55 of its NEON rate from n = 8 to 64 and at 0.84 to 0.90 at n = 1024 and 4096; in double the loss is 5 to 29 %. Both builds are faster than in September, since master solves whole diagonal blocks with the shared packet kernel (libeigen/eigen!3187): this one by up to 18 % between n = 16 and 384, the NEON build by 10 to 26 %, which widens the gap in double. Above n = 192 Eigen is within 10 % of OpenBLAS 0.3.34 (ahead in float up to n = 1024, behind in double), and from n = 1536 on 9 to 19 % 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 on average below n = 128 and 3 to 6 % slower above; from n = 192 on 16 to 17 % behind NVPL, 4 to 8 % behind OpenBLAS 0.3.34, and 4 to 12 % behind 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.

4 % slower than under NEON in double and 6 to 8 % in float above n = 192; still ahead of the two vendor libraries from n = 24 to 1024 in double (1.05 to 1.20), but OpenBLAS 0.3.34’s dpotrf is faster there: Eigen runs at 0.75 of it from n = 24 to 128 and 0.90 up to 1024.

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.68 of its NEON rate up to n = 16 and 0.77 up to 128, at 0.84 and 0.90 in the two larger size bands; in double the loss is 5 to 10 %. NVPL’s getrf leads by 12 to 28 % in double from n = 1536 on, and OpenBLAS 0.3.34 by 15 to 16 % 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 float build loses 14 to 21 % from n = 64 on and the double build 2 to 4 %; from n = 192 on NVPL leads by 18 to 27 %, Arm Performance Libraries by 10 to 14 % at the largest sizes, and OpenBLAS 0.3.34, which the double build led in September, by 3 to 16 % in double from n = 200 on.

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 from September: in double within 2 % of the NEON build in every size band (only the odd sizes 257 and 1001 run at 0.90 to 0.92), in float 6 to 7 % slower below n = 192 and level above, so Eigen’s tridiagonal QR remains 1.3 to 1.7x faster than the libraries in double and 1.5 to 2.7x 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 September. The NEON build has gained 2 to 6 % in double since then, so this build now trails it by 7 % in double from n = 192 to 1024 and is level with it in float; EigenSolver stays at 7 to 8 GFLOP/s in double from n = 128 on while the libraries climb to 24 to 31 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.11 1.77 0.95 0.90 1.01
AXPY float NVPL 11.73 5.69 1.69 1.06 1.02
AXPY float OpenBLAS 2.03 1.38 1.16 1.18 1.07
AXPY double Arm Performance Libraries 2.92 1.39 0.85 0.95 1.00
AXPY double NVPL 11.03 3.69 1.31 1.04 1.00
AXPY double OpenBLAS 2.18 1.13 0.81 1.02 1.09
DOT float Arm Performance Libraries 5.43 1.92 1.32 1.20 1.00
DOT float NVPL 27.08 7.62 3.35 2.44 1.43
DOT float OpenBLAS 4.13 1.83 1.36 1.21 1.03
DOT double Arm Performance Libraries 4.78 1.61 1.29 1.18 1.05
DOT double NVPL 21.79 5.24 3.16 2.19 1.36
DOT double OpenBLAS 3.57 1.54 1.38 1.12 1.02
GEMV float Arm Performance Libraries 3.99 1.52 1.03 1.01 –
GEMV float NVPL 6.78 1.79 1.04 0.93 –
GEMV float OpenBLAS 1.74 1.42 0.90 0.86 –
GEMV double Arm Performance Libraries 3.95 1.34 1.01 1.01 –
GEMV double NVPL 6.62 1.49 1.00 0.94 –
GEMV double OpenBLAS 1.90 1.27 0.89 0.84 –
GEMM float Arm Performance Libraries 2.13 0.95 0.85 0.84 –
GEMM float NVPL 1.90 0.75 0.82 0.82 –
GEMM float OpenBLAS 1.41 0.82 0.94 0.94 –
GEMM double Arm Performance Libraries 2.29 1.04 0.82 0.76 –
GEMM double NVPL 2.46 0.90 0.81 0.76 –
GEMM double OpenBLAS 1.68 0.96 0.92 0.87 –
TRSM float Arm Performance Libraries 1.74 1.55 0.87 0.91 –
TRSM float NVPL 25.33 2.18 1.00 0.83 –
TRSM float OpenBLAS 1.90 1.77 1.10 0.95 –
TRSM double Arm Performance Libraries 1.94 1.46 1.00 0.89 –
TRSM double NVPL 29.33 1.83 0.93 0.81 –
TRSM double OpenBLAS 2.10 1.04 0.90 0.90 –
SYRK float Arm Performance Libraries 3.25 1.19 0.90 0.90 –
SYRK float NVPL 13.28 1.48 0.84 0.83 –
SYRK float OpenBLAS 1.00 0.96 0.94 0.95 –
SYRK double Arm Performance Libraries 2.80 0.97 0.88 0.96 –
SYRK double NVPL 10.28 1.13 0.83 0.84 –
SYRK double OpenBLAS 0.82 0.79 0.92 0.96 –
POTRF float Arm Performance Libraries 0.94 1.39 1.14 1.03 –
POTRF float NVPL 4.72 1.49 1.30 0.91 –
POTRF float OpenBLAS 1.14 0.92 1.04 0.92 –
POTRF double Arm Performance Libraries 1.02 1.16 1.05 1.01 –
POTRF double NVPL 4.53 1.20 1.09 0.89 –
POTRF double OpenBLAS 1.24 0.75 0.90 0.93 –
GETRF float Arm Performance Libraries 0.85 1.00 1.40 1.07 –
GETRF float NVPL 4.08 2.31 1.12 0.90 –
GETRF float OpenBLAS 1.50 1.27 0.99 0.92 –
GETRF double Arm Performance Libraries 0.92 1.32 1.46 0.95 –
GETRF double NVPL 5.01 2.03 1.01 0.84 –
GETRF double OpenBLAS 1.78 1.04 0.86 0.87 –
GEQRF float Arm Performance Libraries 0.60 0.72 1.19 0.91 –
GEQRF float NVPL 0.78 0.66 0.80 0.79 –
GEQRF float OpenBLAS 1.11 0.93 0.90 0.94 –
GEQRF double Arm Performance Libraries 0.52 0.87 1.04 0.88 –
GEQRF double NVPL 0.73 0.80 0.85 0.82 –
GEQRF double OpenBLAS 1.05 1.13 0.92 0.95 –
SYEV float Arm Performance Libraries 1.87 1.87 2.46 2.74 –
SYEV float NVPL 1.89 1.93 2.26 2.32 –
SYEV float OpenBLAS 1.49 1.80 2.28 2.39 –
SYEV double Arm Performance Libraries 1.71 1.45 1.59 1.66 –
SYEV double NVPL 1.74 1.48 1.39 1.31 –
SYEV double OpenBLAS 1.42 1.43 1.42 1.34 –
GESDD float Arm Performance Libraries 1.92 0.82 1.32 1.66 –
GESDD float NVPL 2.03 0.91 0.99 0.94 –
GESDD float OpenBLAS 1.58 0.76 0.96 0.95 –
GESDD double Arm Performance Libraries 1.55 0.66 1.14 1.65 –
GESDD double NVPL 1.68 0.69 0.82 0.84 –
GESDD double OpenBLAS 1.34 0.62 0.80 0.84 –
GEEV float Arm Performance Libraries 2.89 1.15 0.45 – –
GEEV float NVPL 3.96 1.73 0.46 – –
GEEV float OpenBLAS 2.57 1.36 0.41 – –
GEEV double Arm Performance Libraries 2.33 0.93 0.41 – –
GEEV double NVPL 3.48 1.30 0.37 – –
GEEV double OpenBLAS 2.40 1.07 0.35 – –

Caveats

  • The libraries were not measured again: their rows are the NEON page’s session, the 7.8 hours before the SVE passes 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.34 is built from the release tarball for its Neoverse V2 target, as the library reports at run time; the September pages used Ubuntu 24.04’s 0.3.26, which runs Neoverse V1 kernels on this CPU, so every OpenBLAS ratio differs from theirs. 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.
  • 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.47 0.1 11.64 0.8 1.88
3 2.4 0.7 3.37 0.2 11.74 1.2 2.01
4 3.2 1.1 2.87 0.3 11.53 1.4 2.27
6 4.7 1.5 3.24 0.4 11.95 1.8 2.69
8 6.3 2.2 2.87 0.5 11.70 3.9 1.62
12 9.4 3.0 3.09 0.8 11.77 4.4 2.11
16 12.3 4.2 2.93 1.0 11.77 7.0 1.77
24 15.6 5.8 2.68 1.5 10.22 9.5 1.65
32 18.3 7.2 2.54 2.0 9.19 11.2 1.64
48 19.6 9.8 2.01 2.8 6.92 13.7 1.44
64 21.1 11.2 1.89 3.6 5.80 15.2 1.38
96 22.2 15.0 1.48 5.0 4.45 16.8 1.32
100 18.0 15.0 1.20 5.2 3.49 15.8 1.14
128 20.9 17.3 1.21 6.3 3.32 17.6 1.18
192 23.2 19.7 1.18 8.1 2.85 19.0 1.22
256 23.7 21.6 1.10 9.5 2.50 17.4 1.36
384 24.3 23.7 1.03 12.3 1.97 20.1 1.21
512 22.0 24.9 0.89 14.1 1.56 20.3 1.09
768 21.2 26.2 0.81 15.8 1.34 20.7 1.03
1000 23.6 26.8 0.88 18.0 1.31 21.0 1.12
1001 23.6 26.7 0.88 17.9 1.32 21.0 1.12
1024 23.6 26.8 0.88 18.1 1.30 20.9 1.13
1536 23.5 27.6 0.85 19.2 1.22 20.9 1.13
2048 21.9 27.3 0.80 20.4 1.07 21.3 1.03
3072 22.1 27.9 0.79 21.8 1.01 21.2 1.04
4096 24.5 28.1 0.87 22.5 1.09 21.2 1.15
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 24.0 24.5 0.98 23.2 1.03 18.1 1.33
12288 23.8 23.0 1.04 23.2 1.03 18.9 1.26
16384 20.2 20.0 1.01 19.8 1.02 16.4 1.23
32768 20.3 20.1 1.01 20.2 1.01 16.5 1.23
65536 20.1 17.7 1.14 19.9 1.01 16.5 1.22
100000 17.7 17.8 1.00 17.3 1.03 15.8 1.12
131072 19.1 19.1 1.00 18.7 1.02 16.3 1.17
262144 19.4 19.1 1.01 19.1 1.02 16.4 1.18
524288 16.3 16.4 1.00 16.3 1.00 16.2 1.00
1000000 14.5 15.1 0.96 15.8 0.92 14.3 1.01
1048576 15.8 15.8 1.00 15.5 1.02 16.0 0.99
2097152 15.3 15.2 1.01 12.1 1.27 14.9 1.03
4194304 14.1 14.4 0.98 14.2 0.99 14.5 0.97
8388608 12.1 12.2 0.99 12.4 0.98 12.3 0.98
16777216 9.0 9.0 1.01 9.1 1.00 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.6 0.5 3.00 0.1 11.65 0.9 1.72
3 2.4 0.7 3.24 0.2 11.78 1.2 1.89
4 3.1 1.1 2.99 0.3 11.67 1.5 2.17
6 4.7 1.5 3.21 0.4 11.70 2.1 2.23
8 6.2 2.1 2.93 0.5 11.77 2.5 2.45
12 7.6 2.8 2.70 0.8 9.87 3.2 2.41
16 9.2 3.7 2.45 1.0 9.11 3.6 2.54
24 9.7 4.9 1.98 1.4 6.73 4.1 2.37
32 10.6 5.6 1.88 1.8 5.75 9.4 1.13
48 10.8 6.8 1.59 2.5 4.28 8.1 1.33
64 11.2 8.4 1.33 3.2 3.53 11.7 0.96
96 11.6 9.9 1.17 4.3 2.68 12.5 0.93
100 11.4 10.0 1.13 3.9 2.90 12.2 0.93
128 10.6 11.0 0.96 5.2 2.05 13.2 0.81
192 12.1 12.1 1.00 6.5 1.88 13.6 0.89
256 10.9 12.8 0.86 7.4 1.49 14.0 0.78
384 10.6 13.4 0.79 8.0 1.33 14.4 0.74
512 11.8 13.8 0.85 9.3 1.27 14.5 0.81
768 11.7 13.9 0.84 9.8 1.20 14.7 0.80
1000 11.9 14.5 0.83 10.3 1.16 14.7 0.81
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.15 14.8 0.81
1536 12.2 14.5 0.84 11.0 1.10 14.9 0.82
2048 12.2 14.4 0.85 11.3 1.08 14.9 0.82
3072 12.4 13.9 0.89 11.7 1.06 12.3 1.01
4096 12.3 13.8 0.90 11.9 1.04 11.9 1.04
6144 11.9 11.5 1.03 11.6 1.03 10.6 1.12
8192 10.1 10.0 1.01 9.9 1.02 9.2 1.10
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 1.01 10.1 1.01 9.1 1.12
32768 9.9 9.1 1.09 10.0 0.99 9.0 1.10
65536 9.5 9.7 0.97 9.3 1.02 8.9 1.06
100000 9.8 9.8 1.01 9.8 1.00 8.8 1.12
131072 9.7 9.7 1.00 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 0.99 7.9 1.00 6.7 1.17
1000000 6.4 6.4 1.00 7.1 0.90 6.0 1.05
1048576 7.6 7.7 1.00 6.9 1.12 6.4 1.19
2097152 7.0 7.0 0.99 7.1 0.98 6.1 1.15
4194304 6.1 6.3 0.96 6.2 0.97 6.4 0.95
8388608 4.5 4.6 0.98 4.5 1.00 4.4 1.02
16777216 3.7 3.6 1.01 3.6 1.01 3.4 1.06
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.6 0.7 6.85 0.1 32.62 0.9 4.81
3 6.1 1.0 6.08 0.2 29.51 1.4 4.26
4 9.9 1.5 6.66 0.3 36.34 1.9 5.14
6 9.7 2.0 4.86 0.4 23.92 2.7 3.59
8 16.8 2.8 5.99 0.5 30.57 3.6 4.67
12 19.0 4.0 4.76 0.8 23.26 5.0 3.77
16 19.3 5.3 3.62 1.1 17.93 6.3 3.06
24 21.3 7.4 2.88 1.6 13.48 8.4 2.53
32 23.6 9.5 2.48 2.1 11.39 10.3 2.29
48 25.7 12.6 2.04 3.0 8.63 13.5 1.90
64 27.2 15.1 1.80 3.8 7.25 15.5 1.75
96 29.5 18.5 1.59 5.2 5.69 18.9 1.56
100 29.1 19.1 1.52 5.3 5.46 19.1 1.53
128 31.4 21.0 1.50 6.3 5.00 21.2 1.48
192 32.0 23.4 1.37 7.7 4.14 22.2 1.44
256 32.0 24.0 1.33 8.6 3.74 23.3 1.37
384 33.6 25.6 1.32 9.6 3.51 24.6 1.37
512 34.0 26.2 1.30 10.2 3.33 25.4 1.34
768 34.5 26.1 1.32 10.9 3.16 25.8 1.34
1000 33.7 26.0 1.29 11.3 2.99 25.5 1.32
1001 33.3 25.9 1.29 11.2 2.97 25.5 1.31
1024 34.9 25.9 1.34 11.3 3.09 25.5 1.37
1536 35.2 25.7 1.37 11.7 3.01 25.5 1.38
2048 35.7 25.4 1.41 11.9 3.00 25.5 1.40
3072 35.7 25.4 1.41 12.1 2.95 25.3 1.41
4096 35.2 25.5 1.38 12.2 2.87 25.3 1.39
6144 28.0 25.2 1.11 12.4 2.27 24.7 1.14
8192 29.5 25.1 1.18 12.4 2.38 24.4 1.21
10000 26.1 24.9 1.05 12.4 2.10 25.0 1.05
12288 24.9 24.9 1.00 12.5 2.00 24.7 1.01
16384 22.3 22.6 0.99 12.5 1.79 22.5 0.99
32768 23.9 23.5 1.02 12.6 1.90 23.2 1.03
65536 23.0 23.1 1.00 12.6 1.83 18.7 1.23
100000 19.8 19.4 1.02 12.4 1.59 18.8 1.05
131072 21.8 21.1 1.03 12.5 1.74 21.4 1.02
262144 18.8 18.6 1.01 12.6 1.49 18.6 1.01
524288 16.8 16.8 1.00 12.6 1.33 16.8 1.00
1000000 16.1 16.1 1.00 12.5 1.28 16.2 0.99
1048576 16.1 16.2 0.99 12.5 1.28 16.1 1.00
2097152 15.7 15.7 1.00 12.6 1.25 15.8 1.00
4194304 15.1 15.3 0.99 12.3 1.23 15.2 0.99
8388608 12.3 12.3 1.00 8.5 1.45 12.2 1.01
16777216 9.8 9.7 1.00 9.5 1.03 9.7 1.01
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.66 0.1 30.37 1.0 4.34
3 6.3 0.9 6.99 0.2 30.69 1.3 4.68
4 8.4 1.3 6.33 0.3 31.10 1.8 4.68
6 10.1 1.7 5.84 0.4 24.95 2.5 3.99
8 10.1 2.7 3.80 0.5 18.87 3.2 3.21
12 11.7 3.3 3.53 0.8 14.79 4.3 2.71
16 11.9 4.8 2.46 1.0 11.57 5.3 2.24
24 13.4 6.6 2.03 1.5 9.04 6.8 1.96
32 13.3 7.4 1.81 1.9 7.03 7.9 1.69
48 14.9 8.6 1.73 2.6 5.66 9.4 1.57
64 15.9 9.6 1.66 3.2 4.92 10.6 1.50
96 16.2 11.7 1.39 3.9 4.12 11.5 1.41
100 15.8 11.5 1.37 4.0 3.97 11.5 1.38
128 16.2 11.7 1.39 4.3 3.74 11.9 1.36
192 17.0 12.2 1.39 4.8 3.51 12.6 1.35
256 17.4 12.8 1.36 5.1 3.40 12.9 1.35
384 17.4 13.3 1.30 5.5 3.17 13.2 1.32
512 17.5 13.9 1.26 5.7 3.08 13.0 1.34
768 17.7 14.3 1.24 5.9 3.01 12.8 1.38
1000 18.5 14.5 1.28 6.0 3.11 12.7 1.46
1001 18.2 14.6 1.24 5.9 3.05 12.7 1.43
1024 18.0 14.5 1.24 6.0 3.02 12.7 1.42
1536 17.9 14.7 1.22 6.1 2.95 12.7 1.41
2048 17.6 13.6 1.29 6.1 2.88 12.6 1.39
3072 14.0 12.6 1.11 6.2 2.26 12.6 1.11
4096 14.6 11.8 1.24 6.2 2.35 12.2 1.20
6144 12.5 11.8 1.06 6.2 2.00 12.4 1.01
8192 11.2 9.6 1.16 6.3 1.79 11.3 0.99
10000 12.2 10.8 1.13 6.3 1.95 11.9 1.03
12288 12.1 10.0 1.20 6.3 1.93 11.6 1.04
16384 11.9 10.0 1.19 6.3 1.90 11.6 1.03
32768 11.3 10.0 1.13 6.3 1.80 9.5 1.19
65536 11.0 9.9 1.11 6.3 1.76 11.0 1.00
100000 11.2 9.7 1.15 6.3 1.78 10.6 1.05
131072 9.4 9.8 0.96 6.3 1.49 9.1 1.03
262144 8.4 8.1 1.03 6.3 1.33 8.3 1.00
524288 8.0 7.7 1.04 6.3 1.28 8.0 1.00
1000000 7.9 7.5 1.05 6.2 1.27 7.8 1.00
1048576 7.8 7.4 1.05 6.3 1.25 7.9 0.99
2097152 7.4 7.0 1.06 6.1 1.23 7.6 0.98
4194304 6.1 6.2 0.99 4.3 1.42 6.1 1.01
8388608 4.9 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.0 0.2 4.24 0.1 7.76 0.6 1.75
3x3 1.9 0.5 3.47 0.3 6.65 1.4 1.35
4x4 5.2 0.9 5.50 0.5 10.58 2.3 2.22
6x6 6.0 2.0 2.99 1.0 6.18 4.6 1.29
8x8 14.4 3.4 4.18 2.2 6.60 7.1 2.03
12x12 24.6 5.7 4.32 3.7 6.64 13.4 1.84
16x16 32.3 8.7 3.70 7.2 4.48 16.6 1.95
24x24 32.7 15.7 2.09 12.8 2.55 24.2 1.35
32x32 43.7 21.2 2.06 17.5 2.50 26.9 1.62
48x48 46.2 29.6 1.56 23.9 1.94 31.8 1.45
64x64 48.1 32.5 1.48 28.3 1.70 32.7 1.47
96x96 49.1 36.1 1.36 31.3 1.57 35.0 1.40
100x100 44.0 38.6 1.14 32.5 1.35 30.3 1.45
128x128 44.0 36.3 1.21 32.8 1.34 35.4 1.24
192x192 35.3 31.6 1.12 31.6 1.12 31.8 1.11
200x200 34.8 38.3 0.91 35.2 0.99 36.2 0.96
256x256 33.7 30.8 1.10 31.1 1.08 35.6 0.95
257x257 26.6 25.1 1.06 24.2 1.10 30.8 0.86
384x384 31.6 29.8 1.06 30.0 1.05 30.4 1.04
500x500 29.3 31.4 0.94 30.3 0.97 34.4 0.85
512x512 30.1 26.4 1.14 26.2 1.15 33.7 0.89
768x768 29.1 25.9 1.12 26.6 1.09 29.2 1.00
1000x1000 28.4 29.6 0.96 28.3 1.00 34.5 0.82
1001x1001 26.2 27.6 0.95 26.2 1.00 30.5 0.86
1024x1024 22.5 22.7 0.99 25.7 0.88 33.1 0.68
1536x1536 26.7 25.8 1.03 26.6 1.01 29.2 0.92
2048x2048 18.9 21.0 0.90 24.3 0.78 29.0 0.65
3072x3072 22.4 22.5 0.99 25.6 0.88 26.0 0.86
4096x4096 16.5 15.8 1.04 16.5 1.00 15.4 1.07
4097x4097 14.5 10.9 1.32 14.0 1.04 17.4 0.83
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.93 15.2 0.85
12288x12288 11.3 11.7 0.96 12.2 0.92 12.7 0.89
16384x16384 11.3 10.5 1.07 11.4 0.99 11.9 0.94
8x10000 27.4 17.5 1.56 15.7 1.75 10.7 2.56
100x10000 22.0 23.6 0.93 22.2 0.99 29.1 0.76
1000x10000 23.6 25.6 0.92 23.9 0.99 27.6 0.85
4000x10000 16.9 17.4 0.97 17.3 0.97 19.5 0.87
10000x8 37.8 36.2 1.04 37.6 1.00 29.5 1.28
10000x100 22.8 32.1 0.71 32.1 0.71 32.8 0.70
10000x1000 28.8 27.1 1.06 27.2 1.06 26.8 1.08
10000x4000 18.2 18.8 0.97 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.5 0.2 5.97 0.1 10.93 0.6 2.51
3x3 2.3 0.5 4.13 0.3 8.06 1.3 1.74
4x4 4.6 1.0 4.83 0.5 9.73 2.1 2.16
6x6 8.0 2.0 3.98 1.0 8.31 4.2 1.89
8x8 11.9 2.7 4.46 2.1 5.70 5.8 2.06
12x12 14.6 5.3 2.76 3.4 4.30 9.9 1.47
16x16 19.1 7.4 2.59 6.0 3.19 11.7 1.64
24x24 21.5 11.6 1.85 9.4 2.29 14.8 1.45
32x32 22.9 13.8 1.66 12.0 1.91 15.5 1.48
48x48 23.9 16.6 1.44 15.2 1.57 17.0 1.40
64x64 24.3 18.2 1.33 16.1 1.51 17.4 1.39
96x96 20.9 17.4 1.20 16.6 1.25 17.9 1.17
100x100 19.0 19.5 0.97 17.3 1.09 18.1 1.05
128x128 18.1 15.9 1.14 16.1 1.13 17.8 1.02
192x192 16.6 15.4 1.08 15.5 1.07 16.9 0.98
200x200 16.7 18.0 0.93 17.4 0.96 17.8 0.94
256x256 16.6 14.6 1.14 15.2 1.09 15.9 1.05
257x257 14.1 14.8 0.96 13.5 1.05 15.0 0.94
384x384 16.1 13.7 1.17 13.8 1.16 14.9 1.08
500x500 15.5 16.2 0.96 15.1 1.03 17.8 0.87
512x512 12.0 11.8 1.01 13.6 0.88 17.1 0.70
768x768 13.9 13.2 1.06 13.8 1.01 14.4 0.97
1000x1000 14.1 14.7 0.96 14.1 1.00 16.0 0.88
1001x1001 14.0 14.6 0.96 13.8 1.01 15.5 0.90
1024x1024 9.6 10.5 0.92 12.1 0.80 15.8 0.61
1536x1536 11.3 11.5 0.98 12.7 0.89 14.1 0.80
2048x2048 8.8 8.8 1.01 11.1 0.80 13.6 0.65
3072x3072 9.0 10.1 0.90 9.1 0.99 7.3 1.23
4096x4096 7.9 8.0 0.98 8.7 0.90 10.5 0.75
4097x4097 6.1 5.9 1.05 6.6 0.92 10.7 0.57
6144x6144 6.3 6.5 0.96 6.8 0.92 7.3 0.86
8192x8192 6.0 5.9 1.02 6.1 0.99 6.4 0.93
12288x12288 5.6 5.6 1.01 5.7 0.99 5.9 0.95
16384x16384 5.5 4.3 1.27 4.8 1.14 5.7 0.96
8x10000 16.1 13.0 1.24 10.9 1.48 10.4 1.56
100x10000 11.2 12.2 0.92 12.3 0.91 15.8 0.71
1000x10000 11.9 11.1 1.07 9.7 1.22 13.6 0.88
4000x10000 6.6 6.8 0.97 6.8 0.97 7.2 0.92
10000x8 17.8 16.7 1.06 16.0 1.11 13.2 1.34
10000x100 12.3 15.3 0.80 15.1 0.81 14.7 0.83
10000x1000 12.4 13.0 0.95 13.0 0.96 11.8 1.05
10000x4000 6.6 6.8 0.97 6.9 0.96 7.2 0.92
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 0.9 0.5 1.70 0.2 4.17 0.3 2.90
3x3x3 1.7 1.0 1.60 0.7 2.43 0.9 1.90
4x4x4 8.8 1.9 4.55 1.5 5.85 2.5 3.56
6x6x6 5.8 3.4 1.71 4.2 1.38 5.1 1.12
8x8x8 11.8 5.7 2.08 11.0 1.07 12.5 0.95
12x12x12 20.0 7.9 2.54 16.8 1.19 25.7 0.78
16x16x16 27.9 15.5 1.80 32.6 0.86 39.8 0.70
24x24x24 41.4 33.5 1.23 56.2 0.74 50.9 0.81
32x32x32 47.9 45.6 1.05 67.2 0.71 64.3 0.74
48x48x48 57.8 62.4 0.93 79.5 0.73 73.5 0.79
64x64x64 60.8 67.3 0.90 81.9 0.74 76.4 0.80
96x96x96 67.8 78.2 0.87 88.3 0.77 78.7 0.86
100x100x100 66.9 76.4 0.88 83.9 0.80 75.3 0.89
128x128x128 70.7 82.4 0.86 90.7 0.78 80.1 0.88
160x160x160 72.6 85.5 0.85 91.6 0.79 81.3 0.89
192x192x192 75.1 87.8 0.86 93.5 0.80 81.4 0.92
200x200x200 74.7 89.1 0.84 93.6 0.80 81.5 0.92
224x224x224 75.8 88.6 0.86 93.3 0.81 82.3 0.92
256x256x256 74.9 88.6 0.85 91.1 0.82 82.2 0.91
257x257x257 73.3 85.9 0.85 89.2 0.82 78.7 0.93
288x288x288 75.6 88.8 0.85 93.7 0.81 81.9 0.92
320x320x320 75.8 89.3 0.85 93.4 0.81 82.0 0.92
384x384x384 76.7 90.3 0.85 92.7 0.83 81.5 0.94
448x448x448 77.3 90.9 0.85 93.3 0.83 82.0 0.94
500x500x500 78.0 91.4 0.85 94.6 0.82 81.7 0.96
512x512x512 77.5 92.1 0.84 94.1 0.82 82.4 0.94
768x768x768 79.8 94.2 0.85 95.2 0.84 83.0 0.96
1000x1000x1000 79.6 94.2 0.85 96.3 0.83 83.4 0.96
1001x1001x1001 79.3 93.5 0.85 95.6 0.83 82.7 0.96
1024x1024x1024 77.5 93.6 0.83 94.7 0.82 83.7 0.93
1536x1536x1536 77.0 94.6 0.81 96.2 0.80 83.0 0.93
2048x2048x2048 79.7 94.7 0.84 95.9 0.83 84.0 0.95
3072x3072x3072 79.8 94.1 0.85 96.2 0.83 84.0 0.95
4096x4096x4096 78.5 92.2 0.85 95.1 0.83 83.4 0.94
4097x4097x4097 78.6 91.4 0.86 94.9 0.83 82.9 0.95
64x64x1024 61.7 76.5 0.81 72.5 0.85 76.4 0.81
64x1024x64 61.6 72.1 0.85 86.9 0.71 78.2 0.79
256x256x1024 74.4 89.4 0.83 89.6 0.83 80.9 0.92
1024x64x64 70.6 23.8 2.97 79.2 0.89 78.1 0.90
1024x256x256 75.7 89.4 0.85 90.4 0.84 82.1 0.92
4096x96x96 70.4 81.1 0.87 80.6 0.87 79.4 0.89
4096x128x128 72.3 83.7 0.86 84.3 0.86 80.2 0.90
4096x144x144 71.8 84.9 0.85 84.5 0.85 80.7 0.89
4096x160x160 72.7 86.0 0.85 84.9 0.86 81.1 0.90
4096x176x176 73.4 86.8 0.85 86.6 0.85 81.3 0.90
8192x128x128 71.8 83.5 0.86 84.5 0.85 80.2 0.90
10000x8x8 39.5 32.5 1.22 38.8 1.02 55.1 0.72
10000x100x100 72.8 81.3 0.90 87.1 0.84 78.3 0.93
10000x1000x1000 75.0 94.0 0.80 96.3 0.78 83.8 0.90
10000x4000x4000 78.0 91.6 0.85 95.8 0.81 83.8 0.93
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.4 0.5 5.25 0.2 11.33 0.3 7.22
3x3x3 2.1 1.6 1.29 0.6 3.42 0.9 2.29
4x4x4 5.2 2.0 2.65 1.3 3.92 2.3 2.28
6x6x6 6.4 3.0 2.14 3.8 1.69 4.9 1.30
8x8x8 9.6 5.0 1.92 6.7 1.44 10.0 0.95
12x12x12 16.5 7.1 2.32 11.9 1.38 18.3 0.90
16x16x16 21.8 11.4 1.91 20.3 1.07 24.4 0.89
24x24x24 29.1 22.2 1.31 30.6 0.95 30.8 0.94
32x32x32 31.3 24.6 1.28 34.1 0.92 33.5 0.93
48x48x48 34.3 33.6 1.02 39.1 0.88 36.3 0.94
64x64x64 34.9 36.4 0.96 39.8 0.88 37.2 0.94
96x96x96 37.6 40.8 0.92 43.3 0.87 38.7 0.97
100x100x100 37.6 40.1 0.94 41.1 0.92 37.8 1.00
128x128x128 37.8 40.9 0.93 43.9 0.86 39.4 0.96
160x160x160 38.6 42.2 0.91 43.3 0.89 39.2 0.99
192x192x192 35.4 43.1 0.82 42.9 0.83 39.0 0.91
200x200x200 37.9 42.5 0.89 43.5 0.87 39.0 0.97
224x224x224 37.3 42.9 0.87 43.4 0.86 38.9 0.96
256x256x256 36.4 43.4 0.84 43.5 0.84 39.4 0.93
257x257x257 36.1 43.4 0.83 42.9 0.84 37.7 0.96
288x288x288 36.5 44.5 0.82 44.5 0.82 38.8 0.94
320x320x320 35.8 44.0 0.81 44.4 0.81 39.3 0.91
384x384x384 36.7 45.0 0.81 45.3 0.81 39.6 0.93
448x448x448 36.5 44.8 0.82 45.6 0.80 39.5 0.92
500x500x500 36.2 44.3 0.82 45.4 0.80 39.5 0.92
512x512x512 35.4 43.7 0.81 44.9 0.79 39.5 0.89
768x768x768 35.5 45.1 0.79 45.0 0.79 39.6 0.89
1000x1000x1000 37.2 45.4 0.82 46.2 0.81 39.9 0.93
1001x1001x1001 36.0 45.2 0.80 46.1 0.78 39.5 0.91
1024x1024x1024 34.1 44.8 0.76 44.9 0.76 39.2 0.87
1536x1536x1536 35.0 46.0 0.76 46.2 0.76 40.1 0.87
2048x2048x2048 36.1 45.3 0.80 45.9 0.79 40.0 0.90
3072x3072x3072 34.4 44.9 0.77 45.5 0.76 40.0 0.86
4096x4096x4096 33.6 45.0 0.75 45.4 0.74 39.8 0.84
4097x4097x4097 33.8 45.1 0.75 45.5 0.74 39.2 0.86
64x64x1024 34.1 36.8 0.93 38.3 0.89 36.8 0.93
64x1024x64 35.3 38.9 0.91 39.2 0.90 37.7 0.94
256x256x1024 36.4 43.3 0.84 43.9 0.83 39.3 0.93
1024x64x64 33.3 38.4 0.87 37.9 0.88 37.4 0.89
1024x256x256 35.6 44.1 0.81 44.3 0.80 39.8 0.90
4096x96x96 34.1 41.3 0.83 40.6 0.84 38.5 0.88
4096x128x128 34.9 41.2 0.85 42.0 0.83 39.1 0.89
4096x144x144 35.5 42.8 0.83 42.8 0.83 38.3 0.93
4096x160x160 35.5 42.7 0.83 42.7 0.83 38.4 0.92
4096x176x176 35.8 42.6 0.84 43.3 0.83 38.7 0.93
8192x128x128 34.4 41.2 0.84 41.9 0.82 39.1 0.88
10000x8x8 18.9 16.5 1.14 18.8 1.00 27.1 0.70
10000x100x100 35.5 41.9 0.85 40.8 0.87 38.0 0.93
10000x1000x1000 34.2 45.1 0.76 45.8 0.75 40.0 0.85
10000x4000x4000 33.4 45.1 0.74 45.1 0.74 39.8 0.84
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.09 0.0 48.75 0.2 1.35
3x3 0.7 0.7 1.02 0.0 36.11 0.4 1.58
4x4 2.2 1.9 1.14 0.0 52.89 1.1 1.90
6x6 3.5 1.6 2.15 0.1 28.08 1.8 2.00
8x8 6.6 2.0 3.31 0.3 23.32 3.1 2.14
12x12 8.9 4.5 1.97 0.8 11.57 5.1 1.74
16x16 13.3 4.9 2.70 1.4 9.49 4.4 3.03
24x24 16.5 7.8 2.12 3.7 4.48 7.3 2.26
32x32 20.4 8.9 2.29 5.4 3.75 8.4 2.42
48x48 24.8 11.9 2.08 10.6 2.34 12.1 2.05
64x64 27.8 12.6 2.21 13.4 2.08 15.3 1.81
96x96 31.4 29.9 1.05 21.5 1.46 21.2 1.48
100x100 31.5 29.5 1.07 20.3 1.55 21.9 1.43
128x128 33.4 38.1 0.88 26.6 1.26 26.0 1.28
192x192 41.0 50.0 0.82 36.2 1.13 33.8 1.21
200x200 41.2 52.2 0.79 37.1 1.11 34.7 1.19
256x256 48.9 52.5 0.93 42.5 1.15 39.5 1.24
257x257 47.0 53.9 0.87 41.1 1.14 38.4 1.22
384x384 52.0 60.1 0.87 52.4 0.99 47.3 1.10
500x500 57.1 66.6 0.86 58.4 0.98 52.4 1.09
512x512 56.3 62.3 0.90 59.4 0.95 53.2 1.06
768x768 61.9 71.3 0.87 68.6 0.90 60.7 1.02
1000x1000 65.7 77.2 0.85 73.9 0.89 64.8 1.01
1001x1001 64.7 74.0 0.87 72.9 0.89 63.8 1.01
1024x1024 64.9 67.6 0.96 73.4 0.88 65.2 1.00
1536x1536 69.2 78.2 0.88 80.7 0.86 70.6 0.98
2048x2048 70.4 73.6 0.96 83.6 0.84 73.9 0.95
3072x3072 72.2 76.7 0.94 87.0 0.83 76.3 0.95
4096x4096 72.7 78.3 0.93 88.3 0.82 77.8 0.94
4097x4097 71.4 82.4 0.87 87.9 0.81 77.0 0.93
64x4096 26.7 25.7 1.04 16.0 1.67 15.4 1.73
256x4096 45.9 47.6 0.96 43.8 1.05 39.2 1.17
1024x8 33.8 23.4 1.44 25.5 1.32 34.9 0.97
1024x64 58.7 50.0 1.18 58.9 1.00 59.8 0.98
1024x256 63.9 64.7 0.99 70.0 0.91 64.0 1.00
1024x4096 64.2 63.5 1.01 73.7 0.87 65.2 0.98
4096x8 30.9 22.8 1.36 28.6 1.08 41.8 0.74
4096x64 63.4 59.6 1.06 67.6 0.94 71.3 0.89
4096x256 71.8 69.4 1.04 83.2 0.86 76.6 0.94
4096x1024 73.5 78.9 0.93 87.8 0.84 77.9 0.94
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 58.03 0.2 1.64
3x3 0.9 0.6 1.51 0.0 47.09 0.4 2.09
4x4 2.8 2.0 1.36 0.0 64.88 1.1 2.56
6x6 4.4 1.4 3.02 0.1 32.96 1.8 2.42
8x8 7.5 3.5 2.13 0.3 27.55 3.1 2.41
12x12 9.6 4.3 2.25 0.7 13.24 5.0 1.91
16x16 12.6 5.0 2.50 1.4 8.76 6.7 1.88
24x24 14.8 6.2 2.41 3.3 4.45 9.6 1.55
32x32 16.2 6.8 2.39 4.9 3.31 11.8 1.38
48x48 17.7 8.1 2.18 8.8 2.00 15.7 1.13
64x64 18.4 11.4 1.61 11.4 1.62 18.5 1.00
96x96 19.3 20.7 0.93 16.4 1.17 22.6 0.86
100x100 19.4 21.6 0.90 15.8 1.23 22.9 0.85
128x128 19.3 23.1 0.84 19.5 0.99 24.9 0.77
192x192 24.9 26.6 0.94 24.6 1.01 28.4 0.88
200x200 25.2 28.2 0.89 24.9 1.01 29.1 0.87
256x256 27.7 25.9 1.07 27.0 1.02 30.3 0.91
257x257 27.7 25.3 1.10 26.3 1.05 29.5 0.94
384x384 29.8 28.3 1.05 32.1 0.93 32.5 0.92
500x500 29.3 30.8 0.95 34.2 0.86 34.0 0.86
512x512 30.7 29.5 1.04 34.6 0.89 34.0 0.90
768x768 33.0 32.3 1.02 37.4 0.88 35.9 0.92
1000x1000 34.2 34.9 0.98 39.3 0.87 37.2 0.92
1001x1001 33.8 33.6 1.01 39.3 0.86 36.6 0.92
1024x1024 33.6 33.7 1.00 39.3 0.85 36.9 0.91
1536x1536 34.7 37.5 0.93 41.6 0.83 38.0 0.91
2048x2048 34.5 37.9 0.91 42.1 0.82 38.2 0.90
3072x3072 34.9 39.4 0.89 43.1 0.81 38.7 0.90
4096x4096 35.1 39.9 0.88 43.5 0.81 39.0 0.90
4097x4097 34.8 40.1 0.87 43.4 0.80 38.5 0.90
64x4096 17.1 15.3 1.11 12.5 1.37 17.2 0.99
256x4096 26.9 25.5 1.06 27.3 0.99 29.9 0.90
1024x8 17.3 15.5 1.12 14.8 1.17 23.5 0.73
1024x64 30.8 31.3 0.98 33.3 0.92 35.1 0.88
1024x256 33.2 35.5 0.94 38.2 0.87 36.6 0.91
1024x4096 33.6 34.0 0.99 39.1 0.86 36.8 0.91
4096x8 14.3 13.5 1.06 12.6 1.13 23.3 0.61
4096x64 31.7 31.5 1.01 34.4 0.92 35.2 0.90
4096x256 34.9 38.7 0.90 41.6 0.84 38.0 0.92
4096x1024 35.0 39.1 0.89 43.4 0.81 38.9 0.90
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.16 0.0 19.56 0.2 0.85
3x3 0.4 0.1 3.76 0.0 17.67 0.4 0.91
4x4 1.0 0.2 4.37 0.1 20.35 1.0 1.01
6x6 2.1 0.7 2.99 0.2 13.17 2.2 0.93
8x8 5.3 1.5 3.54 0.4 14.82 4.6 1.14
12x12 8.6 3.7 2.34 1.1 7.93 8.5 1.01
16x16 15.6 6.9 2.26 2.3 6.70 13.3 1.18
24x24 25.0 15.4 1.62 6.8 3.69 23.8 1.05
32x32 33.0 23.7 1.39 13.0 2.54 32.4 1.02
48x48 43.5 35.3 1.23 28.4 1.53 46.0 0.95
64x64 50.7 44.6 1.14 40.8 1.24 53.6 0.95
96x96 58.2 58.7 0.99 59.9 0.97 63.6 0.91
100x100 57.7 53.4 1.08 56.8 1.02 60.6 0.95
128x128 61.7 62.9 0.98 69.1 0.89 68.3 0.90
192x192 68.6 73.2 0.94 79.1 0.87 73.3 0.94
200x200 70.2 73.6 0.95 80.6 0.87 72.9 0.96
256x256 70.0 77.7 0.90 81.7 0.86 75.5 0.93
257x257 67.9 75.2 0.90 77.3 0.88 71.0 0.96
384x384 70.9 82.0 0.87 86.0 0.82 77.3 0.92
500x500 72.7 82.3 0.88 87.7 0.83 77.5 0.94
512x512 70.9 80.4 0.88 88.5 0.80 78.3 0.90
768x768 75.2 84.5 0.89 91.8 0.82 80.7 0.93
1000x1000 77.3 86.4 0.89 93.9 0.82 81.1 0.95
1001x1001 76.3 86.0 0.89 92.0 0.83 80.0 0.95
1024x1024 74.4 82.2 0.91 91.6 0.81 81.9 0.91
1536x1536 78.6 86.6 0.91 94.5 0.83 82.9 0.95
2048x2048 78.3 86.6 0.90 94.4 0.83 83.1 0.94
3072x3072 79.3 87.2 0.91 95.2 0.83 83.3 0.95
4096x4096 78.8 87.1 0.90 94.3 0.84 83.3 0.95
4097x4097 78.5 87.4 0.90 93.8 0.84 82.5 0.95
64x4096 48.5 54.4 0.89 54.5 0.89 58.5 0.83
256x4096 66.9 72.8 0.92 82.0 0.82 75.0 0.89
1024x4096 75.1 83.0 0.90 91.6 0.82 81.8 0.92
4096x8 39.1 26.1 1.50 38.1 1.03 57.3 0.68
4096x64 72.1 72.3 1.00 82.0 0.88 80.5 0.90
4096x256 78.1 85.5 0.91 93.4 0.84 82.7 0.94
4096x1024 78.4 87.9 0.89 95.0 0.83 83.4 0.94
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.03 0.2 0.80
3x3 0.4 0.1 3.61 0.0 15.67 0.4 0.83
4x4 0.8 0.2 3.82 0.1 16.47 1.0 0.87
6x6 2.0 0.7 3.09 0.2 12.57 2.2 0.93
8x8 3.3 1.2 2.74 0.3 9.52 3.9 0.85
12x12 5.5 3.1 1.76 1.0 5.34 7.7 0.71
16x16 9.0 5.7 1.59 2.2 4.09 11.5 0.78
24x24 12.8 11.5 1.12 6.0 2.14 17.9 0.71
32x32 16.5 16.1 1.02 10.3 1.60 22.6 0.73
48x48 21.0 21.9 0.96 19.6 1.07 28.2 0.74
64x64 24.4 25.5 0.96 25.2 0.97 30.6 0.80
96x96 28.4 31.3 0.91 33.0 0.86 33.9 0.84
100x100 28.7 30.2 0.95 31.7 0.91 33.3 0.86
128x128 30.5 33.8 0.90 35.8 0.85 35.9 0.85
192x192 28.8 38.2 0.75 39.1 0.74 36.3 0.79
200x200 32.6 38.2 0.85 38.9 0.84 35.7 0.91
256x256 32.2 38.2 0.84 39.5 0.82 37.3 0.86
257x257 31.9 37.7 0.85 37.8 0.84 35.7 0.89
384x384 33.5 39.7 0.84 42.2 0.79 38.0 0.88
500x500 36.4 40.0 0.91 42.6 0.85 37.7 0.97
512x512 34.3 38.0 0.90 41.8 0.82 38.2 0.90
768x768 37.5 40.2 0.93 44.4 0.84 38.9 0.96
1000x1000 38.5 41.0 0.94 45.5 0.85 39.2 0.98
1001x1001 38.3 40.9 0.94 44.7 0.86 38.7 0.99
1024x1024 37.8 39.8 0.95 44.5 0.85 39.3 0.96
1536x1536 38.5 40.8 0.94 45.3 0.85 39.6 0.97
2048x2048 38.5 40.0 0.96 45.6 0.84 39.6 0.97
3072x3072 38.1 39.2 0.97 45.3 0.84 39.7 0.96
4096x4096 37.9 38.6 0.98 44.8 0.84 39.6 0.96
4097x4097 37.7 40.0 0.94 44.8 0.84 39.3 0.96
64x4096 23.6 27.0 0.88 29.5 0.80 30.5 0.78
256x4096 32.7 36.2 0.90 39.4 0.83 37.2 0.88
1024x4096 38.0 39.4 0.96 44.4 0.85 39.2 0.97
4096x8 19.3 15.0 1.29 23.2 0.83 29.3 0.66
4096x64 35.0 34.9 1.00 41.3 0.85 38.9 0.90
4096x256 37.5 38.8 0.97 44.8 0.84 39.8 0.94
4096x1024 37.8 39.3 0.96 45.3 0.83 39.7 0.95
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.45 0.0 16.11 0.1 2.25
3 0.4 0.4 1.04 0.0 7.86 0.2 1.50
4 0.6 0.6 0.94 0.1 5.89 0.4 1.29
6 0.9 1.3 0.67 0.3 3.36 1.1 0.83
8 1.5 2.1 0.75 0.5 3.02 1.7 0.89
12 3.0 3.4 0.87 1.0 2.87 3.4 0.88
16 4.4 4.3 1.02 1.8 2.41 5.0 0.88
24 7.3 3.5 2.06 3.7 1.98 8.1 0.90
32 7.1 4.9 1.46 5.6 1.27 10.0 0.71
48 11.2 7.6 1.47 9.0 1.24 10.9 1.02
64 14.5 10.9 1.33 11.8 1.23 15.1 0.96
96 19.7 17.4 1.13 15.0 1.31 22.0 0.90
100 19.7 16.0 1.23 11.4 1.73 21.1 0.93
128 29.7 23.7 1.25 16.2 1.83 27.7 1.07
192 36.4 32.5 1.12 24.6 1.48 34.7 1.05
200 37.2 33.9 1.10 23.2 1.60 33.5 1.11
256 45.6 37.8 1.21 28.2 1.62 40.7 1.12
257 42.8 37.1 1.15 28.5 1.50 39.7 1.08
384 54.3 45.1 1.21 38.2 1.42 50.2 1.08
500 55.8 52.8 1.06 43.2 1.29 50.4 1.11
512 54.0 49.5 1.09 43.0 1.26 54.5 0.99
768 61.2 53.0 1.16 53.7 1.14 61.3 1.00
1000 64.7 55.7 1.16 60.3 1.07 63.6 1.02
1001 63.0 52.8 1.19 58.9 1.07 62.7 1.00
1024 60.7 54.4 1.11 59.1 1.03 65.6 0.92
1536 67.6 63.5 1.06 69.3 0.98 71.7 0.94
2048 68.5 65.3 1.05 73.2 0.94 74.5 0.92
3072 71.3 69.4 1.03 79.0 0.90 77.2 0.92
4096 71.3 66.7 1.07 80.1 0.89 78.0 0.91
4097 69.8 72.3 0.97 79.8 0.87 77.7 0.90
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.17 0.0 15.08 0.1 2.30
3 0.4 0.4 1.01 0.0 8.71 0.2 1.75
4 0.5 0.6 0.90 0.1 5.30 0.4 1.22
6 1.0 1.2 0.85 0.3 3.49 0.9 1.04
8 1.5 1.4 1.10 0.5 2.82 1.6 0.95
12 2.9 2.8 1.04 1.1 2.63 3.0 0.97
16 4.1 3.6 1.14 1.9 2.16 4.3 0.96
24 5.8 3.1 1.87 3.7 1.59 6.3 0.92
32 5.2 4.6 1.11 5.2 0.98 7.8 0.66
48 7.3 6.4 1.14 7.4 0.98 9.4 0.77
64 8.8 8.1 1.09 8.5 1.04 12.4 0.71
96 11.3 11.9 0.95 9.7 1.16 16.8 0.67
100 11.3 10.8 1.05 8.4 1.35 16.3 0.69
128 16.1 14.6 1.10 10.9 1.47 19.8 0.81
192 19.0 18.3 1.03 16.1 1.18 23.3 0.81
200 19.4 19.0 1.02 15.2 1.28 23.1 0.84
256 23.4 19.8 1.18 17.9 1.31 25.2 0.93
257 22.6 19.6 1.15 18.6 1.21 25.1 0.90
384 25.9 24.5 1.06 22.6 1.15 28.3 0.92
500 27.2 26.4 1.03 25.7 1.06 29.2 0.93
512 26.7 24.7 1.08 24.7 1.08 30.0 0.89
768 30.6 30.3 1.01 30.5 1.01 33.4 0.92
1000 32.3 32.9 0.98 33.6 0.96 34.9 0.92
1001 31.8 31.9 1.00 33.2 0.96 34.6 0.92
1024 30.8 29.0 1.06 32.9 0.94 34.8 0.88
1536 33.5 33.6 1.00 36.5 0.92 36.6 0.91
2048 34.0 33.8 1.01 38.1 0.89 37.3 0.91
3072 35.4 34.2 1.03 39.4 0.90 37.7 0.94
4096 35.4 33.5 1.06 39.8 0.89 37.6 0.94
4097 35.4 36.2 0.98 40.7 0.87 37.8 0.94
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.78 0.0 6.35 0.1 1.28
3 0.3 0.3 0.91 0.1 5.18 0.2 1.40
4 0.5 0.6 0.99 0.1 4.62 0.4 1.45
6 1.0 1.2 0.82 0.3 3.15 0.7 1.41
8 1.4 2.0 0.72 0.5 2.66 1.0 1.47
12 2.7 3.2 0.84 1.0 2.62 1.5 1.76
16 3.5 4.0 0.88 0.6 5.62 2.0 1.77
24 5.1 6.4 0.79 1.7 3.05 3.7 1.35
32 6.8 6.7 1.02 2.1 3.33 4.7 1.47
48 10.3 9.9 1.04 4.2 2.47 8.0 1.29
64 13.3 13.0 1.02 5.4 2.47 9.8 1.35
96 18.4 17.0 1.08 10.2 1.81 16.0 1.15
100 18.6 18.5 1.00 9.9 1.87 16.5 1.12
128 23.2 21.3 1.09 13.7 1.69 19.6 1.18
192 29.5 18.4 1.61 21.6 1.36 28.0 1.05
200 29.8 19.3 1.55 22.6 1.32 28.5 1.04
256 36.3 26.3 1.38 27.3 1.33 33.5 1.08
257 34.9 31.2 1.12 27.4 1.28 32.6 1.07
384 43.5 26.7 1.63 37.5 1.16 42.2 1.03
500 46.1 34.1 1.35 43.3 1.06 46.9 0.98
512 46.3 28.4 1.63 42.9 1.08 47.2 0.98
768 52.0 39.1 1.33 52.1 1.00 55.6 0.94
1000 56.0 46.9 1.20 59.8 0.94 60.8 0.92
1001 54.9 43.1 1.27 59.1 0.93 59.9 0.92
1024 55.8 37.0 1.51 58.6 0.95 61.0 0.91
1536 61.8 55.8 1.11 68.1 0.91 67.5 0.92
2048 65.2 56.3 1.16 69.0 0.94 71.0 0.92
3072 69.0 64.0 1.08 78.9 0.87 74.6 0.92
4096 70.0 66.1 1.06 78.5 0.89 75.8 0.92
4097 69.2 72.8 0.95 79.1 0.87 75.2 0.92
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.28 0.1 2.19
3 0.4 0.4 1.06 0.1 7.36 0.2 1.86
4 0.7 0.7 0.94 0.1 5.58 0.4 1.67
6 1.3 1.5 0.86 0.3 4.14 0.7 1.72
8 1.7 2.2 0.81 0.5 3.17 1.0 1.69
12 2.6 3.3 0.80 1.1 2.49 1.6 1.69
16 3.4 4.3 0.79 0.6 5.23 2.0 1.69
24 4.8 4.2 1.15 1.6 2.95 3.6 1.33
32 6.2 5.7 1.09 2.0 3.10 4.8 1.31
48 8.6 6.7 1.30 3.8 2.25 8.0 1.07
64 10.4 8.8 1.18 5.0 2.06 10.2 1.02
96 13.0 9.6 1.36 8.6 1.51 14.6 0.89
100 13.2 8.7 1.51 8.5 1.55 15.0 0.88
128 15.8 8.9 1.78 11.0 1.43 17.6 0.90
192 18.5 9.3 1.98 16.1 1.15 22.2 0.83
200 19.0 9.8 1.94 16.6 1.14 22.4 0.85
256 21.8 13.1 1.67 19.0 1.15 24.7 0.89
257 21.5 13.6 1.58 19.1 1.13 24.0 0.90
384 23.8 14.4 1.65 23.3 1.02 27.5 0.86
500 25.3 18.1 1.40 26.0 0.97 29.6 0.86
512 25.2 16.1 1.56 24.2 1.04 29.6 0.85
768 27.9 22.9 1.22 30.2 0.92 32.6 0.86
1000 29.2 26.0 1.12 33.4 0.87 34.1 0.86
1001 28.9 25.8 1.12 33.2 0.87 33.7 0.86
1024 29.0 24.3 1.19 30.8 0.94 34.0 0.85
1536 31.4 28.2 1.11 35.1 0.89 35.8 0.87
2048 31.9 30.8 1.04 36.1 0.89 36.6 0.87
3072 32.7 35.0 0.93 38.9 0.84 37.4 0.88
4096 32.2 36.4 0.88 39.9 0.81 37.5 0.86
4097 32.0 38.6 0.83 40.8 0.78 37.1 0.86
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.57 0.1 1.09 0.1 1.08
3x3 0.2 0.3 0.58 0.2 0.82 0.2 1.02
4x4 0.3 0.5 0.58 0.4 0.73 0.3 1.03
6x6 0.6 1.0 0.59 0.8 0.69 0.5 1.08
8x8 0.9 1.6 0.59 1.4 0.70 0.8 1.14
12x12 1.9 3.0 0.63 2.6 0.73 1.6 1.19
16x16 3.0 4.4 0.69 3.9 0.77 2.4 1.25
24x24 4.7 7.1 0.67 6.6 0.72 4.3 1.10
32x32 6.3 9.4 0.67 9.0 0.70 6.2 1.02
48x48 9.0 13.0 0.69 13.3 0.67 9.4 0.95
64x64 8.0 15.2 0.52 16.4 0.49 11.9 0.67
96x96 14.3 17.4 0.83 20.8 0.69 15.1 0.95
100x100 12.9 17.6 0.74 21.5 0.60 15.6 0.83
128x128 18.2 18.2 1.00 23.7 0.77 16.5 1.10
192x192 26.1 17.8 1.47 33.6 0.78 26.3 0.99
200x200 26.2 18.0 1.45 34.6 0.76 31.7 0.82
256x256 31.2 16.8 1.85 39.4 0.79 32.0 0.97
257x257 30.2 17.8 1.70 39.6 0.76 37.3 0.81
384x384 39.0 35.0 1.12 48.4 0.81 42.9 0.91
500x500 43.5 48.5 0.90 54.2 0.80 51.2 0.85
512x512 42.8 45.0 0.95 51.3 0.83 47.1 0.91
768x768 49.2 47.2 1.04 57.8 0.85 54.3 0.91
1000x1000 53.0 54.4 0.98 66.0 0.80 60.7 0.87
1001x1001 52.2 54.4 0.96 64.7 0.81 59.1 0.88
1024x1024 51.9 49.5 1.05 60.1 0.86 55.7 0.93
1536x1536 56.6 58.5 0.97 69.5 0.81 62.3 0.91
2048x2048 58.3 60.5 0.96 70.8 0.82 60.7 0.96
3072x3072 61.3 68.5 0.89 77.1 0.79 65.3 0.94
4096x4096 60.8 68.9 0.88 77.7 0.78 63.0 0.96
4097x4097 59.4 70.6 0.84 78.9 0.75 63.6 0.93
4096x8 15.3 12.2 1.25 11.9 1.28 8.2 1.87
4096x64 16.0 14.7 1.09 22.8 0.70 15.9 1.01
4096x256 33.6 15.0 2.24 42.2 0.80 32.1 1.05
4096x1024 52.2 45.0 1.16 63.5 0.82 55.6 0.94
10000x8 15.4 11.6 1.32 11.8 1.30 8.2 1.87
10000x100 23.9 14.4 1.67 29.7 0.81 16.4 1.46
10000x1000 56.3 52.4 1.07 68.8 0.82 60.1 0.94
10000x4000 63.1 72.9 0.86 83.5 0.75 67.4 0.94
100000x8 13.1 10.1 1.29 10.3 1.27 7.6 1.72
100000x64 18.8 13.1 1.43 24.5 0.77 14.6 1.29
100000x256 35.7 9.9 3.62 44.3 0.80 28.4 1.26
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.49 0.1 1.05 0.1 1.09
3x3 0.2 0.4 0.47 0.2 0.75 0.2 0.96
4x4 0.3 0.6 0.47 0.4 0.69 0.3 0.97
6x6 0.5 1.0 0.50 0.8 0.66 0.5 1.00
8x8 0.8 1.6 0.53 1.3 0.66 0.8 1.04
12x12 1.6 2.8 0.59 2.4 0.68 1.5 1.13
16x16 2.5 4.0 0.64 3.6 0.71 2.1 1.19
24x24 4.3 6.0 0.72 5.5 0.78 3.3 1.29
32x32 5.7 7.4 0.77 7.1 0.81 4.3 1.33
48x48 8.0 9.3 0.86 10.2 0.79 6.9 1.16
64x64 6.9 10.2 0.67 11.8 0.58 8.2 0.84
96x96 11.2 11.1 1.01 12.3 0.91 10.1 1.11
100x100 10.3 11.1 0.93 11.2 0.92 10.3 1.01
128x128 13.0 10.3 1.27 15.4 0.85 10.0 1.30
192x192 17.1 10.2 1.68 20.4 0.83 16.2 1.05
200x200 17.5 10.3 1.70 20.6 0.85 19.3 0.91
256x256 18.5 18.8 0.98 22.3 0.83 19.3 0.96
257x257 18.6 20.1 0.92 22.2 0.84 21.6 0.86
384x384 22.0 23.0 0.95 26.0 0.85 24.2 0.91
500x500 24.4 26.0 0.94 28.7 0.85 27.5 0.89
512x512 23.5 24.2 0.97 26.9 0.87 25.5 0.92
768x768 26.6 28.9 0.92 31.2 0.85 29.4 0.91
1000x1000 28.5 31.5 0.90 34.1 0.84 31.3 0.91
1001x1001 28.1 31.4 0.90 33.7 0.84 30.8 0.92
1024x1024 27.6 29.6 0.93 32.2 0.86 29.8 0.93
1536x1536 29.7 33.3 0.89 35.3 0.84 31.9 0.93
2048x2048 29.9 34.1 0.88 36.0 0.83 32.5 0.92
3072x3072 31.4 36.1 0.87 38.3 0.82 32.9 0.95
4096x4096 31.4 36.0 0.87 38.7 0.81 32.5 0.97
4097x4097 31.3 36.1 0.87 39.3 0.79 32.2 0.97
4096x8 6.7 7.3 0.92 7.4 0.91 6.1 1.10
4096x64 8.2 9.3 0.88 14.2 0.58 9.3 0.88
4096x256 17.7 18.7 0.95 23.5 0.76 17.9 0.99
4096x1024 27.2 29.9 0.91 34.1 0.80 30.2 0.90
10000x8 6.6 6.7 0.99 8.8 0.76 5.9 1.12
10000x100 12.4 9.1 1.36 19.3 0.64 9.5 1.30
10000x1000 28.6 31.3 0.91 35.3 0.81 30.2 0.95
10000x4000 31.5 35.2 0.89 39.7 0.79 31.8 0.99
100000x8 5.8 5.8 1.01 7.5 0.78 5.4 1.08
100000x64 9.4 7.2 1.31 16.6 0.57 8.1 1.16
100000x256 17.0 16.4 1.04 23.0 0.74 14.9 1.15
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.33 0.4 1.45 0.4 1.38
3 0.7 0.3 2.17 0.3 2.22 0.4 1.63
4 0.8 0.4 2.07 0.4 1.98 0.6 1.47
6 1.3 0.7 1.92 0.7 2.04 1.0 1.39
8 1.9 1.0 1.99 1.0 1.93 1.3 1.51
12 3.1 1.6 1.96 1.7 1.90 2.0 1.54
16 4.3 2.3 1.83 2.4 1.80 2.8 1.53
24 6.5 3.6 1.78 3.7 1.76 4.1 1.59
32 8.4 4.8 1.76 4.7 1.79 5.2 1.62
48 11.4 6.5 1.76 5.8 1.97 6.7 1.72
64 14.0 7.6 1.86 7.3 1.92 7.8 1.80
96 17.6 9.1 1.93 8.7 2.02 9.2 1.91
100 17.9 9.3 1.93 8.9 2.01 9.4 1.91
128 20.3 9.8 2.07 9.8 2.07 9.8 2.08
192 24.6 11.0 2.23 11.1 2.22 11.4 2.16
200 25.3 11.0 2.31 11.3 2.23 11.4 2.22
256 26.9 11.3 2.37 12.0 2.24 12.0 2.24
257 25.5 11.4 2.23 12.1 2.10 12.1 2.10
384 30.4 12.0 2.52 13.0 2.33 12.9 2.35
500 31.7 12.4 2.55 13.6 2.33 13.4 2.36
512 30.7 12.1 2.54 13.6 2.27 13.3 2.31
768 32.2 12.5 2.56 14.2 2.27 13.8 2.33
1000 34.0 12.9 2.63 14.5 2.34 14.2 2.40
1001 32.2 13.0 2.48 14.5 2.22 14.1 2.28
1024 33.2 12.6 2.63 14.4 2.30 14.1 2.36
1536 34.8 13.1 2.65 14.8 2.35 14.4 2.41
2048 34.2 12.1 2.84 14.9 2.29 14.5 2.37
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.56 0.3 1.86 0.4 1.58
3 0.5 0.3 1.95 0.3 1.90 0.4 1.51
4 0.7 0.4 1.83 0.4 1.87 0.5 1.41
6 1.0 0.6 1.78 0.6 1.72 0.7 1.37
8 1.5 0.8 1.72 0.9 1.71 1.1 1.36
12 2.2 1.4 1.58 1.4 1.56 1.7 1.32
16 3.1 1.9 1.59 2.0 1.54 2.2 1.40
24 4.4 2.9 1.51 3.0 1.46 3.1 1.41
32 5.5 3.7 1.48 3.8 1.43 3.8 1.44
48 7.2 5.1 1.42 4.6 1.58 5.1 1.41
64 8.5 5.9 1.44 5.7 1.50 5.9 1.45
96 10.0 7.0 1.43 6.8 1.47 7.0 1.43
100 10.1 7.1 1.42 6.9 1.48 7.1 1.43
128 11.0 7.5 1.47 7.5 1.47 7.5 1.46
192 12.5 8.2 1.52 8.6 1.45 8.7 1.43
200 12.8 8.2 1.55 8.9 1.44 8.8 1.46
256 13.3 8.5 1.58 9.2 1.44 9.3 1.43
257 13.1 8.6 1.52 9.3 1.41 9.2 1.41
384 13.8 8.8 1.58 10.1 1.37 9.9 1.40
500 14.7 9.0 1.63 10.6 1.38 10.4 1.42
512 14.5 8.9 1.63 10.6 1.37 10.4 1.40
768 15.2 9.4 1.62 11.2 1.36 10.8 1.41
1000 15.9 9.8 1.62 11.3 1.41 11.1 1.43
1001 15.4 9.9 1.56 11.6 1.33 11.1 1.39
1024 15.3 9.2 1.66 11.5 1.33 10.9 1.40
1536 15.9 9.8 1.63 11.9 1.34 11.3 1.40
2048 14.1 8.3 1.69 11.0 1.28 11.0 1.29
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.7 0.2 7.59 0.2 9.33 0.2 7.17
3x3 1.3 0.4 3.51 0.3 3.89 0.5 2.84
4x4 1.4 0.5 2.54 0.5 2.71 0.7 2.00
6x6 1.5 1.0 1.51 1.0 1.58 1.3 1.19
8x8 1.8 1.5 1.14 1.5 1.20 1.9 0.92
12x12 2.1 2.6 0.82 2.7 0.80 3.2 0.67
16x16 3.6 3.6 0.99 3.7 0.97 4.3 0.83
24x24 5.1 5.6 0.91 5.6 0.91 6.4 0.80
32x32 7.2 8.9 0.80 8.5 0.84 10.0 0.72
48x48 11.7 14.1 0.83 11.8 0.99 15.0 0.78
64x64 15.5 20.9 0.74 17.5 0.89 21.9 0.71
96x96 24.4 29.7 0.82 26.7 0.91 31.1 0.78
100x100 25.4 30.9 0.82 27.5 0.92 32.6 0.78
128x128 31.8 37.5 0.85 35.5 0.90 40.2 0.79
192x192 45.8 44.2 1.04 46.3 0.99 50.1 0.91
200x200 47.6 46.5 1.02 48.0 0.99 53.3 0.89
256x256 54.2 46.8 1.16 53.6 1.01 54.1 1.00
257x257 55.2 47.3 1.17 56.2 0.98 62.4 0.88
384x384 69.7 52.9 1.32 68.1 1.02 68.3 1.02
500x500 78.9 59.6 1.32 81.7 0.97 85.8 0.92
512x512 76.8 55.1 1.39 76.1 1.01 76.2 1.01
768x768 88.6 58.0 1.53 88.5 1.00 86.9 1.02
1000x1000 98.1 63.3 1.55 101.9 0.96 102.9 0.95
1001x1001 97.6 60.2 1.62 101.2 0.96 102.2 0.95
1024x1024 90.1 55.4 1.63 90.8 0.99 88.3 1.02
1536x1536 103.2 64.3 1.60 107.1 0.96 104.6 0.99
2048x2048 95.8 56.0 1.71 104.1 0.92 103.9 0.92
4096x64 53.0 40.0 1.32 50.3 1.05 45.2 1.17
4096x256 89.8 43.1 2.08 89.2 1.01 82.0 1.10
4096x1024 102.1 50.3 2.03 110.5 0.92 104.0 0.98
10000x8 21.3 23.0 0.93 23.5 0.91 19.8 1.08
10000x100 76.1 49.2 1.55 64.7 1.18 49.1 1.55
10000x1000 125.3 70.8 1.77 143.4 0.87 132.9 0.94
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 8.04 0.2 9.77 0.2 7.42
3x3 0.9 0.3 2.81 0.3 3.07 0.4 2.35
4x4 0.9 0.5 1.89 0.5 2.06 0.6 1.54
6x6 1.0 0.9 1.17 0.8 1.25 1.1 0.97
8x8 1.2 1.3 0.94 1.2 0.98 1.5 0.79
12x12 1.3 2.2 0.61 2.1 0.61 2.4 0.54
16x16 2.3 3.0 0.76 2.9 0.80 3.2 0.71
24x24 3.3 4.4 0.74 4.3 0.75 4.4 0.73
32x32 4.3 6.7 0.64 6.5 0.67 7.0 0.62
48x48 6.3 10.2 0.62 8.7 0.72 10.4 0.60
64x64 8.2 14.0 0.59 12.6 0.65 14.6 0.56
96x96 12.0 18.5 0.65 18.0 0.67 20.2 0.59
100x100 12.6 19.2 0.66 18.3 0.69 21.1 0.60
128x128 15.3 20.9 0.73 22.0 0.70 24.7 0.62
192x192 21.9 24.8 0.88 28.4 0.77 30.3 0.72
200x200 22.9 26.6 0.86 29.9 0.77 32.6 0.70
256x256 26.2 26.8 0.98 32.7 0.80 33.9 0.77
257x257 26.7 27.4 0.97 33.6 0.80 36.8 0.73
384x384 32.9 29.2 1.13 40.0 0.82 40.5 0.81
500x500 38.1 32.0 1.19 45.9 0.83 47.7 0.80
512x512 36.2 28.8 1.26 41.7 0.87 41.6 0.87
768x768 43.1 32.6 1.32 50.3 0.86 49.5 0.87
1000x1000 47.8 34.8 1.37 56.0 0.85 56.4 0.85
1001x1001 47.9 35.0 1.37 56.0 0.85 56.1 0.85
1024x1024 42.1 29.5 1.43 51.2 0.82 50.1 0.84
1536x1536 49.6 32.1 1.54 57.0 0.87 56.1 0.88
2048x2048 45.2 25.6 1.76 56.3 0.80 57.1 0.79
4096x64 29.4 24.5 1.20 29.9 0.98 26.8 1.09
4096x256 47.4 30.6 1.55 49.7 0.95 46.1 1.03
4096x1024 51.2 27.1 1.89 59.5 0.86 56.3 0.91
10000x8 8.6 15.1 0.57 16.6 0.52 14.8 0.58
10000x100 40.9 29.0 1.41 37.1 1.10 28.5 1.44
10000x1000 63.7 35.3 1.81 73.3 0.87 67.3 0.95
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.7 0.3 6.75 0.2 10.84 0.3 6.92
3 1.0 0.3 3.20 0.2 4.27 0.4 2.56
4 1.7 0.5 3.46 0.4 4.42 0.6 2.81
6 2.0 0.9 2.34 0.7 3.06 1.0 1.95
8 3.1 1.3 2.33 1.0 3.18 1.5 2.05
12 4.6 2.2 2.14 1.7 2.79 2.3 2.01
16 5.8 3.0 1.91 2.1 2.77 3.1 1.85
24 7.3 5.3 1.39 3.3 2.25 4.5 1.61
32 8.5 7.2 1.17 4.1 2.05 5.6 1.51
48 10.8 10.9 0.99 5.8 1.85 7.6 1.42
64 12.1 13.5 0.89 7.0 1.72 8.9 1.35
96 13.7 10.5 1.31 8.7 1.58 10.3 1.32
100 13.7 11.1 1.23 9.1 1.51 10.8 1.27
128 14.5 13.0 1.12 10.9 1.33 12.9 1.12
192 15.7 22.9 0.69 18.6 0.84 21.5 0.73
200 16.1 24.8 0.65 19.7 0.82 23.3 0.69
256 15.9 28.2 0.56 24.0 0.66 27.8 0.57
257 15.7 28.4 0.56 24.3 0.65 27.8 0.57
384 14.3 36.2 0.40 34.6 0.41 38.7 0.37
500 17.3 42.6 0.41 43.4 0.40 47.9 0.36
512 16.3 31.4 0.52 33.0 0.49 36.0 0.45
768 17.4 43.5 0.40 47.5 0.37 52.8 0.33
1000 18.2 55.2 0.33 66.1 0.28 70.5 0.26
1001 17.9 54.2 0.33 66.3 0.27 69.7 0.26
1024 16.0 49.4 0.32 60.1 0.27 62.6 0.26
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.81 0.2 12.33 0.2 8.11
3 1.0 0.4 2.75 0.2 4.16 0.3 2.81
4 1.2 0.5 2.34 0.4 3.32 0.5 2.14
6 1.8 0.9 2.07 0.6 2.97 0.9 1.96
8 2.2 1.2 1.77 0.8 2.61 1.2 1.89
12 3.0 2.0 1.51 1.3 2.25 1.8 1.64
16 3.8 2.8 1.36 1.8 2.08 2.5 1.53
24 4.6 4.2 1.09 2.6 1.74 3.5 1.31
32 5.4 5.5 0.97 3.4 1.58 4.4 1.24
48 6.2 7.6 0.81 4.6 1.35 5.7 1.08
64 6.9 8.9 0.77 5.5 1.25 6.8 1.00
96 7.2 7.3 1.00 6.3 1.15 7.1 1.02
100 7.3 7.5 0.98 6.5 1.13 7.5 0.98
128 7.4 7.8 0.94 7.2 1.02 8.0 0.92
192 7.5 11.6 0.65 11.3 0.67 12.7 0.59
200 7.9 12.5 0.63 11.9 0.66 13.4 0.59
256 7.7 14.0 0.55 13.7 0.56 15.1 0.51
257 7.7 14.5 0.53 14.3 0.54 15.7 0.49
384 7.4 19.2 0.38 19.3 0.38 20.8 0.35
500 7.6 22.4 0.34 23.6 0.32 25.0 0.30
512 7.3 16.7 0.43 18.1 0.40 18.1 0.40
768 7.5 22.7 0.33 26.6 0.28 27.1 0.28
1000 7.7 28.0 0.27 35.0 0.22 35.3 0.22
1001 7.6 27.9 0.27 34.9 0.22 35.2 0.22
1024 7.0 23.9 0.30 30.5 0.23 31.2 0.23