Core: Solve whole TRSM diagonal blocks with the shared packet kernel
This makes the blocked left triangular solve pass each whole diagonal block to the shared packet TRSM kernel from !3119 (merged), and sizes that kernel's right-hand-side tile from the register file. Across the 276 shapes of benchmarks/Core/bench_trsm_packet.cpp the median change is +17.5% on Apple M4 (NEON) and +0.6% on AVX2, with AVX2 gains of +5% to +11% at n = 192–256; on neither machine is any shape more than 3% slower in both a default and a 64-byte-aligned build.
Why
On AVX2 the trailing gebp updates already run at the GEMM rate. The loss was on the diagonal: its blocks carry k_c/n of the flops (30% for double at n = 256, k_c = 88), and they were solved as max(mr, nr)-row panels (12 for double, 24 for float), each followed by a gebp update of that depth. At n = 256 the packet kernel ran at 37% (double) and 54% (float) of the gebp rate on such panels, and the depth-12/24 updates at 80% and 89% (rdtsc-instrumented copy of the solver, i7-13700HX).
Changes
- Whole diagonal blocks. When the packet kernel is enabled and the right-hand side is at least two packets wide, each
k_c \times k_cdiagonal block is solved in one kernel call, split evenly whenk_cexceeds the kernel's 128-row workspace. Column chunks are sized so a chunk ofk_crows stays in L2 between the solve and the pack (k_c \cdot \text{cols} \cdot \texttt{sizeof(Scalar)} \le L_2/2) and are packet-aligned. Narrower right-hand sides keep the old panels, including the compile-time width bound GCC uses to shorten the scalar kernel's loops. - Register-budget tile. Accumulators take half the register file:
RhsPackets = min((R - 2) / 5, R / 8), i.e. 1, 2, 4 packets for R = 8, 16, 32 registers. 32-register targets (NEON, SVE, RVV, LSX, AltiVec, ZVector, MSA, HVX; AVX-512 only withEIGEN_USE_AVX512_TRSM_KERNELS=0) go from 2 to 4 packets, with a 2-packet pass for the columns left over; SSE and AVX2 keep 2. A single-packet tile solves 8 rows per step where the registers allow, as a pass ahead of the 4-row loop, so on 16-register targets 2-packet tiles compile to the same instructions as before (AVX2 doublesolve<2>: 0 of 823 lines differ in a disassembly diff with only addresses stripped). On 32-register targets 2-packet tiles also solve 8 rows per step. - Row-major tails. For a row-major triangle, the last
cols % PacketSizecolumns are solved as one zero-padded packet in a stack copy (out of line) instead of one scalar dot product per coefficient: right-side row-major ×17 shapes (n ≤ 128) run 45–113% faster, n = 512 3–12%. A column-major triangle keeps the scalar tail, a contiguous axpy that compilers vectorize; padding measured 10–17% slower there on AVX2 for a single leftover column.
Unchanged: AVX-512 builds using the specialized TRSM kernels (the default), complex and custom scalars, and the right-side solver for column-major operands.
Performance
x = b; a.triangularView<Mode>().solveInPlace<Side>(x) from benchmarks/Core/bench_trsm_packet.cpp (dynamic Matrix<float|double>; name = triangle/operand layout and side, n = triangle order, nrhs = right-hand sides), CPU time. Each arm ran twice, alternating before/after, each run 3 repetitions of ≥ 0.1 s; the tables give the mean of the two run medians and the change in throughput, t_\text{before}/t_\text{after} - 1.
- AVX2: 13th Gen Intel(R) Core(TM) i7-13700HX under WSL2, GCC 13.3.0,
-O3 -DNDEBUG -mavx2 -mfma, pinned to one core; the 1-min load average was sampled every 5 s and stayed ≤ 1.3 (the benchmark itself is 1.0). - NEON: Apple M4 (Mac mini, macOS 27.0), Apple clang 21.0.0,
-O3 -DNDEBUG, not pinned, with an idle CI virtual machine running. - Google Benchmark 1.9.5 on both. The aligned builds add
-falign-functions=64 -falign-loops=64to both arms.
Shape name/n/nrhs |
AVX2 before (µs) | AVX2 after (µs) | AVX2 change | AVX2 change, aligned build | M4 before (µs) | M4 after (µs) | M4 change |
|---|---|---|---|---|---|---|---|
float/16/16 |
0.073 | 0.072 | +0.9% | -0.6% | 0.108 | 0.095 | +13.4% |
float/64/64 |
2.35 | 2.35 | +0.1% | -0.9% | 4.07 | 3.16 | +28.8% |
float/128/128 |
18.1 | 17.6 | +2.7% | +0.4% | 30.0 | 22.1 | +35.6% |
float/192/192 |
63.6 | 60.0 | +5.9% | +6.2% | 89.8 | 75.1 | +19.6% |
float/256/256 |
142.0 | 135.1 | +5.1% | +4.4% | 214.3 | 169.2 | +26.7% |
float/512/512 |
1,087 | 1,061 | +2.5% | +0.3% | 1,381 | 1,232 | +12.1% |
float/1024/1024 |
8,207 | 8,184 | +0.3% | +0.8% | 10,632 | 9,356 | +13.6% |
float/2048/2048 |
64,496 | 64,213 | +0.4% | +0.2% | 81,128 | 73,414 | +10.5% |
double/16/16 |
0.122 | 0.120 | +1.0% | -1.3% | 0.211 | 0.178 | +19.0% |
double/64/64 |
4.92 | 5.09 | -3.4% | -0.8% | 8.11 | 6.29 | +28.9% |
double/128/128 |
35.0 | 36.0 | -2.7% | +1.0% | 61.9 | 44.6 | +38.8% |
double/192/192 |
132.6 | 119.7 | +10.8% | +10.2% | 179.0 | 149.0 | +20.1% |
double/256/256 |
314.5 | 287.3 | +9.4% | +7.7% | 424.0 | 338.1 | +25.4% |
double/512/512 |
2,326 | 2,241 | +3.8% | +2.8% | 2,848 | 2,496 | +14.1% |
double/1024/1024 |
17,020 | 17,097 | -0.4% | +0.1% | 21,362 | 18,928 | +12.9% |
double/2048/2048 |
132,494 | 129,681 | +2.2% | +2.1% | 171,010 | 147,596 | +15.9% |
float/1024/128 |
1,067 | 1,056 | +1.1% | +0.4% | 1,369 | 1,219 | +12.3% |
double/1024/128 |
2,191 | 2,192 | -0.1% | +1.6% | 2,775 | 2,461 | +12.8% |
float_RightRow/128/17 |
6.71 | 3.59 | +86.8% | +95.3% | 8.45 | 3.97 | +112.9% |
double_RightRow/512/64 |
311.9 | 292.2 | +6.7% | +6.0% | 388.4 | 328.3 | +18.3% |
| Machine, build | Median change | 5th percentile | Best | Shapes > 3% slower under every pairing |
|---|---|---|---|---|
| i7-13700HX AVX2, default | +0.6% | -3.2% | +101.1% | 4 |
| i7-13700HX AVX2, 64-byte aligned | +0.8% | -2.5% | +101.3% | 2 |
| Apple M4 NEON, default | +17.5% | -0.4% | +112.9% | 0 |
| Apple M4 NEON, 64-byte aligned | +17.9% | -0.5% | +116.9% | 0 |
"Slower under every pairing" means the new code's faster run is still > 3% slower than master's slower run. On AVX2 the flagged shapes differ between the two builds, and each is within 3% in the other one. double_Right/64/4096 runs the right-side solver, which this MR does not change, so code placement alone moved it by 5.5%:
| Machine, build | Shape | Change | Same shape, other build |
|---|---|---|---|
| AVX2 default | double_Right/64/4096 |
-5.5% | +1.2% |
| AVX2 default | double/128/8 |
-4.9% | -0.6% |
| AVX2 default | double/64/8 |
-4.8% | -0.9% |
| AVX2 default | float/64/4 |
-3.9% | +1.5% |
| AVX2 aligned | float_RowTri/64/4 |
-6.0% | -2.8% |
| AVX2 aligned | float_RowTri/128/4 |
-4.6% | -0.3% |
Validation
trsm_packet,trsm_packet_cancellation,trsm_packet_cancellation_fastmath,product_trsolve,triangular,triangular_in_place(46 executables),EIGEN_REPEAT=3 EIGEN_SEED=42, all passing in four configurations: GCC 13.3 AVX2+FMA (C++14); Apple clang 21 NEON; GCC 13.3 AVX-512F/DQ/VL/BW on AMD RYZEN AI MAX+ 395 w/ Radeon 8060S (WSL2), with the default AVX-512 TRSM kernels and withEIGEN_USE_AVX512_TRSM_KERNELS=0(4-packet tiles on x86).- The existing tests reach each new path. On NEON, each mutation below makes
trsm_packet_1andtrsm_packet_2fail; the first two also failproduct_trsolve_18:- skipping the pack after a whole-block panel;
- solving one packet in the 2-packet leftover pass (NEON);
- dropping the padded tail's copy-back.
- C++14 builds with GCC 13.3 and clang 18;
clang-format-17,scripts/check_style.pyandscripts/clang_tidy_hook.pyon the diff are clean.
Not done
- Not measured on AMD Zen 5 or against a vendor BLAS. The AVX2 comparison page (libeigen.gitlab.io, Zen 5) measured master
15f227178, before !3119 (merged). - The right-side solver for column-major operands is untouched.
Appendix A: all 276 shapes, AVX2 (i7-13700HX)
| Shape | Before (µs) | After (µs) | Change | Max run-to-run spread | Change, aligned build |
|---|---|---|---|---|---|
float/8/8 |
0.025 | 0.023 | +7.0% | 2.2% | +4.6% |
float/12/12 |
0.153 | 0.157 | -2.5% | 1.2% | +0.7% |
float/16/16 |
0.073 | 0.072 | +0.9% | 4.2% | -0.6% |
float/24/24 |
0.188 | 0.182 | +3.5% | 0.5% | +3.3% |
float/31/31 |
0.949 | 0.973 | -2.4% | 0.9% | -2.0% |
float/32/32 |
0.358 | 0.360 | -0.7% | 1.4% | -0.1% |
float/33/33 |
0.565 | 0.563 | +0.3% | 0.8% | +0.3% |
float/48/48 |
1.07 | 1.07 | -0.1% | 1.1% | -1.3% |
float/63/63 |
3.98 | 3.86 | +3.1% | 3.4% | -0.1% |
float/64/64 |
2.35 | 2.35 | +0.1% | 0.6% | -0.9% |
float/65/65 |
2.92 | 2.93 | -0.5% | 1.5% | -1.6% |
float/95/95 |
11.0 | 10.7 | +2.7% | 1.2% | +3.6% |
float/96/96 |
7.88 | 7.82 | +0.8% | 0.2% | +0.0% |
float/97/97 |
9.22 | 9.24 | -0.1% | 0.7% | +0.8% |
float/100/100 |
10.4 | 10.3 | +1.2% | 1.0% | +0.5% |
float/127/127 |
23.8 | 23.2 | +2.7% | 1.0% | +0.3% |
float/128/128 |
18.1 | 17.6 | +2.7% | 2.5% | +0.4% |
float/129/129 |
22.7 | 21.2 | +7.0% | 4.3% | +5.8% |
float/192/192 |
63.6 | 60.0 | +5.9% | 0.2% | +6.2% |
float/256/256 |
142.0 | 135.1 | +5.1% | 0.4% | +4.4% |
float/257/257 |
151.4 | 145.7 | +4.0% | 1.5% | +4.5% |
float/512/512 |
1,087 | 1,061 | +2.5% | 0.5% | +0.3% |
float/1024/1024 |
8,207 | 8,184 | +0.3% | 1.3% | +0.8% |
float/2048/2048 |
64,496 | 64,213 | +0.4% | 0.8% | +0.2% |
float/4096/4096 |
512,795 | 499,709 | +2.6% | 0.9% | -0.0% |
float/64/1 |
0.425 | 0.416 | +2.0% | 3.7% | +0.2% |
float/64/4 |
0.777 | 0.808 | -3.9% | 0.8% | +1.5% |
float/64/8 |
0.406 | 0.332 | +22.3% | 0.8% | +21.7% |
float/64/16 |
0.603 | 0.605 | -0.3% | 1.3% | -0.9% |
float/64/17 |
0.938 | 0.941 | -0.3% | 0.7% | -0.3% |
float/64/4096 |
183.6 | 181.3 | +1.3% | 4.1% | -0.4% |
float/128/4 |
2.04 | 2.07 | -1.9% | 0.2% | -0.1% |
float/128/8 |
1.64 | 1.23 | +33.4% | 3.9% | +33.0% |
float/128/17 |
3.14 | 3.05 | +2.8% | 1.3% | -0.3% |
float/1024/8 |
119.5 | 119.6 | -0.2% | 7.0% | -1.9% |
float/1024/32 |
311.9 | 298.8 | +4.4% | 4.2% | +4.6% |
float/1024/128 |
1,067 | 1,056 | +1.1% | 3.3% | +0.4% |
float/4096/32 |
5,671 | 5,727 | -1.0% | 8.2% | +1.5% |
double/8/8 |
0.035 | 0.035 | +0.0% | 2.7% | -0.6% |
double/12/12 |
0.074 | 0.075 | -1.2% | 4.4% | -0.4% |
double/16/16 |
0.122 | 0.120 | +1.0% | 1.9% | -1.3% |
double/24/24 |
0.312 | 0.312 | +0.0% | 1.6% | -0.7% |
double/31/31 |
0.946 | 1.04 | -8.6% | 16.1% | -0.1% |
double/32/32 |
0.669 | 0.680 | -1.6% | 1.5% | -0.1% |
double/33/33 |
0.925 | 0.933 | -0.9% | 0.8% | +0.1% |
double/48/48 |
2.07 | 2.13 | -2.9% | 0.9% | -1.0% |
double/63/63 |
6.06 | 6.01 | +0.8% | 4.8% | +1.8% |
double/64/64 |
4.92 | 5.09 | -3.4% | 1.1% | -0.8% |
double/65/65 |
5.86 | 5.94 | -1.3% | 2.7% | -1.0% |
double/95/95 |
19.6 | 19.0 | +3.2% | 1.1% | -1.2% |
double/96/96 |
15.7 | 16.0 | -1.9% | 0.7% | -1.3% |
double/97/97 |
18.6 | 18.9 | -1.9% | 2.8% | +1.5% |
double/100/100 |
18.4 | 18.5 | -0.6% | 2.5% | +0.9% |
double/127/127 |
43.0 | 42.5 | +1.3% | 3.2% | +1.7% |
double/128/128 |
35.0 | 36.0 | -2.7% | 1.3% | +1.0% |
double/129/129 |
46.9 | 43.1 | +8.8% | 3.0% | +6.7% |
double/192/192 |
132.6 | 119.7 | +10.8% | 1.9% | +10.2% |
double/256/256 |
314.5 | 287.3 | +9.4% | 1.3% | +7.7% |
double/257/257 |
330.5 | 305.5 | +8.2% | 2.4% | +6.0% |
double/512/512 |
2,326 | 2,241 | +3.8% | 3.4% | +2.8% |
double/1024/1024 |
17,020 | 17,097 | -0.4% | 3.2% | +0.1% |
double/2048/2048 |
132,494 | 129,681 | +2.2% | 1.0% | +2.1% |
double/4096/4096 |
1,021,231 | 1,013,150 | +0.8% | 0.8% | +0.3% |
double/64/1 |
0.567 | 0.575 | -1.5% | 0.9% | -1.5% |
double/64/4 |
0.411 | 0.329 | +25.0% | 0.6% | +24.7% |
double/64/8 |
0.569 | 0.598 | -4.8% | 2.8% | -0.9% |
double/64/16 |
1.14 | 1.17 | -2.3% | 1.1% | -0.9% |
double/64/17 |
1.57 | 1.57 | -0.3% | 0.9% | -0.0% |
double/64/4096 |
372.2 | 379.1 | -1.8% | 0.7% | -0.2% |
double/128/4 |
1.71 | 1.35 | +26.8% | 1.2% | +28.3% |
double/128/8 |
2.12 | 2.23 | -4.9% | 0.4% | -0.6% |
double/128/17 |
5.83 | 5.94 | -1.8% | 2.4% | +0.3% |
double/1024/8 |
253.5 | 262.1 | -3.3% | 9.3% | +4.5% |
double/1024/32 |
623.4 | 631.2 | -1.2% | 3.0% | +0.4% |
double/1024/128 |
2,191 | 2,192 | -0.1% | 1.1% | +1.6% |
double/4096/32 |
11,831 | 11,817 | +0.1% | 0.6% | -0.1% |
float_RowTri/8/8 |
0.027 | 0.025 | +7.9% | 0.5% | +5.7% |
float_RowTri/12/12 |
0.137 | 0.104 | +32.1% | 3.3% | +26.9% |
float_RowTri/16/16 |
0.082 | 0.084 | -2.6% | 8.2% | +0.2% |
float_RowTri/24/24 |
0.205 | 0.200 | +2.1% | 2.9% | +1.1% |
float_RowTri/31/31 |
1.10 | 0.545 | +101.1% | 2.4% | +98.1% |
float_RowTri/32/32 |
0.386 | 0.389 | -0.7% | 2.5% | +0.7% |
float_RowTri/33/33 |
0.590 | 0.587 | +0.6% | 4.3% | +4.2% |
float_RowTri/48/48 |
1.13 | 1.13 | -0.5% | 1.0% | +0.8% |
float_RowTri/63/63 |
5.45 | 2.96 | +84.3% | 0.4% | +83.1% |
float_RowTri/64/64 |
2.47 | 2.49 | -0.8% | 1.7% | -0.6% |
float_RowTri/65/65 |
3.26 | 3.16 | +3.2% | 2.5% | +2.4% |
float_RowTri/95/95 |
15.8 | 9.76 | +62.2% | 1.0% | +61.1% |
float_RowTri/96/96 |
8.44 | 8.34 | +1.1% | 1.1% | +1.0% |
float_RowTri/97/97 |
10.4 | 10.1 | +3.0% | 1.0% | +3.6% |
float_RowTri/100/100 |
13.6 | 10.2 | +33.0% | 2.5% | +29.8% |
float_RowTri/127/127 |
33.5 | 22.0 | +52.1% | 1.1% | +50.9% |
float_RowTri/128/128 |
18.9 | 19.0 | -0.5% | 0.9% | +1.4% |
float_RowTri/129/129 |
23.2 | 22.3 | +4.1% | 4.2% | +3.4% |
float_RowTri/192/192 |
65.7 | 62.1 | +5.9% | 0.5% | +6.8% |
float_RowTri/256/256 |
143.4 | 140.6 | +2.0% | 2.1% | +1.1% |
float_RowTri/257/257 |
154.4 | 149.6 | +3.2% | 1.4% | +3.0% |
float_RowTri/512/512 |
1,113 | 1,081 | +3.0% | 2.4% | +3.7% |
float_RowTri/1024/1024 |
8,322 | 8,282 | +0.5% | 1.6% | -1.1% |
float_RowTri/2048/2048 |
64,792 | 64,415 | +0.6% | 0.9% | +1.0% |
float_RowTri/4096/4096 |
510,065 | 499,823 | +2.0% | 1.0% | +1.8% |
float_RowTri/64/1 |
0.436 | 0.442 | -1.3% | 0.6% | -2.3% |
float_RowTri/64/4 |
0.883 | 0.908 | -2.8% | 0.6% | -6.0% |
float_RowTri/64/8 |
0.417 | 0.337 | +23.9% | 1.2% | +20.0% |
float_RowTri/64/16 |
0.632 | 0.642 | -1.6% | 0.6% | +1.0% |
float_RowTri/64/17 |
1.10 | 0.981 | +11.9% | 1.1% | +12.7% |
float_RowTri/64/4096 |
190.3 | 189.1 | +0.6% | 2.7% | +1.1% |
float_RowTri/128/4 |
2.36 | 2.37 | -0.3% | 2.0% | -4.6% |
float_RowTri/128/8 |
1.65 | 1.20 | +36.8% | 0.6% | +32.6% |
float_RowTri/128/17 |
4.25 | 3.53 | +20.3% | 1.2% | +18.1% |
float_RowTri/1024/8 |
162.2 | 159.2 | +1.8% | 16.5% | -2.5% |
float_RowTri/1024/32 |
348.5 | 335.1 | +4.0% | 7.1% | +0.0% |
float_RowTri/1024/128 |
1,124 | 1,103 | +1.9% | 3.3% | +3.0% |
float_RowTri/4096/32 |
6,618 | 6,663 | -0.7% | 2.2% | +1.3% |
double_RowTri/8/8 |
0.038 | 0.042 | -10.4% | 23.2% | -0.5% |
double_RowTri/12/12 |
0.078 | 0.083 | -5.6% | 11.7% | -0.5% |
double_RowTri/16/16 |
0.127 | 0.134 | -5.3% | 13.8% | -0.7% |
double_RowTri/24/24 |
0.329 | 0.338 | -2.8% | 5.8% | -0.4% |
double_RowTri/31/31 |
1.01 | 0.830 | +22.1% | 3.6% | +27.2% |
double_RowTri/32/32 |
0.705 | 0.717 | -1.8% | 4.4% | +0.0% |
double_RowTri/33/33 |
0.972 | 0.933 | +4.2% | 6.2% | +5.5% |
double_RowTri/48/48 |
2.27 | 2.32 | -2.5% | 3.2% | -0.6% |
double_RowTri/63/63 |
6.83 | 5.80 | +17.7% | 2.0% | +15.2% |
double_RowTri/64/64 |
5.40 | 5.42 | -0.4% | 1.2% | +0.4% |
double_RowTri/65/65 |
6.55 | 6.29 | +4.2% | 3.3% | +3.3% |
double_RowTri/95/95 |
21.8 | 18.9 | +15.3% | 5.2% | +7.5% |
double_RowTri/96/96 |
17.0 | 17.3 | -1.4% | 0.1% | -1.4% |
double_RowTri/97/97 |
19.9 | 19.7 | +1.1% | 5.5% | +1.2% |
double_RowTri/100/100 |
20.0 | 19.7 | +1.5% | 4.7% | +0.5% |
double_RowTri/127/127 |
47.5 | 43.0 | +10.5% | 1.0% | +10.4% |
double_RowTri/128/128 |
37.9 | 38.3 | -1.0% | 1.7% | -0.4% |
double_RowTri/129/129 |
48.6 | 45.0 | +8.0% | 0.0% | +5.1% |
double_RowTri/192/192 |
131.8 | 124.3 | +6.0% | 2.1% | +8.6% |
double_RowTri/256/256 |
316.3 | 294.7 | +7.3% | 2.9% | +5.6% |
double_RowTri/257/257 |
339.7 | 317.1 | +7.1% | 3.6% | +7.0% |
double_RowTri/512/512 |
2,295 | 2,269 | +1.1% | 3.6% | +1.8% |
double_RowTri/1024/1024 |
17,444 | 17,312 | +0.8% | 3.7% | +2.2% |
double_RowTri/2048/2048 |
132,502 | 130,260 | +1.7% | 2.2% | +0.4% |
double_RowTri/4096/4096 |
1,024,703 | 1,027,362 | -0.3% | 2.7% | +0.7% |
double_RowTri/64/1 |
0.645 | 0.660 | -2.2% | 2.5% | -1.1% |
double_RowTri/64/4 |
0.409 | 0.338 | +21.1% | 1.1% | +20.4% |
double_RowTri/64/8 |
0.618 | 0.622 | -0.7% | 2.5% | -0.2% |
double_RowTri/64/16 |
1.25 | 1.24 | +0.3% | 1.9% | -0.6% |
double_RowTri/64/17 |
1.76 | 1.61 | +9.5% | 1.1% | +11.4% |
double_RowTri/64/4096 |
395.6 | 403.6 | -2.0% | 2.4% | +0.3% |
double_RowTri/128/4 |
1.67 | 1.26 | +32.3% | 1.0% | +33.8% |
double_RowTri/128/8 |
2.32 | 2.34 | -0.8% | 1.6% | -0.4% |
double_RowTri/128/17 |
6.67 | 6.00 | +11.1% | 1.4% | +13.0% |
double_RowTri/1024/8 |
289.3 | 298.9 | -3.2% | 10.3% | +10.7% |
double_RowTri/1024/32 |
678.3 | 686.0 | -1.1% | 2.4% | -2.3% |
double_RowTri/1024/128 |
2,254 | 2,248 | +0.3% | 0.6% | +2.5% |
double_RowTri/4096/32 |
13,677 | 13,923 | -1.8% | 6.1% | -3.9% |
float_Right/8/8 |
0.077 | 0.076 | +1.3% | 0.8% | +0.7% |
float_Right/12/12 |
0.164 | 0.162 | +1.2% | 0.7% | +0.4% |
float_Right/16/16 |
0.217 | 0.218 | -0.5% | 0.7% | -0.9% |
float_Right/24/24 |
0.448 | 0.447 | +0.2% | 0.6% | +0.3% |
float_Right/31/31 |
1.14 | 1.11 | +3.4% | 3.3% | -4.1% |
float_Right/32/32 |
0.702 | 0.700 | +0.4% | 4.2% | -8.6% |
float_Right/33/33 |
0.893 | 0.868 | +2.8% | 9.8% | -7.0% |
float_Right/48/48 |
1.47 | 1.52 | -3.0% | 6.1% | +0.7% |
float_Right/63/63 |
5.11 | 5.09 | +0.4% | 1.0% | -0.2% |
float_Right/64/64 |
3.99 | 3.96 | +0.9% | 1.0% | -2.0% |
float_Right/65/65 |
4.65 | 4.56 | +2.0% | 1.9% | -3.2% |
float_Right/95/95 |
11.4 | 11.3 | +0.6% | 4.7% | -0.0% |
float_Right/96/96 |
9.34 | 9.29 | +0.6% | 3.9% | +2.9% |
float_Right/97/97 |
10.7 | 10.7 | +0.2% | 2.1% | +2.9% |
float_Right/100/100 |
11.7 | 11.7 | +0.4% | 3.8% | -0.6% |
float_Right/127/127 |
22.9 | 23.2 | -0.9% | 1.4% | -0.0% |
float_Right/128/128 |
20.2 | 20.3 | -0.6% | 1.6% | +2.2% |
float_Right/129/129 |
22.5 | 22.3 | +0.7% | 3.8% | -0.4% |
float_Right/192/192 |
61.5 | 60.8 | +1.2% | 1.5% | +0.8% |
float_Right/256/256 |
139.3 | 138.2 | +0.8% | 2.2% | +1.2% |
float_Right/257/257 |
146.7 | 145.7 | +0.7% | 1.1% | +0.1% |
float_Right/512/512 |
1,062 | 1,054 | +0.7% | 1.3% | -0.3% |
float_Right/1024/1024 |
8,004 | 7,923 | +1.0% | 0.5% | -0.2% |
float_Right/2048/2048 |
62,769 | 62,425 | +0.6% | 2.0% | +1.3% |
float_Right/4096/4096 |
498,398 | 496,644 | +0.4% | 1.3% | +0.4% |
float_Right/64/1 |
0.879 | 0.887 | -0.9% | 1.6% | +0.3% |
float_Right/64/4 |
1.29 | 1.33 | -2.6% | 1.9% | +1.0% |
float_Right/64/8 |
1.31 | 1.32 | -0.8% | 3.2% | +2.4% |
float_Right/64/16 |
1.49 | 1.56 | -4.6% | 8.8% | +0.9% |
float_Right/64/17 |
1.63 | 1.72 | -5.3% | 8.7% | +1.2% |
float_Right/64/4096 |
226.7 | 224.5 | +1.0% | 1.8% | +0.9% |
float_Right/128/4 |
3.49 | 3.49 | -0.1% | 2.3% | -0.3% |
float_Right/128/8 |
3.67 | 3.61 | +1.7% | 3.6% | +1.0% |
float_Right/128/17 |
4.93 | 4.83 | +2.0% | 2.7% | +1.5% |
float_Right/1024/8 |
158.4 | 162.2 | -2.4% | 0.3% | -4.8% |
float_Right/1024/32 |
327.8 | 330.6 | -0.9% | 4.6% | +1.0% |
float_Right/1024/128 |
1,064 | 1,065 | -0.1% | 3.7% | -0.5% |
float_Right/4096/32 |
7,157 | 7,137 | +0.3% | 4.6% | +3.9% |
double_Right/8/8 |
0.081 | 0.079 | +1.7% | 2.2% | +0.9% |
double_Right/12/12 |
0.151 | 0.145 | +3.7% | 1.4% | -0.3% |
double_Right/16/16 |
0.273 | 0.270 | +1.1% | 4.1% | +0.1% |
double_Right/24/24 |
0.501 | 0.486 | +3.3% | 6.5% | -5.0% |
double_Right/31/31 |
1.17 | 1.21 | -3.2% | 4.8% | +1.1% |
double_Right/32/32 |
0.983 | 0.972 | +1.2% | 4.8% | +3.1% |
double_Right/33/33 |
1.18 | 1.18 | +0.5% | 7.8% | +1.6% |
double_Right/48/48 |
2.95 | 3.01 | -1.9% | 4.3% | -3.6% |
double_Right/63/63 |
6.70 | 6.80 | -1.5% | 3.6% | -1.3% |
double_Right/64/64 |
6.43 | 6.29 | +2.2% | 0.5% | +2.0% |
double_Right/65/65 |
6.91 | 6.75 | +2.4% | 2.4% | -0.7% |
double_Right/95/95 |
20.1 | 19.8 | +1.6% | 1.9% | +0.4% |
double_Right/96/96 |
18.5 | 18.6 | -0.3% | 5.4% | +2.8% |
double_Right/97/97 |
19.6 | 19.8 | -1.2% | 1.9% | +0.5% |
double_Right/100/100 |
20.9 | 20.3 | +2.9% | 4.3% | -0.1% |
double_Right/127/127 |
42.4 | 43.7 | -3.1% | 4.2% | -0.9% |
double_Right/128/128 |
40.2 | 41.0 | -1.7% | 3.2% | +2.4% |
double_Right/129/129 |
42.5 | 42.5 | -0.1% | 2.4% | -0.7% |
double_Right/192/192 |
126.8 | 123.9 | +2.4% | 6.9% | +1.0% |
double_Right/256/256 |
288.5 | 286.1 | +0.8% | 1.0% | -0.6% |
double_Right/257/257 |
298.9 | 306.7 | -2.5% | 3.9% | -0.6% |
double_Right/512/512 |
2,169 | 2,128 | +1.9% | 1.7% | +1.5% |
double_Right/1024/1024 |
16,223 | 16,141 | +0.5% | 1.5% | +1.5% |
double_Right/2048/2048 |
127,588 | 128,558 | -0.8% | 2.1% | +0.0% |
double_Right/4096/4096 |
998,629 | 1,011,635 | -1.3% | 0.6% | +0.1% |
double_Right/64/1 |
0.870 | 0.863 | +0.8% | 0.9% | +0.0% |
double_Right/64/4 |
1.15 | 1.17 | -1.2% | 1.9% | -1.1% |
double_Right/64/8 |
1.42 | 1.40 | +1.5% | 1.2% | -2.7% |
double_Right/64/16 |
2.61 | 2.60 | +0.5% | 2.0% | +0.1% |
double_Right/64/17 |
2.82 | 2.79 | +1.3% | 1.8% | +0.5% |
double_Right/64/4096 |
421.7 | 446.3 | -5.5% | 3.3% | +1.2% |
double_Right/128/4 |
4.03 | 4.08 | -1.3% | 0.5% | -4.8% |
double_Right/128/8 |
5.28 | 5.15 | +2.4% | 8.2% | +0.5% |
double_Right/128/17 |
7.70 | 7.94 | -3.1% | 4.4% | +1.8% |
double_Right/1024/8 |
329.9 | 333.5 | -1.1% | 3.1% | -2.7% |
double_Right/1024/32 |
688.4 | 694.6 | -0.9% | 3.7% | +5.5% |
double_Right/1024/128 |
2,153 | 2,161 | -0.4% | 2.0% | -1.3% |
double_Right/4096/32 |
13,239 | 13,657 | -3.1% | 1.7% | +1.3% |
float_Upper/24/17 |
0.212 | 0.212 | -0.2% | 1.5% | +1.6% |
float_Upper/64/17 |
0.875 | 0.872 | +0.3% | 0.4% | +0.1% |
float_Upper/128/17 |
2.94 | 2.92 | +0.9% | 0.8% | +1.9% |
float_Upper/512/17 |
50.5 | 48.7 | +3.7% | 2.8% | +4.1% |
float_Upper/24/64 |
0.461 | 0.464 | -0.7% | 1.0% | +1.3% |
float_Upper/64/64 |
2.38 | 2.38 | +0.4% | 1.7% | +1.4% |
float_Upper/128/64 |
8.86 | 9.13 | -3.0% | 2.0% | -0.1% |
float_Upper/512/64 |
143.3 | 138.1 | +3.7% | 2.2% | +5.6% |
float_Upper/24/512 |
4.34 | 4.38 | -0.9% | 4.4% | -1.4% |
float_Upper/64/512 |
20.3 | 20.3 | +0.1% | 0.8% | -0.1% |
float_Upper/128/512 |
71.6 | 72.6 | -1.3% | 3.2% | +0.4% |
float_Upper/512/512 |
1,079 | 1,049 | +2.9% | 1.4% | +4.0% |
double_Upper/24/17 |
0.316 | 0.325 | -2.6% | 1.7% | -0.2% |
double_Upper/64/17 |
1.59 | 1.58 | +0.6% | 2.1% | +0.5% |
double_Upper/128/17 |
5.49 | 5.59 | -1.8% | 1.5% | -0.3% |
double_Upper/512/17 |
105.5 | 102.8 | +2.7% | 8.5% | +4.3% |
double_Upper/24/64 |
0.855 | 0.859 | -0.5% | 2.0% | +0.5% |
double_Upper/64/64 |
5.06 | 5.03 | +0.6% | 1.9% | +1.0% |
double_Upper/128/64 |
17.8 | 17.8 | -0.2% | 2.2% | +0.8% |
double_Upper/512/64 |
297.1 | 284.8 | +4.3% | 1.7% | +4.5% |
double_Upper/24/512 |
7.99 | 8.12 | -1.6% | 2.4% | +1.1% |
double_Upper/64/512 |
40.4 | 40.2 | +0.4% | 1.7% | -0.2% |
double_Upper/128/512 |
143.9 | 143.8 | +0.0% | 1.8% | +2.5% |
double_Upper/512/512 |
2,304 | 2,285 | +0.9% | 2.1% | +2.5% |
float_RightRow/24/17 |
0.400 | 0.225 | +78.2% | 3.3% | +80.5% |
float_RightRow/64/17 |
1.90 | 0.969 | +96.1% | 0.7% | +101.3% |
float_RightRow/128/17 |
6.71 | 3.59 | +86.8% | 8.0% | +95.3% |
float_RightRow/512/17 |
57.5 | 52.3 | +9.9% | 2.6% | +8.3% |
float_RightRow/24/64 |
0.498 | 0.501 | -0.7% | 0.8% | +1.7% |
float_RightRow/64/64 |
2.47 | 2.43 | +1.8% | 0.8% | +1.2% |
float_RightRow/128/64 |
9.34 | 9.46 | -1.3% | 9.9% | +1.4% |
float_RightRow/512/64 |
146.6 | 140.0 | +4.7% | 1.3% | +5.7% |
float_RightRow/24/512 |
4.62 | 4.69 | -1.5% | 1.8% | -2.1% |
float_RightRow/64/512 |
20.8 | 20.6 | +1.4% | 0.7% | -0.0% |
float_RightRow/128/512 |
74.6 | 75.8 | -1.6% | 13.5% | +1.1% |
float_RightRow/512/512 |
1,096 | 1,045 | +4.9% | 1.1% | +3.5% |
double_RightRow/24/17 |
0.512 | 0.323 | +58.3% | 3.2% | +60.2% |
double_RightRow/64/17 |
2.51 | 1.63 | +54.5% | 1.2% | +58.5% |
double_RightRow/128/17 |
8.93 | 6.16 | +45.1% | 5.0% | +50.5% |
double_RightRow/512/17 |
109.6 | 106.6 | +2.8% | 2.7% | +4.3% |
double_RightRow/24/64 |
0.900 | 0.904 | -0.5% | 2.2% | -1.0% |
double_RightRow/64/64 |
5.32 | 5.24 | +1.6% | 2.4% | +1.3% |
double_RightRow/128/64 |
19.5 | 19.8 | -1.7% | 6.1% | +0.8% |
double_RightRow/512/64 |
311.9 | 292.2 | +6.7% | 1.8% | +6.0% |
double_RightRow/24/512 |
8.47 | 8.50 | -0.3% | 1.1% | +0.9% |
double_RightRow/64/512 |
42.2 | 42.6 | -0.9% | 2.7% | +0.8% |
double_RightRow/128/512 |
156.2 | 160.0 | -2.4% | 4.7% | +2.2% |
double_RightRow/512/512 |
2,317 | 2,287 | +1.3% | 1.3% | +3.6% |
Appendix B: all 276 shapes, NEON (Apple M4)
| Shape | Before (µs) | After (µs) | Change | Max run-to-run spread | Change, aligned build |
|---|---|---|---|---|---|
float/8/8 |
0.030 | 0.029 | +5.5% | 0.9% | +6.2% |
float/12/12 |
0.068 | 0.066 | +3.0% | 1.7% | +4.6% |
float/16/16 |
0.108 | 0.095 | +13.4% | 1.2% | +14.5% |
float/24/24 |
0.304 | 0.252 | +20.4% | 1.8% | +23.3% |
float/31/31 |
0.823 | 0.733 | +12.3% | 3.4% | +9.5% |
float/32/32 |
0.613 | 0.507 | +20.7% | 3.5% | +23.5% |
float/33/33 |
0.820 | 0.720 | +13.9% | 1.8% | +14.9% |
float/48/48 |
1.86 | 1.46 | +27.1% | 4.1% | +30.2% |
float/63/63 |
4.90 | 3.99 | +23.0% | 3.5% | +22.8% |
float/64/64 |
4.07 | 3.16 | +28.8% | 2.6% | +31.3% |
float/65/65 |
4.85 | 3.83 | +26.8% | 2.3% | +29.0% |
float/95/95 |
14.9 | 11.5 | +29.6% | 4.0% | +31.1% |
float/96/96 |
12.8 | 9.68 | +32.6% | 2.8% | +33.2% |
float/97/97 |
14.5 | 11.0 | +31.6% | 3.7% | +32.0% |
float/100/100 |
14.8 | 11.1 | +33.0% | 3.6% | +33.1% |
float/127/127 |
34.2 | 25.5 | +33.9% | 2.4% | +34.6% |
float/128/128 |
30.0 | 22.1 | +35.6% | 3.6% | +37.0% |
float/129/129 |
31.7 | 27.0 | +17.5% | 0.9% | +18.4% |
float/192/192 |
89.8 | 75.1 | +19.6% | 2.5% | +20.7% |
float/256/256 |
214.3 | 169.2 | +26.7% | 2.4% | +28.0% |
float/257/257 |
220.6 | 180.9 | +22.0% | 2.4% | +23.3% |
float/512/512 |
1,381 | 1,232 | +12.1% | 2.1% | +12.7% |
float/1024/1024 |
10,632 | 9,356 | +13.6% | 0.9% | +14.1% |
float/2048/2048 |
81,128 | 73,414 | +10.5% | 2.1% | +11.5% |
float/4096/4096 |
625,321 | 574,468 | +8.9% | 1.7% | +9.7% |
float/64/1 |
0.515 | 0.523 | -1.5% | 0.7% | -0.7% |
float/64/4 |
0.370 | 0.292 | +26.9% | 2.7% | +27.1% |
float/64/8 |
0.528 | 0.443 | +19.3% | 3.0% | +19.9% |
float/64/16 |
1.05 | 0.808 | +30.2% | 2.2% | +30.5% |
float/64/17 |
1.34 | 1.12 | +19.9% | 2.2% | +19.8% |
float/64/4096 |
260.5 | 207.6 | +25.5% | 2.9% | +25.7% |
float/128/4 |
1.50 | 1.03 | +45.3% | 4.2% | +46.0% |
float/128/8 |
1.88 | 1.44 | +30.4% | 2.1% | +34.2% |
float/128/17 |
4.47 | 3.47 | +28.8% | 2.1% | +30.1% |
float/1024/8 |
133.8 | 130.9 | +2.2% | 2.5% | +2.4% |
float/1024/32 |
381.1 | 346.4 | +10.0% | 2.3% | +12.0% |
float/1024/128 |
1,369 | 1,219 | +12.3% | 2.0% | +13.4% |
float/4096/32 |
6,580 | 6,295 | +4.5% | 2.8% | +5.7% |
double/8/8 |
0.047 | 0.039 | +19.4% | 0.3% | +19.6% |
double/12/12 |
0.105 | 0.091 | +15.2% | 0.1% | +13.7% |
double/16/16 |
0.211 | 0.178 | +19.0% | 2.5% | +16.2% |
double/24/24 |
0.614 | 0.478 | +28.5% | 2.2% | +30.2% |
double/31/31 |
1.39 | 1.18 | +18.4% | 1.7% | +19.2% |
double/32/32 |
1.21 | 0.997 | +21.0% | 2.4% | +23.6% |
double/33/33 |
1.59 | 1.27 | +25.0% | 1.6% | +21.9% |
double/48/48 |
3.60 | 2.89 | +24.5% | 2.4% | +31.0% |
double/63/63 |
9.08 | 7.13 | +27.3% | 1.3% | +29.7% |
double/64/64 |
8.11 | 6.29 | +28.9% | 2.1% | +32.7% |
double/65/65 |
9.35 | 7.29 | +28.3% | 1.8% | +31.5% |
double/95/95 |
29.1 | 22.2 | +31.1% | 2.6% | +31.9% |
double/96/96 |
26.1 | 19.9 | +30.9% | 1.3% | +30.8% |
double/97/97 |
29.1 | 22.2 | +31.0% | 1.3% | +31.2% |
double/100/100 |
29.2 | 22.6 | +29.5% | 2.0% | +31.0% |
double/127/127 |
66.7 | 48.6 | +37.2% | 3.1% | +37.3% |
double/128/128 |
61.9 | 44.6 | +38.8% | 1.2% | +38.0% |
double/129/129 |
61.7 | 55.2 | +11.8% | 1.2% | +11.2% |
double/192/192 |
179.0 | 149.0 | +20.1% | 0.4% | +19.4% |
double/256/256 |
424.0 | 338.1 | +25.4% | 0.4% | +25.4% |
double/257/257 |
436.9 | 357.5 | +22.2% | 1.2% | +22.1% |
double/512/512 |
2,848 | 2,496 | +14.1% | 0.3% | +14.4% |
double/1024/1024 |
21,362 | 18,928 | +12.9% | 0.5% | +13.0% |
double/2048/2048 |
171,010 | 147,596 | +15.9% | 0.8% | +16.3% |
double/4096/4096 |
1,260,041 | 1,150,375 | +9.5% | 0.4% | +9.6% |
double/64/1 |
0.687 | 0.708 | -3.0% | 1.2% | -0.7% |
double/64/4 |
0.532 | 0.443 | +20.1% | 2.6% | +21.7% |
double/64/8 |
1.05 | 0.806 | +30.1% | 0.5% | +32.5% |
double/64/16 |
2.05 | 1.60 | +28.1% | 1.1% | +32.0% |
double/64/17 |
2.43 | 1.97 | +23.4% | 2.4% | +25.7% |
double/64/4096 |
519.9 | 414.1 | +25.5% | 0.7% | +27.4% |
double/128/4 |
1.93 | 1.46 | +32.0% | 1.8% | +32.7% |
double/128/8 |
3.85 | 2.75 | +40.0% | 1.3% | +40.7% |
double/128/17 |
8.87 | 6.67 | +33.0% | 1.2% | +31.1% |
double/1024/8 |
281.9 | 266.6 | +5.7% | 2.6% | +4.5% |
double/1024/32 |
784.4 | 708.2 | +10.8% | 0.7% | +11.1% |
double/1024/128 |
2,775 | 2,461 | +12.8% | 0.3% | +12.2% |
double/4096/32 |
12,672 | 12,065 | +5.0% | 0.4% | +5.8% |
float_RowTri/8/8 |
0.032 | 0.030 | +5.0% | 0.1% | +3.2% |
float_RowTri/12/12 |
0.068 | 0.066 | +2.8% | 0.1% | +2.3% |
float_RowTri/16/16 |
0.116 | 0.097 | +19.0% | 0.8% | +20.9% |
float_RowTri/24/24 |
0.311 | 0.258 | +20.6% | 0.3% | +21.1% |
float_RowTri/31/31 |
0.833 | 0.708 | +17.5% | 1.1% | +18.4% |
float_RowTri/32/32 |
0.625 | 0.505 | +23.9% | 1.6% | +24.2% |
float_RowTri/33/33 |
0.867 | 0.708 | +22.6% | 2.7% | +22.3% |
float_RowTri/48/48 |
1.91 | 1.46 | +30.2% | 1.2% | +27.6% |
float_RowTri/63/63 |
5.28 | 3.88 | +35.9% | 1.6% | +35.2% |
float_RowTri/64/64 |
4.13 | 3.21 | +28.7% | 1.6% | +27.1% |
float_RowTri/65/65 |
5.08 | 3.89 | +30.7% | 1.5% | +31.1% |
float_RowTri/95/95 |
16.4 | 11.4 | +44.2% | 1.6% | +44.5% |
float_RowTri/96/96 |
12.9 | 9.78 | +32.1% | 0.2% | +31.2% |
float_RowTri/97/97 |
15.0 | 11.3 | +33.5% | 1.8% | +33.7% |
float_RowTri/100/100 |
15.0 | 11.2 | +33.9% | 0.4% | +32.1% |
float_RowTri/127/127 |
37.1 | 25.3 | +46.8% | 2.0% | +47.1% |
float_RowTri/128/128 |
30.9 | 22.6 | +36.9% | 0.7% | +37.1% |
float_RowTri/129/129 |
32.5 | 27.2 | +19.4% | 0.3% | +19.4% |
float_RowTri/192/192 |
92.8 | 76.0 | +22.1% | 0.4% | +22.2% |
float_RowTri/256/256 |
219.2 | 170.2 | +28.8% | 1.2% | +29.5% |
float_RowTri/257/257 |
226.3 | 181.9 | +24.4% | 0.7% | +25.3% |
float_RowTri/512/512 |
1,399 | 1,236 | +13.2% | 0.5% | +13.3% |
float_RowTri/1024/1024 |
10,704 | 9,327 | +14.8% | 1.1% | +15.3% |
float_RowTri/2048/2048 |
81,685 | 73,265 | +11.5% | 0.8% | +12.0% |
float_RowTri/4096/4096 |
631,277 | 572,514 | +10.3% | 0.6% | +10.3% |
float_RowTri/64/1 |
0.596 | 0.602 | -1.0% | 0.7% | -2.4% |
float_RowTri/64/4 |
0.376 | 0.317 | +18.7% | 1.3% | +20.6% |
float_RowTri/64/8 |
0.544 | 0.463 | +17.5% | 1.2% | +12.4% |
float_RowTri/64/16 |
1.07 | 0.822 | +30.6% | 0.7% | +29.4% |
float_RowTri/64/17 |
1.47 | 1.16 | +26.8% | 1.4% | +26.3% |
float_RowTri/64/4096 |
265.0 | 211.2 | +25.5% | 1.7% | +23.5% |
float_RowTri/128/4 |
1.57 | 1.12 | +40.1% | 0.6% | +37.5% |
float_RowTri/128/8 |
1.91 | 1.47 | +29.7% | 1.2% | +29.6% |
float_RowTri/128/17 |
5.40 | 3.92 | +37.9% | 1.5% | +38.3% |
float_RowTri/1024/8 |
134.6 | 114.0 | +18.1% | 0.7% | +18.5% |
float_RowTri/1024/32 |
381.9 | 331.0 | +15.4% | 0.9% | +15.6% |
float_RowTri/1024/128 |
1,377 | 1,201 | +14.7% | 0.6% | +14.9% |
float_RowTri/4096/32 |
6,370 | 5,926 | +7.5% | 0.7% | +8.1% |
double_RowTri/8/8 |
0.050 | 0.042 | +18.2% | 0.2% | +20.9% |
double_RowTri/12/12 |
0.115 | 0.100 | +15.1% | 0.2% | +17.1% |
double_RowTri/16/16 |
0.223 | 0.182 | +22.8% | 1.7% | +25.9% |
double_RowTri/24/24 |
0.648 | 0.485 | +33.5% | 1.9% | +34.7% |
double_RowTri/31/31 |
1.48 | 1.22 | +20.6% | 2.3% | +23.2% |
double_RowTri/32/32 |
1.26 | 1.01 | +24.5% | 1.6% | +24.6% |
double_RowTri/33/33 |
1.66 | 1.27 | +30.9% | 0.3% | +24.5% |
double_RowTri/48/48 |
3.79 | 2.92 | +29.9% | 1.1% | +31.5% |
double_RowTri/63/63 |
9.33 | 7.21 | +29.4% | 0.1% | +29.3% |
double_RowTri/64/64 |
8.37 | 6.38 | +31.3% | 0.5% | +31.5% |
double_RowTri/65/65 |
9.56 | 7.28 | +31.3% | 3.4% | +29.2% |
double_RowTri/95/95 |
29.7 | 22.3 | +33.1% | 0.5% | +33.1% |
double_RowTri/96/96 |
26.6 | 20.3 | +31.0% | 0.6% | +31.3% |
double_RowTri/97/97 |
29.7 | 22.3 | +33.3% | 0.8% | +32.6% |
double_RowTri/100/100 |
29.7 | 22.4 | +32.6% | 0.7% | +32.6% |
double_RowTri/127/127 |
68.1 | 49.1 | +38.7% | 1.1% | +38.8% |
double_RowTri/128/128 |
62.8 | 45.8 | +37.2% | 0.4% | +36.6% |
double_RowTri/129/129 |
63.6 | 56.6 | +12.3% | 0.3% | +14.4% |
double_RowTri/192/192 |
181.8 | 155.7 | +16.8% | 0.2% | +20.5% |
double_RowTri/256/256 |
427.7 | 349.3 | +22.4% | 0.5% | +26.0% |
double_RowTri/257/257 |
442.8 | 368.2 | +20.3% | 0.1% | +23.4% |
double_RowTri/512/512 |
2,869 | 2,516 | +14.1% | 0.1% | +15.2% |
double_RowTri/1024/1024 |
21,228 | 18,968 | +11.9% | 0.2% | +13.2% |
double_RowTri/2048/2048 |
170,382 | 147,416 | +15.6% | 0.4% | +16.1% |
double_RowTri/4096/4096 |
1,257,440 | 1,149,852 | +9.4% | 0.2% | +9.7% |
double_RowTri/64/1 |
0.770 | 0.767 | +0.4% | 0.3% | +0.7% |
double_RowTri/64/4 |
0.546 | 0.461 | +18.6% | 1.8% | +16.6% |
double_RowTri/64/8 |
1.07 | 0.818 | +31.3% | 1.2% | +30.9% |
double_RowTri/64/16 |
2.11 | 1.63 | +29.6% | 1.5% | +31.2% |
double_RowTri/64/17 |
2.53 | 1.98 | +28.0% | 2.3% | +28.6% |
double_RowTri/64/4096 |
527.2 | 420.4 | +25.4% | 0.4% | +24.7% |
double_RowTri/128/4 |
1.95 | 1.48 | +31.6% | 0.8% | +31.7% |
double_RowTri/128/8 |
3.88 | 2.80 | +38.7% | 0.1% | +38.0% |
double_RowTri/128/17 |
9.66 | 6.93 | +39.3% | 0.6% | +39.6% |
double_RowTri/1024/8 |
259.4 | 232.5 | +11.6% | 0.8% | +12.2% |
double_RowTri/1024/32 |
749.1 | 679.5 | +10.3% | 0.4% | +12.4% |
double_RowTri/1024/128 |
2,732 | 2,465 | +10.8% | 0.4% | +13.2% |
double_RowTri/4096/32 |
13,102 | 12,407 | +5.6% | 0.3% | +6.2% |
float_Right/8/8 |
0.106 | 0.105 | +0.3% | 0.7% | +1.1% |
float_Right/12/12 |
0.216 | 0.216 | -0.0% | 1.4% | -0.5% |
float_Right/16/16 |
0.330 | 0.331 | -0.0% | 1.9% | -0.7% |
float_Right/24/24 |
0.616 | 0.604 | +2.1% | 1.2% | +0.6% |
float_Right/31/31 |
1.13 | 1.12 | +1.3% | 1.2% | -1.5% |
float_Right/32/32 |
1.04 | 1.04 | -0.3% | 1.2% | -0.7% |
float_Right/33/33 |
1.21 | 1.18 | +3.2% | 2.9% | -0.3% |
float_Right/48/48 |
2.58 | 2.25 | +14.6% | 2.4% | +0.6% |
float_Right/63/63 |
5.59 | 5.55 | +0.8% | 1.0% | -0.3% |
float_Right/64/64 |
5.56 | 5.41 | +2.9% | 1.8% | -0.1% |
float_Right/65/65 |
5.96 | 5.92 | +0.7% | 2.0% | +0.2% |
float_Right/95/95 |
14.6 | 13.8 | +5.7% | 1.6% | -0.2% |
float_Right/96/96 |
11.9 | 12.2 | -2.8% | 1.1% | -0.3% |
float_Right/97/97 |
15.1 | 14.3 | +5.1% | 0.7% | -0.2% |
float_Right/100/100 |
15.9 | 15.3 | +3.9% | 1.3% | +0.0% |
float_Right/127/127 |
28.9 | 28.7 | +0.9% | 1.3% | -0.4% |
float_Right/128/128 |
26.0 | 26.5 | -1.9% | 0.3% | -0.1% |
float_Right/129/129 |
27.9 | 28.0 | -0.4% | 0.3% | -0.2% |
float_Right/192/192 |
79.3 | 80.3 | -1.2% | 0.5% | -0.5% |
float_Right/256/256 |
181.8 | 183.5 | -0.9% | 0.2% | +0.1% |
float_Right/257/257 |
189.3 | 189.7 | -0.2% | 0.4% | -0.1% |
float_Right/512/512 |
1,263 | 1,267 | -0.3% | 0.2% | -0.1% |
float_Right/1024/1024 |
9,474 | 9,481 | -0.1% | 0.1% | +0.0% |
float_Right/2048/2048 |
72,782 | 72,933 | -0.2% | 0.3% | +0.1% |
float_Right/4096/4096 |
571,938 | 572,415 | -0.1% | 0.1% | +0.0% |
float_Right/64/1 |
0.974 | 0.967 | +0.7% | 0.5% | -0.2% |
float_Right/64/4 |
1.10 | 1.11 | -0.2% | 1.1% | -0.1% |
float_Right/64/8 |
1.37 | 1.37 | -0.4% | 0.9% | +0.8% |
float_Right/64/16 |
2.92 | 2.91 | +0.6% | 0.3% | +0.2% |
float_Right/64/17 |
3.06 | 3.05 | +0.5% | 2.3% | -0.2% |
float_Right/64/4096 |
271.7 | 272.7 | -0.4% | 0.5% | +0.2% |
float_Right/128/4 |
2.81 | 2.82 | -0.3% | 0.9% | -0.1% |
float_Right/128/8 |
3.58 | 3.58 | -0.2% | 2.2% | +0.3% |
float_Right/128/17 |
7.92 | 7.98 | -0.8% | 2.2% | -0.4% |
float_Right/1024/8 |
130.8 | 131.6 | -0.6% | 2.0% | -0.2% |
float_Right/1024/32 |
349.2 | 348.8 | +0.1% | 0.3% | +0.1% |
float_Right/1024/128 |
1,224 | 1,228 | -0.3% | 0.1% | +0.1% |
float_Right/4096/32 |
6,061 | 6,040 | +0.4% | 0.8% | -0.5% |
double_Right/8/8 |
0.131 | 0.132 | -0.7% | 1.1% | -0.8% |
double_Right/12/12 |
0.243 | 0.242 | +0.4% | 0.8% | +0.6% |
double_Right/16/16 |
0.383 | 0.378 | +1.2% | 0.4% | +2.7% |
double_Right/24/24 |
0.828 | 0.817 | +1.4% | 1.3% | +0.1% |
double_Right/31/31 |
1.45 | 1.44 | +0.5% | 1.1% | -0.4% |
double_Right/32/32 |
1.51 | 1.52 | -0.5% | 1.1% | +1.5% |
double_Right/33/33 |
1.74 | 1.72 | +1.1% | 5.3% | -4.2% |
double_Right/48/48 |
3.83 | 3.80 | +1.0% | 1.6% | +0.5% |
double_Right/63/63 |
8.27 | 8.11 | +2.0% | 0.3% | -0.6% |
double_Right/64/64 |
8.37 | 8.25 | +1.4% | 1.6% | -0.5% |
double_Right/65/65 |
9.00 | 8.86 | +1.6% | 0.8% | -0.4% |
double_Right/95/95 |
23.5 | 22.7 | +3.5% | 0.6% | +0.0% |
double_Right/96/96 |
23.5 | 22.9 | +2.6% | 1.1% | +0.1% |
double_Right/97/97 |
24.8 | 24.0 | +3.6% | 1.0% | -0.4% |
double_Right/100/100 |
26.1 | 25.4 | +2.6% | 1.1% | -0.2% |
double_Right/127/127 |
51.7 | 49.8 | +3.9% | 0.6% | -0.1% |
double_Right/128/128 |
51.9 | 49.8 | +4.3% | 0.6% | -0.2% |
double_Right/129/129 |
54.5 | 52.5 | +3.7% | 1.7% | -0.8% |
double_Right/192/192 |
149.0 | 146.4 | +1.8% | 0.1% | -1.2% |
double_Right/256/256 |
333.3 | 330.2 | +0.9% | 0.2% | -0.5% |
double_Right/257/257 |
341.5 | 338.5 | +0.9% | 0.2% | -0.3% |
double_Right/512/512 |
2,415 | 2,415 | -0.0% | 0.0% | -0.0% |
double_Right/1024/1024 |
18,397 | 18,393 | +0.0% | 0.0% | -0.0% |
double_Right/2048/2048 |
144,833 | 144,816 | +0.0% | 0.1% | -0.0% |
double_Right/4096/4096 |
1,141,169 | 1,141,497 | -0.0% | 0.0% | +0.0% |
double_Right/64/1 |
0.932 | 0.922 | +1.1% | 2.3% | -0.1% |
double_Right/64/4 |
1.14 | 1.15 | -0.8% | 2.2% | -0.6% |
double_Right/64/8 |
2.72 | 2.66 | +2.2% | 0.9% | -0.1% |
double_Right/64/16 |
3.38 | 3.32 | +1.8% | 1.5% | +0.3% |
double_Right/64/17 |
3.57 | 3.59 | -0.5% | 3.2% | +0.3% |
double_Right/64/4096 |
496.2 | 495.1 | +0.2% | 0.2% | -0.4% |
double_Right/128/4 |
3.72 | 3.71 | +0.4% | 1.4% | -0.3% |
double_Right/128/8 |
5.81 | 5.61 | +3.5% | 0.7% | +1.3% |
double_Right/128/17 |
9.45 | 9.14 | +3.4% | 0.5% | -0.1% |
double_Right/1024/8 |
260.5 | 259.0 | +0.6% | 0.5% | +0.1% |
double_Right/1024/32 |
687.1 | 682.2 | +0.7% | 0.2% | +0.0% |
double_Right/1024/128 |
2,396 | 2,395 | +0.0% | 0.1% | -0.0% |
double_Right/4096/32 |
12,043 | 12,053 | -0.1% | 0.7% | +0.4% |
float_Upper/24/17 |
0.293 | 0.255 | +14.9% | 0.3% | +16.4% |
float_Upper/64/17 |
1.29 | 1.10 | +17.3% | 0.1% | +17.0% |
float_Upper/128/17 |
4.46 | 3.44 | +29.8% | 0.1% | +29.5% |
float_Upper/512/17 |
64.1 | 60.3 | +6.2% | 0.9% | +6.1% |
float_Upper/24/64 |
0.818 | 0.634 | +29.0% | 0.4% | +25.6% |
float_Upper/64/64 |
3.93 | 3.18 | +23.4% | 0.4% | +22.6% |
float_Upper/128/64 |
15.0 | 11.0 | +36.8% | 0.7% | +36.6% |
float_Upper/512/64 |
187.1 | 165.9 | +12.8% | 0.3% | +12.7% |
float_Upper/24/512 |
6.36 | 4.90 | +29.9% | 0.1% | +31.5% |
float_Upper/64/512 |
32.2 | 26.6 | +21.4% | 0.2% | +21.5% |
float_Upper/128/512 |
121.3 | 89.0 | +36.3% | 0.5% | +35.9% |
float_Upper/512/512 |
1,398 | 1,236 | +13.1% | 0.2% | +12.6% |
double_Upper/24/17 |
0.515 | 0.416 | +23.8% | 0.4% | +23.9% |
double_Upper/64/17 |
2.34 | 1.96 | +19.2% | 0.4% | +20.8% |
double_Upper/128/17 |
8.67 | 6.63 | +30.8% | 0.6% | +30.5% |
double_Upper/512/17 |
131.5 | 122.0 | +7.8% | 0.9% | +8.1% |
double_Upper/24/64 |
1.65 | 1.26 | +31.2% | 0.2% | +29.5% |
double_Upper/64/64 |
7.89 | 6.38 | +23.6% | 0.1% | +24.4% |
double_Upper/128/64 |
30.7 | 22.5 | +36.6% | 0.6% | +36.5% |
double_Upper/512/64 |
389.7 | 335.7 | +16.1% | 0.9% | +15.5% |
double_Upper/24/512 |
13.5 | 10.7 | +26.4% | 1.3% | +26.3% |
double_Upper/64/512 |
63.9 | 52.6 | +21.6% | 0.4% | +23.0% |
double_Upper/128/512 |
244.2 | 178.5 | +36.8% | 0.2% | +36.4% |
double_Upper/512/512 |
2,848 | 2,500 | +13.9% | 0.2% | +14.4% |
float_RightRow/24/17 |
0.446 | 0.258 | +73.1% | 1.2% | +73.4% |
float_RightRow/64/17 |
2.35 | 1.17 | +100.8% | 1.1% | +101.8% |
float_RightRow/128/17 |
8.45 | 3.97 | +112.9% | 1.7% | +116.9% |
float_RightRow/512/17 |
67.5 | 60.5 | +11.6% | 0.4% | +17.4% |
float_RightRow/24/64 |
0.825 | 0.650 | +26.8% | 0.5% | +28.2% |
float_RightRow/64/64 |
4.05 | 3.25 | +24.6% | 1.6% | +23.8% |
float_RightRow/128/64 |
15.2 | 11.1 | +36.2% | 0.6% | +35.5% |
float_RightRow/512/64 |
188.8 | 163.2 | +15.7% | 0.0% | +18.5% |
float_RightRow/24/512 |
6.39 | 4.96 | +28.8% | 0.2% | +30.0% |
float_RightRow/64/512 |
33.0 | 27.0 | +22.4% | 0.2% | +22.4% |
float_RightRow/128/512 |
122.4 | 90.4 | +35.4% | 0.2% | +35.0% |
float_RightRow/512/512 |
1,403 | 1,235 | +13.6% | 0.2% | +13.7% |
double_RightRow/24/17 |
0.678 | 0.427 | +58.6% | 0.8% | +59.3% |
double_RightRow/64/17 |
3.42 | 1.99 | +72.2% | 0.3% | +72.1% |
double_RightRow/128/17 |
12.8 | 6.90 | +85.3% | 1.6% | +83.1% |
double_RightRow/512/17 |
129.0 | 115.0 | +12.2% | 0.3% | +10.6% |
double_RightRow/24/64 |
1.68 | 1.28 | +31.3% | 0.7% | +29.4% |
double_RightRow/64/64 |
8.00 | 6.46 | +23.9% | 0.6% | +23.1% |
double_RightRow/128/64 |
31.1 | 22.9 | +35.7% | 0.1% | +34.8% |
double_RightRow/512/64 |
388.4 | 328.3 | +18.3% | 0.4% | +17.0% |
double_RightRow/24/512 |
13.8 | 10.9 | +26.4% | 0.9% | +24.7% |
double_RightRow/64/512 |
65.3 | 53.2 | +22.8% | 0.2% | +22.2% |
double_RightRow/128/512 |
248.1 | 182.9 | +35.6% | 0.5% | +34.5% |
double_RightRow/512/512 |
2,874 | 2,492 | +15.3% | 0.5% | +15.1% |