Eigen vs. BLAS/LAPACK libraries, NVIDIA DGX Spark 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 Arm Cortex-X925 core of an NVIDIA DGX Spark.

The cells of the DGX Spark 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 Grace SVE page makes the same comparison on a Neoverse V2.

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 DGX Spark, NVIDIA GB10: Arm Cortex-X925 + Cortex-A725, 10 + 10 cores, one thread per core (lscpu: Cortex-X925 and Cortex-A725, CPU parts 0xd85 and 0xd87); the measured X925 has a 64 KiB L1d and a private 2 MiB L2 and shares a 16 MiB L3 with its cluster; 3.9 GHz with frequency boost disabled; SVE2 at a 128-bit vector length (/proc/sys/abi/sve_default_vector_length is 16 bytes), bf16, i8mm; 4 KiB pages
OS Ubuntu 24.04.4 LTS, Linux 6.17.0-1012-nvidia
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 on top and the filled-in cortex-x925-20c profile (27ef2d3a5 on the author’s fork), default configuration, no external BLAS, EIGEN_ARM64_USE_SVE defined: every packet kernel is the SVE code at a fixed 128-bit length
Libraries Arm Performance Libraries 26.07, NVPL 26.5 and OpenBLAS 0.3.34 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 Cortex-X925 core (taskset -c 19)
Date Eigen: 2026-10-03 (UTC; 24 runs, about 2.2 hours of measurement). Libraries: the NEON page’s session on the same machines, 0.3 to 2.8 hours before the SVE passes
Harness benchmarks/comparison/run.py --isa aarch64-sve --filter /eigen/ from Eigen merge request !2903, machine profile cortex-x925-20c

GEMM at n = 1024 ran at 76 GFLOP/s in double and 160 in float with Eigen built for SVE, against 72 and 155 for the NEON build of the previous page; the libraries stand at 83 and 171 (Arm Performance Libraries), 79 and 170 (NVPL) and 69 and 137 (OpenBLAS).

How to read the numbers. Every rate is nominal GFLOP/s: the textbook operation count of the operation, stated in each section below, divided by the median wall time of one call. Eigen was measured twice, in two binaries of the same SVE build, those linked against Arm Performance Libraries and NVPL, where only the Eigen cells ran. The Eigen line on each chart is the median of the two passes and the shaded band is their spread, the run-to-run noise on this host. The spread is within 3 % for 93 % of the cells, within 5 % for 95 % and above 10 % for 2 %; the widest are AXPY and DOT cells up to n = 1000, the binary-dependent effect the NEON page also shows (DOT in double at n = 6, 11.8 against 15.8 GFLOP/s), and DOT in float between n = 1536 and 6144, at 54 to 56 GFLOP/s in the Arm Performance Libraries binary against 60 to 62 in the NVPL binary.

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. Each operation’s SVE passes ran on the machine that measured its NEON page cells, in the same job, after all of that machine’s NEON runs. 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 Eigen rates within 3 % (4.40 against 4.42, 4.80 against 4.80 and 8.37 against 8.57 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.49 before and between 1.00 and 1.42 after a run). 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 (2 MiB) and its cluster’s L3 (16 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.96: 236 cells are more than 5 % slower under SVE and 92 more than 5 % faster.

Operation Scalar n ≤ 16 24–128 192–1024 1536–16384 > 16384
AXPY float 1.21 1.02 1.01 1.00 0.99
AXPY double 1.18 0.95 1.00 1.00 1.00
DOT float 1.00 0.97 0.97 0.97 1.01
DOT double 1.00 1.01 1.00 1.02 1.00
GEMV float 0.85 0.94 1.00 0.99 –
GEMV double 0.94 0.97 1.01 0.98 –
GEMM float 0.85 0.81 0.97 1.04 –
GEMM double 1.00 1.05 1.05 1.06 –
TRSM float 0.63 0.50 0.74 0.94 –
TRSM double 1.01 0.80 0.96 1.05 –
SYRK float 1.00 1.06 1.00 1.04 –
SYRK double 1.00 1.04 1.01 1.05 –
POTRF float 0.72 0.99 1.01 1.01 –
POTRF double 0.88 1.00 1.04 1.05 –
GETRF float 0.58 0.79 0.88 0.97 –
GETRF double 0.87 0.97 0.99 1.04 –
GEQRF float 0.92 0.85 0.86 0.89 –
GEQRF double 0.93 0.95 1.02 1.03 –
SYEV float 0.93 0.99 0.99 0.99 –
SYEV double 0.99 1.00 0.99 1.00 –
GESDD float 0.92 0.90 0.92 0.95 –
GESDD double 1.01 0.98 1.01 1.02 –
GEEV float 1.01 1.05 1.00 – –
GEEV double 1.01 1.00 0.97 – –

The level-1 and level-2 kernels and the two eigensolvers are within 7 % of the NEON build in every band but two: AXPY up to n = 16 gains 11 to 23 % (2.3 against 2.8 ns per call at n = 2), and GEMV in float up to n = 16 loses 15 %. Unlike on Grace, the matrix-product kernel gains in double: GEMM runs 4 to 9 % faster than under NEON from n = 32 on, and SYRK, POTRF, GETRF, GEQRF and TRSM in double follow it by up to 8 % at their larger sizes. In float, GEMM is 8 to 30 % slower between n = 12 and 160 and 1 to 6 % faster from n = 500 on. The losses concentrate in float at small and medium sizes: TRSM in float runs at 0.38 to 0.57 of its NEON rate from n = 8 to 128 (17.7 against 47.0 GFLOP/s at n = 16) and at 0.62 to 0.89 from 200 to 1024; GETRF in float at 0.47 to 0.57 up to n = 8 and 0.70 to 0.81 up to 128; GEQRF in float at 0.80 to 0.95 at every size; POTRF in float at 0.53 to 0.84 up to n = 16; GESDD in float at 0.88 to 0.96. One size stands out: at n = 192 GEMM and SYRK drop in both SVE passes (GEMM in double to 59 GFLOP/s, against 78 and 80 at n = 160 and 200; SYRK in double to 42, against 59 and 67 at n = 128 and 200), a step the NEON build does not take here. In double that step is not the SVE code but the packing buffers Eigen allocates on every call being page-faulted in again on each call, which depends on the process’s earlier allocations: with glibc’s malloc thresholds fixed the SVE binary runs the GEMM cell at 79 GFLOP/s, and the NEON binary takes the same step when it runs those cells alone (libeigen/eigen#3201); the float step at n = 192 was not re-measured. Since the vector width is the same, the other differences are costs and gains in Eigen’s SVE packet kernels and in the compiler’s handling of the fixed-length SVE types, not in the hardware.

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

The SVE build is 11 to 23 % faster than the NEON build up to n = 16 and within 8 % of it from n = 48 on, apart from n = 100 (0.85) and n = 256 in float (1.17, a cell the NEON build runs slowly); 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 the run-to-run spread of the NEON build at every length (0.89 to 1.15 per cell); Eigen remains the fastest arm in L1, and in float through 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 4 % of the NEON build from n = 128 on, apart from n = 4097 in double (0.86), and up to 29 % slower in float at n ≤ 16; the sweeps are within 2 % of the NEON build except 100-by-10000 in float (0.92).

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 75 to 80 GFLOP/s in double from n = 200 on, 4 to 9 % above the NEON kernel, which narrows the gap to the vendor libraries: at n = 1024 Eigen runs at 0.92 of Arm Performance Libraries and 0.96 of NVPL in double, against 0.86 and 0.91 under NEON. In float it reaches 157 to 161 GFLOP/s from n = 500 on, 1 to 6 % above the NEON kernel, but runs 8 to 30 % below it between n = 12 and 160, and at 0.80 to 0.83 of it on the 64-by-1024-by-64 and 64-by-64-by-1024 shapes. At n = 192 both precisions drop by 16 to 26 % in both SVE passes (59 GFLOP/s in double, against 78 and 80 at n = 160 and 200); in double that is page faults on the per-call packing buffers, not the kernel, and the cell runs at 79 GFLOP/s with glibc’s malloc thresholds fixed (libeigen/eigen#3201).

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.

In float the SVE build runs at 0.38 to 0.57 of the NEON build from n = 8 to 128 (17.7 against 47.0 GFLOP/s at n = 16), at 0.51 to 0.89 from 192 to 1024 and at 0.91 to 0.98 above, so it falls behind Arm Performance Libraries from n = 192 to 1001, where the NEON build led; with 64 and 256 equations against 4096 right-hand sides it runs at 0.51 and 0.68 of the NEON rate. In double it is 13 to 23 % slower than NEON from n = 16 to 200 and 1 to 7 % faster from 768 on.

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.

The SVE build is 2 to 8 % faster than the NEON build in both precisions from n = 24 on, which brings Eigen to 0.94 of the vendor libraries in double at n = 1024 (0.89 under NEON). The exception is n = 192, where it drops to 0.71 (float) and 0.67 (double) of the NEON rate in both SVE passes; the NEON page’s drops at n = 384 and 768 in float and 512 in double are there in the SVE build too. Those three drops are the per-call allocation of the packing buffers (libeigen/eigen#3201): with glibc’s malloc thresholds fixed the SVE binary runs them at 149, 157 and 72 GFLOP/s.

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.

In float the SVE build is 16 to 47 % slower than NEON up to n = 16 and level from n = 48 on. In double it is 7 to 18 % slower up to n = 16 and 2 to 5 % faster from n = 128 on, which puts LLT level with NVPL at the largest sizes.

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.47 to 0.57 of the NEON build up to n = 8, 0.70 to 0.81 from 12 to 128 and 0.83 to 1.0 above, which costs it its lead over Arm Performance Libraries below n = 16. In double it is 8 to 21 % slower up to n = 12, within 4 % from 16 to 1024 and 2 to 8 % faster above.

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.

In float the SVE build is 5 to 20 % slower than NEON at every size (13 to 15 % from n = 96 to 1536) and in the sweeps up to 10 % slower; in double it is within 4 % of NEON from n = 64 on and 4 to 11 % slower below.

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.

Unchanged: within 4 % of the NEON build from n = 12 on except n = 257 (0.93 and 0.94); Eigen keeps its lead of 1.2 to 3.4x over every library.

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.

In float the SVE build is 4 to 12 % slower than NEON at every size from n = 16 on, and in the sweeps except 10000-by-8; in double it is within 5 % of NEON.

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.

Within the run-to-run spread of the NEON build: 0.94 to 1.10 of its rate from n = 24 on. Eigen falls to 0.24 to 0.3x of the libraries at n = 1024, as on the NEON page.

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.45 1.83 0.90 0.82 0.98
AXPY float NVPL 6.66 4.09 1.43 1.06 1.01
AXPY float OpenBLAS 1.39 1.21 0.89 0.94 1.00
AXPY double Arm Performance Libraries 2.56 1.35 0.85 0.89 0.99
AXPY double NVPL 6.49 2.60 1.23 1.03 1.00
AXPY double OpenBLAS 1.79 0.93 0.63 0.88 1.03
DOT float Arm Performance Libraries 5.47 2.23 1.43 1.58 1.03
DOT float NVPL 20.42 7.30 4.22 3.40 1.58
DOT float OpenBLAS 4.31 1.98 1.42 1.58 1.03
DOT double Arm Performance Libraries 4.91 1.78 1.31 1.16 1.00
DOT double NVPL 16.61 5.49 4.10 3.10 1.47
DOT double OpenBLAS 3.62 1.57 1.58 1.50 1.01
GEMV float Arm Performance Libraries 3.67 1.45 1.00 0.97 –
GEMV float NVPL 5.81 1.77 1.05 0.92 –
GEMV float OpenBLAS 1.94 1.43 0.98 0.89 –
GEMV double Arm Performance Libraries 3.85 1.32 0.99 0.98 –
GEMV double NVPL 5.79 1.54 1.01 0.90 –
GEMV double OpenBLAS 2.05 1.35 0.98 0.95 –
GEMM float Arm Performance Libraries 2.13 1.12 0.90 0.95 –
GEMM float NVPL 3.64 1.10 0.93 0.92 –
GEMM float OpenBLAS 1.28 0.96 1.12 1.18 –
GEMM double Arm Performance Libraries 2.39 1.05 0.92 0.93 –
GEMM double NVPL 4.44 1.27 1.00 0.96 –
GEMM double OpenBLAS 1.85 1.65 1.14 1.16 –
TRSM float Arm Performance Libraries 1.79 1.47 0.85 0.98 –
TRSM float NVPL 27.20 2.36 1.11 0.92 –
TRSM float OpenBLAS 1.72 1.87 1.26 1.14 –
TRSM double Arm Performance Libraries 2.08 1.51 1.07 0.97 –
TRSM double NVPL 34.55 2.14 1.10 0.97 –
TRSM double OpenBLAS 2.14 1.46 1.09 1.12 –
SYRK float Arm Performance Libraries 3.89 1.32 0.92 0.97 –
SYRK float NVPL 15.55 2.00 0.89 0.94 –
SYRK float OpenBLAS 0.95 1.30 1.09 1.16 –
SYRK double Arm Performance Libraries 3.64 1.14 0.90 0.93 –
SYRK double NVPL 12.05 1.50 0.92 0.93 –
SYRK double OpenBLAS 0.90 1.50 1.03 1.09 –
POTRF float Arm Performance Libraries 0.91 1.71 1.40 1.20 –
POTRF float NVPL 4.52 1.57 1.60 1.11 –
POTRF float OpenBLAS 1.15 1.09 1.21 1.11 –
POTRF double Arm Performance Libraries 1.07 1.24 1.09 1.12 –
POTRF double NVPL 4.58 1.26 1.26 1.01 –
POTRF double OpenBLAS 1.33 1.00 1.02 1.08 –
GETRF float Arm Performance Libraries 0.86 1.16 1.32 1.21 –
GETRF float NVPL 3.77 2.66 1.33 1.03 –
GETRF float OpenBLAS 1.42 1.38 1.13 1.07 –
GETRF double Arm Performance Libraries 1.00 1.09 1.09 1.08 –
GETRF double NVPL 5.18 2.41 1.23 1.02 –
GETRF double OpenBLAS 1.85 1.28 0.98 1.07 –
GEQRF float Arm Performance Libraries 0.69 0.76 1.26 0.98 –
GEQRF float NVPL 0.85 0.69 1.05 0.90 –
GEQRF float OpenBLAS 1.03 0.94 0.95 1.04 –
GEQRF double Arm Performance Libraries 0.63 0.88 1.23 1.00 –
GEQRF double NVPL 0.84 0.86 1.07 0.94 –
GEQRF double OpenBLAS 1.08 1.16 1.03 1.08 –
SYEV float Arm Performance Libraries 1.64 2.14 3.04 2.97 –
SYEV float NVPL 1.64 2.17 2.89 2.71 –
SYEV float OpenBLAS 1.30 2.04 2.86 2.73 –
SYEV double Arm Performance Libraries 1.57 1.63 1.84 1.73 –
SYEV double NVPL 1.53 1.64 1.69 1.45 –
SYEV double OpenBLAS 1.31 1.61 1.69 1.48 –
GESDD float Arm Performance Libraries 1.78 0.84 1.21 1.60 –
GESDD float NVPL 1.91 0.97 1.09 1.07 –
GESDD float OpenBLAS 1.39 0.77 0.97 0.99 –
GESDD double Arm Performance Libraries 1.58 0.80 1.27 1.81 –
GESDD double NVPL 1.67 0.90 1.04 1.06 –
GESDD double OpenBLAS 1.31 0.77 0.94 0.97 –
GEEV float Arm Performance Libraries 2.80 1.22 0.43 – –
GEEV float NVPL 4.09 1.87 0.52 – –
GEEV float OpenBLAS 2.46 1.47 0.43 – –
GEEV double Arm Performance Libraries 2.47 1.00 0.38 – –
GEEV double NVPL 3.64 1.40 0.43 – –
GEEV double OpenBLAS 2.41 1.18 0.38 – –

Caveats

  • The libraries were not measured again: their rows are the NEON page’s session, 0.3 to 2.8 hours earlier on the same machines, 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 has no Cortex-X925 target and runs the Neoverse V2 kernels its own CPU detection selects; NVPL’s fixed cost per call, 15 ns at n = 2, sets its ratios at the smallest sizes.
  • The operations were measured on three DGX Spark machines, every arm of an operation, NEON and SVE, on one of them; see the NEON page for the split. Every number is from one Cortex-X925 core in the cluster with the 16 MiB L3, single-threaded.

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.7 0.7 2.45 0.3 6.70 1.4 1.22
3 2.6 1.1 2.45 0.4 6.67 2.0 1.33
4 3.5 1.4 2.45 0.5 6.48 2.4 1.45
6 5.1 2.0 2.52 0.8 6.81 3.1 1.63
8 6.8 3.0 2.30 1.1 6.46 5.6 1.22
12 10.4 4.3 2.43 1.6 6.61 6.3 1.64
16 13.7 5.2 2.61 2.0 6.89 10.5 1.30
24 19.5 7.5 2.59 3.0 6.52 14.3 1.37
32 26.0 9.6 2.70 3.9 6.72 17.2 1.51
48 27.4 13.3 2.07 5.5 5.02 20.7 1.32
64 29.6 15.2 1.94 6.9 4.29 22.6 1.31
96 29.0 18.7 1.55 9.3 3.12 26.0 1.11
100 24.3 19.0 1.27 9.0 2.71 24.4 1.00
128 27.2 21.6 1.26 11.3 2.41 27.6 0.99
192 30.1 25.4 1.18 14.4 2.09 30.1 1.00
256 30.4 28.1 1.08 16.6 1.83 31.4 0.97
384 30.8 31.5 0.98 19.7 1.56 32.8 0.94
512 30.9 33.4 0.93 21.8 1.42 33.6 0.92
768 28.8 35.7 0.81 22.3 1.29 34.1 0.84
1000 27.1 36.4 0.75 24.3 1.12 34.5 0.79
1001 27.9 36.8 0.76 24.2 1.16 34.2 0.82
1024 29.6 36.5 0.81 24.3 1.22 34.0 0.87
1536 30.2 38.1 0.79 26.4 1.14 33.5 0.90
2048 30.5 39.1 0.78 27.3 1.12 32.9 0.93
3072 30.8 38.6 0.80 28.6 1.08 33.5 0.92
4096 30.9 39.1 0.79 29.1 1.06 33.6 0.92
6144 31.1 39.6 0.79 29.9 1.04 35.0 0.89
8192 31.2 39.7 0.79 30.2 1.03 34.7 0.90
10000 31.2 37.8 0.83 30.3 1.03 33.2 0.94
12288 31.1 35.9 0.87 30.4 1.03 32.2 0.97
16384 29.7 31.2 0.95 29.2 1.02 27.9 1.07
32768 29.8 30.3 0.98 29.4 1.01 28.3 1.05
65536 29.6 30.2 0.98 29.4 1.01 28.3 1.05
100000 29.9 30.6 0.98 30.0 1.00 28.9 1.04
131072 29.5 30.0 0.98 29.4 1.00 28.2 1.05
262144 28.3 29.3 0.97 29.0 0.98 27.9 1.01
524288 26.1 26.3 0.99 26.5 0.99 26.3 0.99
1000000 24.6 24.4 1.01 24.3 1.01 24.7 1.00
1048576 21.2 21.7 0.98 20.5 1.03 20.5 1.03
2097152 21.9 21.3 1.03 20.9 1.05 20.7 1.05
4194304 13.8 15.3 0.91 13.9 0.99 15.3 0.90
8388608 10.1 10.7 0.94 10.1 1.00 10.7 0.94
16777216 8.9 9.2 0.97 8.9 1.00 9.3 0.96
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.7 0.7 2.45 0.3 6.52 1.3 1.33
3 2.6 1.0 2.52 0.4 6.31 1.9 1.32
4 3.4 1.4 2.41 0.5 6.34 2.4 1.42
6 5.2 2.0 2.64 0.8 6.52 3.2 1.64
8 6.8 2.5 2.72 1.0 6.55 3.1 2.23
12 9.7 3.7 2.59 1.5 6.41 3.7 2.61
16 12.6 4.8 2.60 1.9 6.75 5.0 2.50
24 12.8 6.4 1.99 2.8 4.49 5.5 2.32
32 12.8 7.7 1.67 3.6 3.58 14.7 0.87
48 13.2 9.4 1.41 4.8 2.78 12.1 1.10
64 14.7 10.9 1.35 5.8 2.55 17.9 0.82
96 15.1 12.9 1.17 7.3 2.06 20.5 0.73
100 12.8 12.8 0.99 6.7 1.90 19.9 0.64
128 15.2 14.0 1.09 8.4 1.81 21.4 0.71
192 15.4 15.5 0.99 9.9 1.55 22.6 0.68
256 15.5 16.8 0.92 10.9 1.42 23.4 0.66
384 14.3 17.9 0.80 11.3 1.27 23.9 0.60
512 14.8 18.4 0.81 12.2 1.21 24.2 0.61
768 15.1 17.6 0.86 13.2 1.15 24.4 0.62
1000 15.3 18.8 0.81 13.7 1.11 24.3 0.63
1001 15.2 18.7 0.81 13.7 1.11 24.3 0.63
1024 15.3 19.6 0.78 13.7 1.11 24.7 0.62
1536 15.4 18.5 0.83 14.4 1.07 24.8 0.62
2048 15.5 18.8 0.82 14.6 1.06 24.8 0.62
3072 15.6 19.1 0.82 15.0 1.04 20.8 0.75
4096 15.6 19.2 0.81 15.2 1.03 20.4 0.77
6144 15.6 17.9 0.87 15.3 1.01 17.5 0.89
8192 14.8 15.6 0.95 14.7 1.01 13.9 1.06
10000 15.6 16.7 0.93 15.4 1.01 14.0 1.11
12288 14.8 15.1 0.98 14.7 1.01 13.0 1.14
16384 14.9 15.1 0.98 14.8 1.00 13.0 1.14
32768 14.8 15.1 0.98 14.7 1.00 12.9 1.14
65536 14.5 15.0 0.97 14.8 0.98 13.5 1.08
100000 14.6 15.1 0.97 14.8 0.99 13.9 1.05
131072 14.1 14.6 0.97 14.5 0.98 13.7 1.03
262144 13.0 13.2 0.99 13.3 0.98 12.5 1.04
524288 10.7 10.9 0.99 10.3 1.05 10.6 1.01
1000000 11.5 11.5 1.01 11.4 1.01 11.4 1.02
1048576 11.2 10.7 1.05 10.8 1.04 10.7 1.05
2097152 7.6 7.6 1.00 7.6 1.00 7.7 0.99
4194304 5.3 5.3 1.00 5.3 1.00 5.4 0.99
8388608 4.5 4.6 0.99 4.6 0.99 4.6 0.98
16777216 4.4 4.4 0.99 4.4 1.00 4.5 0.99
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 6.8 1.0 6.74 0.3 25.62 1.3 5.21
3 8.7 1.4 6.31 0.4 22.02 2.0 4.44
4 15.7 2.1 7.49 0.5 30.17 2.6 6.00
6 12.6 2.8 4.58 0.8 16.19 3.9 3.22
8 21.9 4.2 5.25 1.1 20.71 4.8 4.55
12 29.3 5.5 5.31 1.6 18.81 7.3 4.03
16 28.3 7.8 3.62 2.0 13.79 8.4 3.37
24 32.3 9.9 3.27 3.0 10.80 11.8 2.73
32 41.8 12.5 3.34 3.7 11.25 14.8 2.82
48 43.9 17.1 2.56 5.3 8.21 19.8 2.22
64 43.7 20.9 2.09 6.2 7.00 23.9 1.83
96 46.4 25.9 1.79 7.9 5.86 27.9 1.66
100 44.2 26.0 1.70 8.2 5.42 29.3 1.51
128 45.3 29.2 1.55 9.1 4.97 29.7 1.53
192 49.6 33.3 1.49 10.5 4.72 36.2 1.37
256 52.7 38.0 1.39 11.5 4.58 39.6 1.33
384 53.5 39.1 1.37 12.5 4.27 39.2 1.37
512 56.7 39.3 1.44 13.2 4.29 38.5 1.47
768 57.7 40.1 1.44 14.0 4.13 39.3 1.47
1000 55.2 39.1 1.41 14.3 3.86 39.1 1.41
1001 56.1 38.9 1.44 14.3 3.92 38.7 1.45
1024 57.8 39.3 1.47 14.3 4.04 39.1 1.48
1536 58.3 36.3 1.60 14.7 3.96 35.8 1.63
2048 57.6 35.0 1.65 14.9 3.87 34.5 1.67
3072 58.2 33.5 1.74 15.2 3.83 33.4 1.75
4096 58.6 33.0 1.78 15.3 3.83 32.9 1.78
6144 57.8 32.1 1.80 15.4 3.75 32.4 1.78
8192 57.0 32.0 1.78 15.5 3.68 32.0 1.78
10000 44.2 31.6 1.40 15.5 2.85 31.8 1.39
12288 42.2 31.6 1.34 15.5 2.73 31.6 1.34
16384 39.2 31.5 1.25 15.5 2.52 31.6 1.24
32768 37.7 31.2 1.21 15.6 2.42 31.4 1.20
65536 34.1 31.2 1.09 15.7 2.18 31.5 1.09
100000 34.3 31.4 1.09 15.7 2.19 31.3 1.09
131072 34.0 31.1 1.09 15.6 2.18 31.4 1.08
262144 31.5 30.7 1.03 15.7 2.01 30.7 1.03
524288 25.3 26.1 0.97 15.7 1.61 25.9 0.98
1000000 22.6 23.0 0.98 15.7 1.44 23.2 0.97
1048576 21.1 22.3 0.94 15.6 1.35 22.1 0.95
2097152 21.8 22.1 0.99 15.5 1.41 22.2 0.98
4194304 15.1 15.1 1.00 13.8 1.10 15.2 1.00
8388608 11.7 11.7 1.00 11.5 1.01 11.7 1.00
16777216 10.2 10.2 1.00 10.1 1.01 10.2 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 6.3 1.0 6.48 0.3 23.16 1.3 4.83
3 9.1 1.4 6.54 0.4 22.72 2.1 4.23
4 11.5 1.8 6.23 0.5 21.55 2.4 4.74
6 13.8 2.4 5.86 0.8 17.50 3.9 3.52
8 14.9 3.5 4.27 1.0 14.58 4.5 3.30
12 17.2 5.2 3.29 1.5 11.65 6.3 2.73
16 20.8 6.6 3.15 2.0 10.34 7.9 2.64
24 21.3 8.2 2.62 2.6 8.11 10.5 2.04
32 22.7 10.0 2.27 3.3 6.92 12.5 1.82
48 23.5 12.3 1.91 4.1 5.67 14.1 1.67
64 22.7 14.3 1.59 4.7 4.86 15.2 1.49
96 25.1 16.7 1.51 5.4 4.66 18.1 1.39
100 25.2 17.8 1.42 5.5 4.61 18.3 1.37
128 26.4 18.2 1.45 5.9 4.51 20.1 1.32
192 27.8 20.0 1.40 6.4 4.37 20.1 1.39
256 28.7 20.4 1.41 6.7 4.29 19.4 1.48
384 29.5 21.7 1.36 7.0 4.22 19.8 1.49
512 29.9 22.6 1.32 7.2 4.14 19.6 1.53
768 30.5 23.4 1.30 7.4 4.11 18.0 1.69
1000 28.8 23.6 1.22 7.5 3.83 17.3 1.66
1001 28.2 23.1 1.22 7.5 3.78 17.4 1.62
1024 30.7 23.6 1.30 7.5 4.09 17.2 1.79
1536 31.0 24.0 1.29 7.6 4.07 16.7 1.86
2048 31.0 23.9 1.29 7.6 4.05 16.4 1.89
3072 30.9 23.3 1.32 7.7 4.01 16.1 1.91
4096 29.5 22.4 1.31 7.7 3.81 16.0 1.84
6144 21.1 20.9 1.01 7.8 2.72 15.8 1.34
8192 19.6 18.4 1.07 7.8 2.52 15.9 1.24
10000 19.8 20.3 0.97 7.8 2.53 15.8 1.25
12288 19.4 17.4 1.12 7.8 2.49 15.8 1.23
16384 18.8 17.4 1.08 7.8 2.41 15.6 1.20
32768 17.1 17.4 0.99 7.8 2.19 15.7 1.09
65536 17.0 17.2 0.99 7.8 2.17 15.6 1.09
100000 16.6 16.6 1.00 7.8 2.12 15.5 1.07
131072 15.8 15.5 1.02 7.8 2.02 15.3 1.03
262144 12.7 12.0 1.06 7.8 1.62 13.0 0.97
524288 10.5 10.6 0.99 7.8 1.36 11.0 0.96
1000000 11.2 11.3 0.99 7.8 1.42 11.7 0.95
1048576 10.9 11.1 0.98 7.7 1.41 11.1 0.98
2097152 7.5 7.5 1.01 6.9 1.09 7.6 1.00
4194304 5.8 5.9 1.00 5.8 1.02 5.8 1.00
8388608 5.1 5.1 1.00 5.1 1.01 5.1 1.00
16777216 4.8 4.8 1.00 4.8 1.01 4.8 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.6 0.4 4.09 0.2 6.65 0.7 2.11
3x3 2.8 0.8 3.34 0.5 5.70 1.7 1.65
4x4 7.4 1.5 5.01 0.8 8.91 3.0 2.45
6x6 8.5 3.1 2.78 1.6 5.32 5.9 1.44
8x8 21.7 5.2 4.17 3.6 6.00 9.5 2.28
12x12 34.7 9.4 3.69 6.2 5.60 17.9 1.94
16x16 43.6 14.2 3.07 11.8 3.69 22.9 1.91
24x24 50.8 26.9 1.89 21.5 2.36 35.6 1.43
32x32 82.0 37.7 2.17 30.7 2.67 41.5 1.98
48x48 76.5 54.3 1.41 44.3 1.73 56.6 1.35
64x64 89.6 63.1 1.42 53.7 1.67 60.2 1.49
96x96 90.0 70.0 1.29 59.7 1.51 66.0 1.36
100x100 76.3 70.6 1.08 53.3 1.43 65.5 1.16
128x128 83.9 71.2 1.18 60.4 1.39 62.5 1.34
192x192 68.6 64.8 1.06 61.0 1.12 55.0 1.25
200x200 66.2 68.0 0.97 59.3 1.12 61.0 1.08
256x256 64.6 62.2 1.04 59.9 1.08 61.8 1.05
257x257 51.4 50.2 1.02 49.6 1.04 53.5 0.96
384x384 60.8 59.2 1.03 58.4 1.04 56.4 1.08
500x500 59.0 63.5 0.93 58.4 1.01 60.4 0.98
512x512 59.6 59.2 1.01 59.3 1.01 60.6 0.98
768x768 51.0 50.4 1.01 48.3 1.06 53.0 0.96
1000x1000 45.1 46.0 0.98 42.6 1.06 53.0 0.85
1001x1001 43.1 44.4 0.97 41.1 1.05 49.9 0.86
1024x1024 40.1 40.7 0.98 41.4 0.97 52.5 0.76
1536x1536 40.2 40.2 1.00 39.2 1.03 42.8 0.94
2048x2048 29.1 30.5 0.95 35.5 0.82 37.3 0.78
3072x3072 23.4 24.6 0.95 25.5 0.92 26.2 0.89
4096x4096 18.4 19.1 0.96 20.6 0.89 21.5 0.85
4097x4097 17.5 18.6 0.94 19.9 0.88 22.3 0.79
6144x6144 16.7 18.2 0.92 18.4 0.91 18.4 0.90
8192x8192 16.3 17.0 0.96 17.6 0.93 17.7 0.92
12288x12288 16.1 16.8 0.96 17.6 0.91 16.9 0.95
16384x16384 17.2 15.9 1.08 16.9 1.01 17.1 1.01
8x10000 41.5 21.3 1.95 21.4 1.94 12.4 3.35
100x10000 41.5 41.5 1.00 47.6 0.87 45.4 0.91
1000x10000 20.6 21.8 0.95 23.9 0.86 27.0 0.76
4000x10000 18.4 18.6 0.99 18.4 1.00 18.8 0.98
10000x8 60.6 61.9 0.98 59.2 1.03 43.4 1.40
10000x100 41.4 44.1 0.94 42.6 0.97 44.4 0.93
10000x1000 24.5 25.9 0.95 25.4 0.97 24.4 1.01
10000x4000 18.6 19.1 0.97 18.4 1.01 18.6 1.00
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 2.0 0.4 5.38 0.2 8.60 0.7 2.72
3x3 3.5 0.8 4.30 0.5 7.13 1.7 2.03
4x4 6.6 1.4 4.70 0.8 8.05 2.9 2.32
6x6 12.0 3.1 3.86 1.6 7.54 6.0 2.00
8x8 16.5 3.9 4.22 3.5 4.74 7.9 2.08
12x12 21.5 8.4 2.55 5.7 3.74 14.6 1.47
16x16 34.8 12.5 2.79 10.5 3.31 18.1 1.92
24x24 37.4 20.4 1.84 17.1 2.19 25.3 1.48
32x32 43.4 25.9 1.67 22.3 1.95 27.8 1.56
48x48 44.8 32.6 1.37 27.4 1.63 31.9 1.41
64x64 44.6 36.1 1.24 31.1 1.43 32.1 1.39
96x96 42.1 35.3 1.19 30.9 1.36 33.4 1.26
100x100 37.9 36.6 1.04 29.3 1.29 31.8 1.19
128x128 35.0 32.9 1.07 30.2 1.16 29.6 1.19
192x192 31.8 29.9 1.06 28.5 1.12 28.3 1.12
200x200 31.6 31.7 1.00 29.1 1.09 30.4 1.04
256x256 30.6 30.1 1.02 29.8 1.02 28.2 1.08
257x257 27.1 27.6 0.98 26.6 1.02 26.1 1.04
384x384 29.3 28.7 1.02 28.2 1.04 27.1 1.08
500x500 26.4 27.6 0.96 25.0 1.06 27.1 0.97
512x512 23.5 24.1 0.98 25.6 0.92 26.1 0.90
768x768 21.8 21.6 1.01 22.1 0.99 22.9 0.95
1000x1000 20.7 21.0 0.98 20.9 0.99 21.6 0.96
1001x1001 20.2 20.5 0.98 20.8 0.97 22.7 0.89
1024x1024 16.5 17.9 0.92 18.3 0.90 21.7 0.76
1536x1536 15.3 16.0 0.96 18.8 0.82 16.7 0.92
2048x2048 11.5 11.5 1.00 12.9 0.89 11.1 1.03
3072x3072 9.4 10.1 0.93 10.3 0.91 9.0 1.04
4096x4096 8.4 8.9 0.94 9.1 0.92 9.4 0.89
4097x4097 6.8 8.6 0.79 9.3 0.73 9.6 0.70
6144x6144 8.1 8.5 0.96 8.8 0.92 8.7 0.94
8192x8192 8.6 8.0 1.07 8.6 0.99 8.6 1.00
12288x12288 8.6 8.4 1.03 8.9 0.96 8.0 1.08
16384x16384 8.6 7.1 1.21 8.3 1.03 8.5 1.01
8x10000 26.8 19.8 1.35 15.9 1.68 12.2 2.19
100x10000 17.4 18.2 0.95 19.7 0.88 21.8 0.80
1000x10000 9.5 9.7 0.98 9.7 0.97 9.1 1.04
4000x10000 8.8 9.0 0.98 9.0 0.98 8.2 1.07
10000x8 29.2 30.2 0.97 29.8 0.98 20.6 1.42
10000x100 18.3 20.7 0.89 20.7 0.88 19.1 0.96
10000x1000 10.1 10.7 0.94 10.6 0.95 10.2 0.99
10000x4000 8.6 9.0 0.95 8.9 0.96 8.8 0.98
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.4 0.9 1.65 0.2 8.41 0.5 2.86
3x3x3 2.4 1.6 1.46 0.5 4.47 1.5 1.55
4x4x4 13.2 2.9 4.50 1.2 10.75 3.9 3.37
6x6x6 8.4 5.1 1.66 3.4 2.45 9.2 0.92
8x8x8 19.3 6.2 3.10 8.2 2.36 21.0 0.92
12x12x12 32.6 14.8 2.20 16.7 1.96 45.3 0.72
16x16x16 45.4 27.9 1.63 24.3 1.86 72.9 0.62
24x24x24 68.9 64.2 1.07 57.6 1.20 79.3 0.87
32x32x32 82.5 23.0 3.58 62.0 1.33 111.7 0.74
48x48x48 102.3 115.3 0.89 97.7 1.05 123.9 0.83
64x64x64 110.1 120.8 0.91 96.7 1.14 128.1 0.86
96x96x96 127.6 147.2 0.87 128.8 0.99 74.4 1.71
100x100x100 123.8 134.7 0.92 116.0 1.07 127.3 0.97
128x128x128 134.4 149.8 0.90 134.3 1.00 132.0 1.02
160x160x160 139.7 153.9 0.91 136.3 1.02 134.7 1.04
192x192x192 117.9 163.9 0.72 152.9 0.77 134.3 0.88
200x200x200 147.2 162.6 0.90 151.8 0.97 133.4 1.10
224x224x224 149.2 164.4 0.91 153.7 0.97 135.8 1.10
256x256x256 149.9 163.8 0.92 153.7 0.98 110.4 1.36
257x257x257 146.3 158.1 0.93 152.3 0.96 130.6 1.12
288x288x288 153.5 170.2 0.90 162.6 0.94 137.5 1.12
320x320x320 155.1 168.7 0.92 161.4 0.96 136.8 1.13
384x384x384 130.4 171.5 0.76 166.3 0.78 136.5 0.96
448x448x448 156.0 168.7 0.92 166.1 0.94 137.2 1.14
500x500x500 158.7 167.6 0.95 168.6 0.94 135.6 1.17
512x512x512 158.4 168.2 0.94 167.8 0.94 136.5 1.16
768x768x768 160.4 172.6 0.93 169.7 0.95 137.7 1.16
1000x1000x1000 160.1 175.2 0.91 170.9 0.94 137.9 1.16
1001x1001x1001 159.5 171.6 0.93 170.4 0.94 136.3 1.17
1024x1024x1024 159.6 171.0 0.93 169.7 0.94 137.4 1.16
1536x1536x1536 159.5 171.4 0.93 172.7 0.92 137.4 1.16
2048x2048x2048 158.8 164.2 0.97 170.7 0.93 135.9 1.17
3072x3072x3072 159.2 166.2 0.96 174.0 0.91 135.2 1.18
4096x4096x4096 158.3 165.5 0.96 170.4 0.93 132.6 1.19
4097x4097x4097 157.8 172.4 0.91 171.1 0.92 133.4 1.18
64x64x1024 114.1 127.4 0.90 123.4 0.92 125.9 0.91
64x1024x64 112.8 142.6 0.79 116.2 0.97 132.7 0.85
256x256x1024 149.3 158.4 0.94 158.7 0.94 134.8 1.11
1024x64x64 135.5 37.9 3.57 104.6 1.30 133.0 1.02
1024x256x256 156.3 158.9 0.98 155.1 1.01 137.3 1.14
4096x96x96 142.2 140.1 1.01 131.9 1.08 133.4 1.07
4096x128x128 147.7 142.8 1.03 135.3 1.09 135.9 1.09
4096x144x144 149.4 150.5 0.99 142.7 1.05 134.9 1.11
4096x160x160 150.9 146.3 1.03 140.9 1.07 135.9 1.11
4096x176x176 152.1 151.9 1.00 146.9 1.04 136.4 1.12
8192x128x128 147.8 142.5 1.04 135.0 1.09 135.3 1.09
10000x8x8 67.7 41.8 1.62 23.0 2.95 93.2 0.73
10000x100x100 148.4 147.7 1.00 129.8 1.14 135.6 1.09
10000x1000x1000 159.2 164.5 0.97 171.1 0.93 137.6 1.16
10000x4000x4000 163.8 170.2 0.96 174.9 0.94 136.1 1.20
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 3.6 0.7 5.18 0.2 21.19 0.5 6.87
3x3x3 3.1 2.4 1.27 0.5 5.83 1.6 1.98
4x4x4 8.1 2.9 2.78 1.2 6.62 3.7 2.18
6x6x6 10.6 5.0 2.13 3.8 2.76 8.5 1.25
8x8x8 15.5 6.2 2.48 5.6 2.79 17.6 0.88
12x12x12 28.7 11.3 2.53 11.1 2.59 33.1 0.87
16x16x16 39.3 21.5 1.82 18.9 2.08 14.8 2.65
24x24x24 52.8 41.8 1.26 33.6 1.57 54.7 0.96
32x32x32 58.6 47.4 1.24 36.6 1.60 13.5 4.34
48x48x48 66.0 66.1 1.00 52.4 1.26 45.4 1.45
64x64x64 68.2 70.1 0.97 56.1 1.22 35.1 1.94
96x96x96 74.7 76.9 0.97 66.6 1.12 47.2 1.58
100x100x100 73.5 73.3 1.00 64.2 1.15 66.2 1.11
128x128x128 75.4 77.8 0.97 69.7 1.08 46.8 1.61
160x160x160 78.3 81.9 0.96 74.6 1.05 68.0 1.15
192x192x192 59.1 83.9 0.70 78.0 0.76 68.0 0.87
200x200x200 79.8 83.2 0.96 77.3 1.03 68.3 1.17
224x224x224 79.7 83.1 0.96 77.7 1.03 68.4 1.17
256x256x256 79.2 84.3 0.94 73.5 1.08 56.0 1.41
257x257x257 78.3 82.4 0.95 71.7 1.09 67.1 1.17
288x288x288 79.3 84.9 0.93 75.9 1.05 68.7 1.16
320x320x320 77.5 84.2 0.92 75.7 1.02 68.9 1.12
384x384x384 77.8 84.7 0.92 79.0 0.98 68.6 1.13
448x448x448 80.8 84.0 0.96 79.5 1.02 68.8 1.18
500x500x500 80.8 84.1 0.96 77.5 1.04 68.8 1.17
512x512x512 78.2 83.5 0.94 77.0 1.02 69.2 1.13
768x768x768 77.6 84.5 0.92 79.3 0.98 68.6 1.13
1000x1000x1000 78.0 85.2 0.92 79.8 0.98 69.4 1.12
1001x1001x1001 77.6 84.4 0.92 79.4 0.98 68.7 1.13
1024x1024x1024 75.9 82.9 0.92 78.7 0.96 68.8 1.10
1536x1536x1536 78.0 83.1 0.94 80.4 0.97 68.2 1.14
2048x2048x2048 76.1 82.0 0.93 80.7 0.94 66.8 1.14
3072x3072x3072 75.6 83.0 0.91 81.4 0.93 66.4 1.14
4096x4096x4096 77.2 82.5 0.94 80.5 0.96 66.0 1.17
4097x4097x4097 78.5 82.4 0.95 80.2 0.98 65.8 1.19
64x64x1024 71.9 73.5 0.98 66.8 1.08 64.0 1.12
64x1024x64 72.3 75.1 0.96 59.8 1.21 67.4 1.07
256x256x1024 77.1 83.2 0.93 76.5 1.01 68.0 1.13
1024x64x64 68.2 73.9 0.92 60.2 1.13 67.0 1.02
1024x256x256 78.0 83.7 0.93 73.0 1.07 69.2 1.13
4096x96x96 70.1 74.8 0.94 66.7 1.05 66.4 1.06
4096x128x128 72.5 77.0 0.94 71.8 1.01 68.4 1.06
4096x144x144 73.5 77.8 0.95 73.8 1.00 67.0 1.10
4096x160x160 74.4 79.8 0.93 75.5 0.99 67.7 1.10
4096x176x176 75.2 80.7 0.93 76.3 0.98 67.3 1.12
8192x128x128 71.8 75.8 0.95 71.5 1.00 67.6 1.06
10000x8x8 33.5 43.6 0.77 18.4 1.81 47.3 0.71
10000x100x100 72.5 76.3 0.95 66.7 1.09 66.7 1.09
10000x1000x1000 73.6 84.1 0.88 79.1 0.93 68.6 1.07
10000x4000x4000 76.5 84.4 0.91 82.2 0.93 67.6 1.13
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.5 0.4 1.10 0.0 55.86 0.4 1.24
3x3 1.0 1.0 0.99 0.0 38.18 0.8 1.25
4x4 3.3 2.4 1.38 0.1 60.31 1.8 1.86
6x6 4.6 2.4 1.94 0.2 27.21 3.0 1.55
8x8 9.4 2.8 3.35 0.4 24.99 4.7 1.99
12x12 13.8 6.0 2.29 1.0 13.31 8.1 1.70
16x16 17.7 6.9 2.57 1.9 9.45 6.2 2.87
24x24 23.0 10.4 2.22 5.0 4.60 10.7 2.14
32x32 28.2 13.5 2.09 7.3 3.85 12.0 2.36
48x48 35.7 21.7 1.64 14.3 2.50 17.4 2.05
64x64 41.5 19.4 2.14 18.1 2.29 22.4 1.85
96x96 49.0 47.0 1.04 30.2 1.62 25.3 1.94
100x100 49.2 46.4 1.06 28.0 1.75 31.8 1.55
128x128 53.4 63.7 0.84 37.5 1.43 38.5 1.39
192x192 55.3 85.3 0.65 53.8 1.03 50.7 1.09
200x200 67.5 86.9 0.78 54.5 1.24 52.2 1.29
256x256 82.8 93.5 0.89 63.5 1.30 56.7 1.46
257x257 79.9 94.7 0.84 62.3 1.28 58.4 1.37
384x384 94.5 112.2 0.84 83.6 1.13 73.1 1.29
500x500 106.1 124.0 0.86 94.2 1.13 82.5 1.29
512x512 104.6 120.3 0.87 95.4 1.10 83.8 1.25
768x768 117.5 133.6 0.88 113.5 1.04 96.5 1.22
1000x1000 125.7 140.4 0.90 123.4 1.02 103.2 1.22
1001x1001 124.7 138.0 0.90 122.5 1.02 101.9 1.22
1024x1024 124.9 120.5 1.04 122.7 1.02 103.2 1.21
1536x1536 132.9 142.0 0.94 136.6 0.97 112.8 1.18
2048x2048 135.9 132.2 1.03 142.2 0.96 116.8 1.16
3072x3072 135.7 136.9 0.99 151.1 0.90 120.2 1.13
4096x4096 136.9 137.6 1.00 151.8 0.90 122.6 1.12
4097x4097 135.5 145.2 0.93 152.4 0.89 121.8 1.11
64x4096 41.1 48.2 0.85 23.1 1.78 22.9 1.80
256x4096 80.9 92.0 0.88 66.1 1.22 60.2 1.34
1024x8 65.9 39.6 1.67 40.6 1.62 61.9 1.07
1024x64 114.6 88.0 1.30 95.6 1.20 96.5 1.19
1024x256 122.6 120.8 1.02 116.9 1.05 102.9 1.19
1024x4096 122.0 115.1 1.06 120.7 1.01 101.2 1.21
4096x8 48.8 37.6 1.30 37.3 1.31 58.9 0.83
4096x64 118.0 103.7 1.14 107.5 1.10 112.2 1.05
4096x256 140.2 137.6 1.02 142.2 0.99 124.2 1.13
4096x1024 143.4 143.7 1.00 154.0 0.93 127.0 1.13
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.6 0.4 1.42 0.0 63.83 0.4 1.47
3x3 1.3 0.9 1.52 0.0 50.86 0.8 1.73
4x4 4.2 3.1 1.37 0.1 73.35 1.7 2.41
6x6 6.6 2.0 3.25 0.2 37.29 3.1 2.15
8x8 12.9 5.0 2.60 0.4 35.58 4.7 2.76
12x12 17.4 6.7 2.58 1.0 17.50 7.7 2.26
16x16 20.7 7.9 2.61 2.0 10.62 8.4 2.47
24x24 23.9 9.0 2.65 4.6 5.17 14.4 1.66
32x32 26.6 11.0 2.41 6.7 3.97 8.5 3.14
48x48 29.8 13.4 2.22 12.7 2.35 23.2 1.29
64x64 31.5 18.7 1.68 16.5 1.91 18.0 1.75
96x96 33.4 35.1 0.95 24.7 1.35 26.7 1.25
100x100 33.6 36.1 0.93 24.0 1.40 36.3 0.93
128x128 34.1 39.6 0.86 29.4 1.16 33.2 1.03
192x192 45.7 47.6 0.96 39.8 1.15 42.2 1.08
200x200 46.1 50.2 0.92 39.9 1.16 47.6 0.97
256x256 54.5 47.1 1.16 45.4 1.20 41.9 1.30
257x257 53.8 47.5 1.13 44.7 1.20 50.4 1.07
384x384 61.2 53.0 1.15 53.6 1.14 56.3 1.09
500x500 58.5 58.4 1.00 57.4 1.02 58.1 1.01
512x512 63.3 53.8 1.18 57.4 1.10 58.5 1.08
768x768 67.9 62.0 1.09 64.5 1.05 61.8 1.10
1000x1000 71.2 67.1 1.06 67.8 1.05 63.7 1.12
1001x1001 70.4 66.2 1.06 67.6 1.04 62.9 1.12
1024x1024 68.7 62.7 1.09 67.3 1.02 63.2 1.09
1536x1536 70.1 72.2 0.97 70.8 0.99 64.2 1.09
2048x2048 69.7 71.2 0.98 71.7 0.97 63.3 1.10
3072x3072 71.6 73.4 0.98 73.9 0.97 62.4 1.15
4096x4096 71.6 72.9 0.98 75.4 0.95 63.1 1.13
4097x4097 71.3 74.6 0.96 74.6 0.96 62.9 1.13
64x4096 31.2 31.2 1.00 18.6 1.68 29.4 1.06
256x4096 52.6 52.8 1.00 44.9 1.17 50.4 1.04
1024x8 34.8 29.6 1.17 31.1 1.12 42.1 0.83
1024x64 62.9 58.7 1.07 60.2 1.05 60.2 1.04
1024x256 68.4 66.0 1.04 66.7 1.03 63.2 1.08
1024x4096 67.0 63.4 1.06 65.6 1.02 60.1 1.11
4096x8 22.6 22.2 1.02 22.8 0.99 32.0 0.70
4096x64 59.4 61.2 0.97 60.1 0.99 60.2 0.99
4096x256 71.5 74.7 0.96 73.2 0.98 66.1 1.08
4096x1024 72.2 72.8 0.99 75.2 0.96 65.0 1.11
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.79 0.0 20.81 0.3 0.84
3x3 0.6 0.1 4.70 0.0 19.54 0.7 0.83
4x4 1.5 0.3 5.26 0.1 21.96 1.6 0.95
6x6 3.3 0.9 3.80 0.2 15.46 4.0 0.82
8x8 8.9 2.0 4.53 0.5 18.41 8.1 1.10
12x12 14.4 5.6 2.57 1.5 9.89 14.8 0.97
16x16 27.4 10.7 2.57 3.1 8.76 22.6 1.21
24x24 45.6 26.7 1.71 8.9 5.10 33.5 1.36
32x32 61.4 42.2 1.45 17.0 3.60 47.3 1.30
48x48 82.8 57.8 1.43 38.2 2.16 77.0 1.07
64x64 97.4 75.8 1.29 56.7 1.72 87.2 1.12
96x96 113.4 103.8 1.09 89.5 1.27 45.0 2.52
100x100 110.1 89.0 1.24 85.6 1.29 100.2 1.10
128x128 120.8 108.1 1.12 106.6 1.13 112.1 1.08
192x192 92.6 129.3 0.72 130.3 0.71 120.5 0.77
200x200 136.3 124.8 1.09 134.5 1.01 118.5 1.15
256x256 139.8 138.7 1.01 141.2 0.99 94.3 1.48
257x257 136.6 132.4 1.03 137.4 0.99 116.8 1.17
384x384 107.9 154.0 0.70 153.7 0.70 129.2 0.84
500x500 150.9 155.9 0.97 159.9 0.94 128.8 1.17
512x512 152.4 157.9 0.97 158.7 0.96 131.5 1.16
768x768 125.6 161.9 0.78 161.5 0.78 133.8 0.94
1000x1000 158.0 160.8 0.98 168.6 0.94 135.1 1.17
1001x1001 155.2 158.4 0.98 165.6 0.94 132.3 1.17
1024x1024 154.3 156.2 0.99 163.9 0.94 135.6 1.14
1536x1536 156.1 162.9 0.96 168.2 0.93 136.8 1.14
2048x2048 155.5 157.9 0.98 164.9 0.94 136.9 1.14
3072x3072 158.5 161.2 0.98 170.4 0.93 136.9 1.16
4096x4096 158.3 161.7 0.98 168.3 0.94 134.0 1.18
4097x4097 158.4 168.6 0.94 169.0 0.94 133.1 1.19
64x4096 94.0 98.7 0.95 98.6 0.95 97.4 0.97
256x4096 138.3 142.7 0.97 147.0 0.94 124.3 1.11
1024x4096 151.1 154.0 0.98 163.0 0.93 135.7 1.11
4096x8 64.0 29.0 2.20 28.4 2.25 63.0 1.02
4096x64 140.6 111.1 1.27 119.6 1.18 136.0 1.03
4096x256 156.9 149.8 1.05 159.9 0.98 132.3 1.19
4096x1024 157.8 163.0 0.97 167.1 0.94 133.5 1.18
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.2 0.0 5.47 0.0 19.51 0.3 0.78
3x3 0.5 0.1 4.90 0.0 17.16 0.7 0.74
4x4 1.2 0.2 5.16 0.1 17.95 1.6 0.78
6x6 3.2 0.7 4.34 0.2 14.68 3.7 0.86
8x8 5.4 1.6 3.44 0.5 11.64 6.7 0.80
12x12 9.1 4.3 2.14 1.4 6.55 13.7 0.67
16x16 15.9 8.2 1.93 2.9 5.48 7.0 2.25
24x24 23.2 18.2 1.27 7.8 2.97 32.3 0.72
32x32 30.0 20.6 1.46 13.0 2.30 7.3 4.10
48x48 39.4 35.8 1.10 26.9 1.47 32.5 1.21
64x64 46.2 42.2 1.10 35.1 1.32 21.0 2.20
96x96 55.5 54.9 1.01 51.0 1.09 34.1 1.63
100x100 55.4 50.6 1.10 50.6 1.10 57.4 0.97
128x128 59.2 58.5 1.01 54.8 1.08 43.2 1.37
192x192 41.8 68.9 0.61 67.8 0.62 63.7 0.66
200x200 67.0 66.8 1.00 68.3 0.98 63.4 1.06
256x256 68.6 72.3 0.95 65.4 1.05 49.4 1.39
257x257 67.1 70.0 0.96 67.3 1.00 63.7 1.05
384x384 71.8 77.1 0.93 73.6 0.98 66.4 1.08
500x500 73.4 76.4 0.96 73.4 1.00 66.3 1.11
512x512 53.6 74.7 0.72 71.3 0.75 67.2 0.80
768x768 74.8 77.3 0.97 76.9 0.97 68.1 1.10
1000x1000 75.4 78.2 0.96 78.6 0.96 68.0 1.11
1001x1001 74.7 78.1 0.96 78.2 0.96 67.7 1.10
1024x1024 72.1 77.0 0.94 77.1 0.94 68.1 1.06
1536x1536 73.0 76.9 0.95 78.1 0.93 68.6 1.06
2048x2048 74.1 78.2 0.95 78.6 0.94 68.1 1.09
3072x3072 74.3 79.4 0.94 80.2 0.93 66.8 1.11
4096x4096 73.7 79.9 0.92 79.8 0.92 66.5 1.11
4097x4097 72.5 81.0 0.90 79.7 0.91 66.5 1.09
64x4096 46.9 50.1 0.94 48.4 0.97 53.6 0.88
256x4096 67.4 70.8 0.95 70.0 0.96 64.8 1.04
1024x4096 71.3 74.3 0.96 76.8 0.93 67.5 1.06
4096x8 27.8 16.5 1.68 15.8 1.75 40.8 0.68
4096x64 68.1 56.1 1.21 60.5 1.13 65.9 1.03
4096x256 76.5 76.8 1.00 70.8 1.08 66.4 1.15
4096x1024 72.4 79.0 0.92 78.7 0.92 65.6 1.10
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.3 1.09 0.0 16.22 0.1 2.38
3 0.5 0.5 0.95 0.1 7.36 0.4 1.39
4 0.9 0.9 0.98 0.1 6.18 0.6 1.46
6 1.3 1.8 0.71 0.4 3.36 1.5 0.88
8 2.2 2.8 0.78 0.8 2.83 2.5 0.85
12 4.1 4.7 0.88 1.6 2.55 4.8 0.85
16 6.2 5.9 1.04 2.9 2.15 7.1 0.87
24 11.0 5.2 2.11 5.7 1.93 11.6 0.95
32 10.7 7.3 1.46 8.7 1.22 15.6 0.68
48 17.3 11.6 1.49 13.9 1.25 15.7 1.10
64 23.0 13.8 1.66 17.6 1.31 11.2 2.05
96 32.2 21.1 1.53 22.6 1.43 29.5 1.09
100 32.3 17.8 1.82 16.2 2.00 34.2 0.95
128 50.7 24.6 2.06 23.3 2.17 42.5 1.19
192 63.7 45.8 1.39 35.6 1.79 40.8 1.56
200 64.7 46.4 1.39 33.0 1.96 54.7 1.18
256 82.7 53.0 1.56 41.2 2.01 66.8 1.24
257 77.4 52.2 1.48 41.7 1.85 66.0 1.17
384 102.2 68.0 1.50 58.5 1.75 83.3 1.23
500 108.2 80.9 1.34 68.1 1.59 86.0 1.26
512 108.6 79.1 1.37 68.5 1.59 93.9 1.16
768 121.1 89.5 1.35 86.7 1.40 105.0 1.15
1000 129.0 99.2 1.30 96.6 1.34 107.1 1.21
1001 124.7 91.2 1.37 95.6 1.30 104.8 1.19
1024 117.3 85.5 1.37 94.4 1.24 110.9 1.06
1536 136.3 121.9 1.12 112.7 1.21 119.3 1.14
2048 135.9 111.0 1.22 118.4 1.15 123.8 1.10
3072 139.4 113.8 1.22 127.7 1.09 125.9 1.11
4096 137.9 109.9 1.26 130.2 1.06 125.7 1.10
4097 136.0 112.9 1.20 127.3 1.07 124.7 1.09
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.3 1.18 0.0 16.69 0.1 2.66
3 0.6 0.5 1.17 0.1 9.46 0.3 1.94
4 0.9 0.8 1.06 0.1 6.07 0.6 1.51
6 1.4 1.5 0.93 0.4 3.60 1.3 1.10
8 2.0 2.1 0.98 0.8 2.61 2.1 0.96
12 3.8 3.9 0.97 1.7 2.27 4.3 0.90
16 6.2 5.0 1.24 3.0 2.07 6.1 1.02
24 10.2 4.5 2.26 5.7 1.78 9.8 1.03
32 7.9 6.7 1.19 8.0 0.99 12.3 0.64
48 11.5 9.7 1.18 11.3 1.02 4.8 2.40
64 14.2 12.3 1.15 13.3 1.06 15.3 0.92
96 18.5 18.6 0.99 15.5 1.19 26.5 0.70
100 18.5 16.7 1.11 12.7 1.46 27.0 0.69
128 27.8 24.1 1.15 17.8 1.56 19.3 1.44
192 33.8 32.7 1.03 25.2 1.34 37.4 0.90
200 34.3 34.0 1.01 24.6 1.39 39.4 0.87
256 43.7 37.6 1.16 29.8 1.47 37.6 1.16
257 42.6 37.6 1.13 29.9 1.42 43.7 0.97
384 51.8 44.2 1.17 39.1 1.32 45.7 1.13
500 54.5 51.3 1.06 44.3 1.23 52.6 1.04
512 53.5 44.3 1.21 43.3 1.23 53.7 1.00
768 61.5 58.9 1.04 53.0 1.16 58.5 1.05
1000 65.9 62.2 1.06 58.0 1.14 60.9 1.08
1001 65.1 60.9 1.07 57.9 1.12 60.0 1.09
1024 60.4 58.0 1.04 56.9 1.06 60.4 1.00
1536 66.9 61.7 1.08 63.0 1.06 63.2 1.06
2048 65.3 60.8 1.07 64.4 1.01 62.4 1.05
3072 68.5 61.4 1.12 67.8 1.01 62.4 1.10
4096 67.8 57.7 1.18 67.9 1.00 61.0 1.11
4097 67.2 59.0 1.14 68.0 0.99 60.9 1.10
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 0.74 0.0 6.07 0.1 1.24
3 0.4 0.5 0.88 0.1 4.96 0.3 1.41
4 0.7 0.7 0.95 0.2 4.17 0.5 1.47
6 1.2 1.6 0.79 0.4 2.81 0.9 1.32
8 1.8 2.1 0.86 0.8 2.23 1.5 1.23
12 3.7 4.3 0.86 1.6 2.35 2.3 1.65
16 5.1 5.4 0.95 0.9 5.90 3.0 1.69
24 7.9 8.8 0.90 2.4 3.35 5.7 1.40
32 10.8 10.1 1.07 2.9 3.75 6.8 1.58
48 16.3 13.1 1.24 5.8 2.82 11.5 1.42
64 21.2 15.9 1.34 7.4 2.88 14.2 1.49
96 29.1 24.2 1.20 14.0 2.07 22.7 1.28
100 30.0 23.5 1.28 13.3 2.26 24.7 1.22
128 37.2 33.3 1.12 18.8 1.98 29.1 1.28
192 47.8 39.8 1.20 30.2 1.58 38.0 1.26
200 48.9 43.9 1.11 30.8 1.58 43.5 1.12
256 61.0 39.4 1.55 38.1 1.60 50.8 1.20
257 59.0 43.1 1.37 37.8 1.56 49.6 1.19
384 75.9 53.1 1.43 54.6 1.39 65.2 1.16
500 85.0 64.7 1.31 64.7 1.31 74.6 1.14
512 84.2 56.4 1.49 64.4 1.31 75.2 1.12
768 95.9 71.1 1.35 81.6 1.17 89.3 1.07
1000 104.5 88.8 1.18 94.8 1.10 97.2 1.08
1001 102.5 88.0 1.16 94.0 1.09 95.7 1.07
1024 103.9 73.1 1.42 93.2 1.11 98.1 1.06
1536 117.7 100.7 1.17 110.1 1.07 108.8 1.08
2048 123.2 96.6 1.28 110.4 1.12 114.0 1.08
3072 128.7 103.9 1.24 128.7 1.00 119.1 1.08
4096 130.3 101.8 1.28 128.4 1.01 120.9 1.08
4097 125.8 113.1 1.11 129.3 0.97 120.3 1.05
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.3 0.2 1.35 0.0 11.95 0.1 2.33
3 0.6 0.5 1.07 0.1 7.21 0.3 1.78
4 1.0 0.9 1.05 0.2 5.71 0.6 1.75
6 1.7 1.8 0.93 0.5 3.75 1.1 1.60
8 2.7 2.9 0.90 0.8 3.15 1.6 1.66
12 4.5 5.2 0.86 1.7 2.62 2.4 1.88
16 6.2 6.7 0.92 0.9 6.57 3.0 2.03
24 8.1 8.6 0.94 2.4 3.39 5.4 1.49
32 10.4 9.1 1.15 2.9 3.55 6.2 1.67
48 14.5 12.7 1.14 5.5 2.65 12.4 1.17
64 17.6 15.8 1.11 7.2 2.46 9.7 1.82
96 22.0 21.0 1.05 12.1 1.82 21.8 1.01
100 22.3 20.8 1.07 11.6 1.92 23.7 0.94
128 26.7 22.5 1.19 15.6 1.72 23.8 1.12
192 32.2 30.4 1.06 23.4 1.38 32.8 0.98
200 33.1 34.4 0.96 23.8 1.39 36.6 0.90
256 40.0 32.4 1.23 28.3 1.42 38.3 1.04
257 39.2 37.6 1.04 28.2 1.39 39.7 0.99
384 46.6 40.0 1.17 37.0 1.26 47.1 0.99
500 50.5 49.3 1.02 41.7 1.21 51.2 0.99
512 49.8 39.0 1.28 38.6 1.29 51.3 0.97
768 54.4 50.3 1.08 48.9 1.11 55.9 0.97
1000 58.2 58.0 1.00 56.3 1.03 58.0 1.00
1001 57.6 58.2 0.99 55.7 1.03 57.6 1.00
1024 57.5 47.8 1.20 51.6 1.12 58.2 0.99
1536 62.6 57.5 1.09 58.9 1.06 60.5 1.03
2048 62.7 54.9 1.14 60.5 1.04 60.5 1.04
3072 65.9 62.4 1.06 65.0 1.01 61.0 1.08
4096 67.2 60.8 1.11 66.2 1.02 61.0 1.10
4097 66.8 66.7 1.00 67.5 0.99 60.9 1.10
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.2 0.3 0.68 0.2 1.17 0.2 1.05
3x3 0.3 0.4 0.69 0.3 0.91 0.3 0.99
4x4 0.5 0.7 0.70 0.6 0.85 0.5 1.00
6x6 0.9 1.3 0.68 1.2 0.77 0.9 1.00
8x8 1.4 2.2 0.66 1.9 0.74 1.4 1.03
12x12 2.9 4.1 0.69 3.7 0.77 2.7 1.05
16x16 4.6 6.2 0.74 5.7 0.80 4.1 1.11
24x24 7.4 10.2 0.73 9.9 0.75 7.1 1.04
32x32 10.1 13.8 0.73 13.7 0.73 10.0 1.00
48x48 15.0 20.1 0.74 20.7 0.72 15.2 0.98
64x64 13.2 23.9 0.55 25.9 0.51 19.2 0.69
96x96 24.5 28.5 0.86 33.3 0.73 24.7 0.99
100x100 21.5 28.7 0.75 33.9 0.63 25.3 0.85
128x128 30.7 30.4 1.01 37.3 0.82 27.8 1.10
192x192 44.8 30.4 1.47 42.4 1.06 44.4 1.01
200x200 44.7 29.8 1.50 43.4 1.03 53.2 0.84
256x256 54.0 29.3 1.84 50.3 1.07 54.2 1.00
257x257 53.6 29.5 1.82 50.2 1.07 62.8 0.85
384x384 70.3 28.6 2.46 64.3 1.09 73.0 0.96
500x500 78.5 88.8 0.88 75.0 1.05 87.5 0.90
512x512 78.3 85.8 0.91 71.7 1.09 81.2 0.96
768x768 91.1 95.7 0.95 85.6 1.06 92.4 0.99
1000x1000 97.5 105.7 0.92 97.9 1.00 103.2 0.94
1001x1001 95.8 102.9 0.93 96.3 0.99 102.2 0.94
1024x1024 96.1 94.5 1.02 89.6 1.07 92.4 1.04
1536x1536 105.0 118.3 0.89 111.8 0.94 105.1 1.00
2048x2048 107.3 110.3 0.97 112.9 0.95 100.9 1.06
3072x3072 111.1 110.8 1.00 124.3 0.89 105.9 1.05
4096x4096 107.9 101.3 1.07 125.4 0.86 102.3 1.05
4097x4097 105.8 105.6 1.00 125.8 0.84 101.7 1.04
4096x8 19.4 16.1 1.20 18.0 1.08 14.2 1.36
4096x64 24.7 20.8 1.19 34.0 0.73 27.6 0.90
4096x256 56.5 21.2 2.66 61.3 0.92 55.4 1.02
4096x1024 93.6 87.5 1.07 99.3 0.94 94.9 0.99
10000x8 20.0 15.6 1.28 18.4 1.09 14.1 1.42
10000x100 38.8 20.3 1.91 41.2 0.94 29.4 1.32
10000x1000 99.8 94.4 1.06 103.1 0.97 99.3 1.01
10000x4000 112.3 111.3 1.01 135.3 0.83 107.9 1.04
100000x8 19.2 14.8 1.30 17.0 1.13 13.5 1.42
100000x64 26.6 17.9 1.48 34.6 0.77 24.7 1.08
100000x256 59.2 15.3 3.87 61.1 0.97 45.6 1.30
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.2 0.3 0.59 0.2 1.16 0.2 1.14
3x3 0.3 0.5 0.60 0.3 0.90 0.3 1.04
4x4 0.4 0.8 0.59 0.5 0.82 0.4 1.00
6x6 0.9 1.4 0.60 1.1 0.77 0.8 1.02
8x8 1.4 2.3 0.61 1.8 0.75 1.3 1.04
12x12 2.7 3.9 0.68 3.5 0.76 2.4 1.12
16x16 4.2 5.7 0.74 5.2 0.81 3.4 1.23
24x24 6.8 8.7 0.78 8.4 0.81 5.2 1.32
32x32 8.9 11.1 0.80 11.2 0.79 6.5 1.38
48x48 11.7 14.5 0.81 16.2 0.72 10.6 1.10
64x64 10.8 16.3 0.66 18.8 0.58 12.5 0.87
96x96 18.2 17.9 1.02 16.3 1.12 15.8 1.15
100x100 16.7 17.7 0.94 15.1 1.11 16.0 1.05
128x128 22.1 17.0 1.30 20.8 1.06 16.4 1.35
192x192 30.1 17.2 1.75 28.1 1.07 26.4 1.14
200x200 30.3 16.9 1.80 29.0 1.05 31.8 0.95
256x256 34.6 16.6 2.08 32.9 1.05 32.7 1.06
257x257 34.5 17.3 1.99 33.0 1.04 36.8 0.94
384x384 42.7 45.9 0.93 39.2 1.09 42.0 1.02
500x500 47.0 50.9 0.92 43.5 1.08 48.3 0.97
512x512 46.6 47.7 0.98 40.6 1.15 44.1 1.06
768x768 53.3 55.4 0.96 49.9 1.07 51.2 1.04
1000x1000 56.2 59.3 0.95 54.7 1.03 55.0 1.02
1001x1001 55.9 58.9 0.95 54.5 1.03 54.7 1.02
1024x1024 55.7 55.6 1.00 51.8 1.08 51.9 1.07
1536x1536 59.5 59.8 1.00 56.4 1.05 54.9 1.08
2048x2048 57.3 57.1 1.00 56.7 1.01 54.4 1.05
3072x3072 59.0 58.1 1.02 64.2 0.92 54.0 1.09
4096x4096 57.3 56.4 1.02 65.2 0.88 52.7 1.09
4097x4097 56.8 57.4 0.99 65.9 0.86 52.9 1.08
4096x8 11.6 10.1 1.16 12.0 0.97 9.4 1.24
4096x64 14.4 15.1 0.95 21.7 0.66 15.3 0.94
4096x256 32.9 15.3 2.14 34.1 0.97 30.3 1.09
4096x1024 51.9 53.4 0.97 54.5 0.95 51.2 1.01
10000x8 12.0 9.8 1.23 14.2 0.85 9.3 1.29
10000x100 20.9 13.5 1.55 28.3 0.74 14.7 1.42
10000x1000 52.3 53.2 0.98 54.9 0.95 49.4 1.06
10000x4000 59.3 58.4 1.02 68.8 0.86 54.6 1.09
100000x8 10.6 8.8 1.20 12.5 0.85 8.5 1.25
100000x64 11.8 9.2 1.28 20.8 0.57 10.0 1.19
100000x256 27.8 7.7 3.60 27.1 1.03 20.5 1.36
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.7 0.6 1.28 0.6 1.24 0.6 1.22
3 0.9 0.5 1.84 0.4 1.98 0.6 1.43
4 1.1 0.6 1.79 0.6 1.79 0.8 1.28
6 1.7 1.0 1.66 1.0 1.66 1.4 1.21
8 2.4 1.4 1.69 1.4 1.69 1.9 1.31
12 4.0 2.4 1.63 2.5 1.61 3.1 1.29
16 5.7 3.4 1.67 3.5 1.64 4.1 1.39
24 8.7 4.9 1.79 5.0 1.74 5.5 1.58
32 11.4 6.4 1.79 6.5 1.77 6.9 1.67
48 16.7 8.3 2.01 7.7 2.17 8.8 1.90
64 21.0 9.8 2.14 9.5 2.22 9.8 2.13
96 27.8 11.7 2.37 11.6 2.39 11.7 2.38
100 28.2 11.9 2.38 11.5 2.46 12.1 2.33
128 33.4 12.8 2.62 12.8 2.62 13.2 2.52
192 40.7 14.2 2.87 14.3 2.85 14.8 2.76
200 41.6 14.4 2.88 14.8 2.82 15.0 2.77
256 44.5 15.0 2.97 15.5 2.88 15.6 2.84
257 42.7 14.8 2.88 15.5 2.75 15.8 2.70
384 48.5 15.9 3.05 16.6 2.91 16.8 2.88
500 50.3 16.3 3.09 17.3 2.91 17.2 2.92
512 49.9 16.3 3.07 17.2 2.90 17.3 2.88
768 52.1 16.8 3.11 17.9 2.92 18.0 2.89
1000 52.8 17.0 3.10 18.4 2.87 18.4 2.88
1001 57.9 17.1 3.39 18.3 3.17 18.4 3.15
1024 51.8 16.8 3.08 18.3 2.83 18.2 2.84
1536 52.3 17.4 3.02 18.8 2.78 18.6 2.81
2048 49.7 17.0 2.92 18.9 2.63 18.8 2.65
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.9 0.5 1.65 0.6 1.60 0.6 1.55
3 0.7 0.4 1.67 0.4 1.68 0.5 1.34
4 0.9 0.5 1.62 0.5 1.57 0.7 1.26
6 1.3 0.8 1.57 0.8 1.53 1.0 1.24
8 1.8 1.2 1.52 1.2 1.48 1.5 1.18
12 3.0 1.9 1.56 2.0 1.50 2.3 1.29
16 3.9 2.8 1.43 2.8 1.38 3.0 1.29
24 6.0 3.9 1.52 4.1 1.46 4.2 1.44
32 7.7 5.0 1.53 5.2 1.49 5.1 1.51
48 10.1 6.6 1.53 6.2 1.62 6.6 1.54
64 12.6 7.8 1.61 7.6 1.66 7.6 1.66
96 15.4 8.9 1.73 8.8 1.76 9.0 1.71
100 15.8 9.2 1.71 9.1 1.75 9.4 1.69
128 17.5 10.0 1.75 10.0 1.76 10.0 1.76
192 20.2 10.9 1.86 11.3 1.79 11.5 1.76
200 20.4 11.0 1.85 11.5 1.77 11.7 1.74
256 20.8 11.4 1.82 12.1 1.71 12.3 1.70
257 22.1 11.5 1.92 12.2 1.81 12.4 1.79
384 22.1 12.0 1.83 13.1 1.69 13.3 1.66
500 22.6 12.5 1.81 13.5 1.67 13.8 1.64
512 22.6 12.5 1.82 13.6 1.66 13.7 1.66
768 23.1 13.0 1.78 14.4 1.60 14.3 1.62
1000 23.3 13.2 1.76 14.8 1.58 14.5 1.61
1001 27.2 13.3 2.05 14.8 1.84 14.6 1.86
1024 22.7 12.9 1.77 14.7 1.55 14.5 1.57
1536 22.9 13.1 1.74 15.1 1.51 14.8 1.55
2048 20.8 12.1 1.72 15.0 1.39 14.7 1.41
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 2.2 0.3 6.54 0.3 8.14 0.4 5.66
3x3 1.7 0.6 3.05 0.5 3.36 0.7 2.29
4x4 2.0 0.8 2.50 0.8 2.66 1.1 1.87
6x6 2.0 1.5 1.37 1.4 1.42 2.0 1.02
8x8 2.5 2.2 1.14 2.2 1.17 3.0 0.86
12x12 2.9 3.8 0.76 3.8 0.77 4.7 0.61
16x16 5.2 5.5 0.95 5.2 1.00 6.5 0.79
24x24 7.4 8.2 0.90 8.2 0.90 9.3 0.79
32x32 10.5 13.2 0.79 12.0 0.88 14.7 0.71
48x48 17.1 20.1 0.85 16.0 1.06 21.2 0.81
64x64 23.1 29.4 0.79 24.2 0.95 32.5 0.71
96x96 37.2 44.0 0.85 37.3 1.00 46.2 0.81
100x100 38.7 45.7 0.85 37.7 1.03 50.0 0.77
128x128 49.0 56.7 0.86 49.1 1.00 63.1 0.78
192x192 71.8 72.1 1.00 65.8 1.09 79.7 0.90
200x200 73.7 74.1 0.99 67.6 1.09 83.6 0.88
256x256 86.0 80.6 1.07 77.5 1.11 84.8 1.01
257x257 88.3 80.3 1.10 80.9 1.09 99.5 0.89
384x384 115.0 98.7 1.17 102.5 1.12 111.9 1.03
500x500 133.7 111.6 1.20 124.2 1.08 142.6 0.94
512x512 130.7 107.5 1.22 118.6 1.10 127.0 1.03
768x768 153.7 114.7 1.34 141.2 1.09 148.3 1.04
1000x1000 169.3 116.8 1.45 158.1 1.07 176.1 0.96
1001x1001 168.3 111.3 1.51 157.9 1.07 176.3 0.95
1024x1024 154.8 106.7 1.45 141.1 1.10 144.5 1.07
1536x1536 171.2 112.8 1.52 160.2 1.07 172.6 0.99
2048x2048 157.4 93.6 1.68 147.3 1.07 160.2 0.98
4096x64 86.8 62.8 1.38 77.4 1.12 75.9 1.14
4096x256 155.6 68.6 2.27 135.5 1.15 136.5 1.14
4096x1024 178.8 89.7 1.99 168.8 1.06 168.9 1.06
10000x8 29.2 33.2 0.88 30.6 0.96 32.0 0.91
10000x100 128.1 74.5 1.72 98.1 1.31 85.3 1.50
10000x1000 214.7 109.5 1.96 215.1 1.00 215.0 1.00
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 2.5 0.3 7.20 0.3 8.95 0.4 6.34
3x3 1.2 0.5 2.47 0.5 2.62 0.6 1.98
4x4 1.5 0.7 2.09 0.7 2.23 0.9 1.62
6x6 1.6 1.2 1.26 1.2 1.32 1.6 0.98
8x8 1.6 1.8 0.91 1.8 0.92 2.3 0.72
12x12 1.9 3.0 0.62 3.0 0.62 3.5 0.53
16x16 3.8 4.2 0.91 4.2 0.91 4.5 0.86
24x24 5.3 6.3 0.84 6.1 0.86 6.4 0.83
32x32 7.5 10.4 0.72 9.5 0.79 10.5 0.72
48x48 11.9 15.5 0.77 12.4 0.96 13.9 0.85
64x64 16.1 22.5 0.72 18.4 0.88 23.1 0.70
96x96 25.1 30.1 0.83 26.8 0.94 31.8 0.79
100x100 26.1 30.8 0.85 26.9 0.97 34.2 0.76
128x128 31.3 36.1 0.87 33.1 0.94 41.3 0.76
192x192 46.1 43.4 1.06 43.9 1.05 50.9 0.91
200x200 47.8 44.6 1.07 46.1 1.04 55.2 0.87
256x256 54.6 50.0 1.09 52.2 1.05 57.2 0.96
257x257 55.8 49.3 1.13 54.3 1.03 63.7 0.87
384x384 70.0 57.3 1.22 65.4 1.07 69.9 1.00
500x500 79.4 61.2 1.30 74.8 1.06 85.0 0.93
512x512 74.5 56.2 1.32 68.2 1.09 71.2 1.05
768x768 83.9 59.2 1.42 80.6 1.04 85.4 0.98
1000x1000 88.5 59.2 1.50 85.3 1.04 94.1 0.94
1001x1001 88.7 57.8 1.53 85.1 1.04 94.2 0.94
1024x1024 77.3 52.7 1.47 78.5 0.99 81.2 0.95
1536x1536 88.4 51.9 1.70 81.4 1.09 87.3 1.01
2048x2048 74.2 38.5 1.93 72.0 1.03 80.1 0.93
4096x64 53.0 41.0 1.29 47.5 1.12 43.5 1.22
4096x256 90.6 42.9 2.11 77.3 1.17 77.5 1.17
4096x1024 94.4 46.1 2.05 92.4 1.02 92.4 1.02
10000x8 13.6 24.6 0.55 24.4 0.56 23.2 0.59
10000x100 71.3 44.4 1.61 56.4 1.27 44.3 1.61
10000x1000 114.2 46.8 2.44 111.4 1.02 110.6 1.03
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.3 0.4 6.22 0.2 10.52 0.4 5.79
3 1.4 0.5 3.01 0.3 4.73 0.6 2.49
4 2.3 0.8 2.99 0.5 4.48 1.0 2.34
6 3.1 1.3 2.50 0.9 3.29 1.5 2.11
8 4.5 1.9 2.35 1.4 3.16 2.2 2.06
12 7.2 3.3 2.19 2.4 3.03 3.6 1.98
16 9.0 4.8 1.88 3.3 2.71 4.8 1.87
24 11.6 8.0 1.44 5.0 2.30 6.9 1.68
32 13.9 10.9 1.28 6.5 2.14 8.8 1.57
48 17.1 16.7 1.02 8.7 1.96 11.2 1.52
64 18.8 21.5 0.87 10.3 1.82 12.9 1.45
96 21.7 15.1 1.44 12.5 1.74 15.3 1.42
100 22.3 16.3 1.37 13.1 1.70 16.1 1.38
128 23.2 18.7 1.24 15.4 1.51 18.4 1.26
192 26.1 33.9 0.77 26.2 1.00 33.7 0.77
200 26.4 35.7 0.74 28.0 0.94 36.5 0.72
256 26.5 46.7 0.57 34.6 0.76 44.2 0.60
257 27.0 47.7 0.57 35.0 0.77 44.0 0.61
384 24.0 66.3 0.36 49.7 0.48 62.9 0.38
500 29.3 83.0 0.35 62.9 0.47 77.2 0.38
512 28.6 54.3 0.53 46.9 0.61 55.5 0.52
768 29.5 81.8 0.36 73.8 0.40 85.1 0.35
1000 30.6 106.1 0.29 99.4 0.31 113.8 0.27
1001 28.8 106.6 0.27 98.4 0.29 114.0 0.25
1024 26.4 90.4 0.29 86.6 0.30 99.8 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 3.0 0.4 8.33 0.2 13.80 0.4 8.43
3 1.3 0.5 2.74 0.3 4.39 0.5 2.57
4 1.6 0.6 2.53 0.5 3.50 0.7 2.27
6 2.6 1.3 2.10 0.8 3.10 1.3 2.03
8 3.4 1.8 1.94 1.2 2.75 1.9 1.85
12 4.7 2.8 1.65 2.1 2.27 3.0 1.59
16 5.8 4.1 1.43 2.8 2.07 3.6 1.60
24 7.0 6.0 1.18 4.1 1.72 5.1 1.37
32 8.2 7.9 1.04 5.2 1.57 6.3 1.29
48 9.7 11.4 0.85 6.9 1.41 8.3 1.17
64 10.8 13.8 0.78 8.1 1.33 9.6 1.12
96 11.7 10.5 1.11 8.9 1.32 10.3 1.14
100 11.7 11.1 1.06 9.3 1.26 10.9 1.08
128 12.2 11.4 1.07 9.7 1.25 11.0 1.11
192 12.2 20.7 0.59 16.0 0.76 19.3 0.63
200 13.1 21.6 0.60 16.9 0.77 20.6 0.63
256 12.9 25.7 0.50 20.3 0.64 23.9 0.54
257 13.3 26.7 0.50 21.1 0.63 25.0 0.53
384 13.1 36.0 0.36 29.3 0.45 33.6 0.39
500 13.3 43.2 0.31 36.5 0.36 41.3 0.32
512 12.6 27.7 0.46 26.6 0.47 28.0 0.45
768 13.1 42.9 0.31 40.5 0.32 44.2 0.30
1000 13.2 54.5 0.24 53.6 0.25 57.5 0.23
1001 13.2 54.8 0.24 54.3 0.24 57.8 0.23
1024 12.0 44.3 0.27 46.4 0.26 50.3 0.24