Skip to content

perf/inline blake3 round - #557

Draft
gabriel-barrett wants to merge 1 commit into
mainfrom
perf/inline-blake3-round
Draft

perf/inline blake3 round#557
gabriel-barrett wants to merge 1 commit into
mainfrom
perf/inline-blake3-round

Conversation

@gabriel-barrett

@gabriel-barrett gabriel-barrett commented Aug 13, 2026

Copy link
Copy Markdown
Member

Inline blake3_compress_inner_j. This has the effect of increasing the total width, though not at the same proportion as what we gain on efficiency, for the lookup itself is costly, especially when the input arguments are big.

Eventually we will have to decrease the proof size of the recursive verifier, but there are ways around it see #551

@gabriel-barrett
gabriel-barrett force-pushed the perf/inline-blake3-round branch 3 times, most recently from 2b2a4fd to 1617d60 Compare August 13, 2026 16:25
@argumentcomputer argumentcomputer deleted a comment from argument-ci-bot Bot Aug 13, 2026
@gabriel-barrett
gabriel-barrett force-pushed the perf/inline-blake3-round branch 3 times, most recently from 1f5a367 to 2b83e35 Compare August 13, 2026 17:24
@gabriel-barrett

This comment was marked as outdated.

@argument-ci-bot

This comment was marked as outdated.

@gabriel-barrett
gabriel-barrett force-pushed the perf/inline-blake3-round branch from 2b83e35 to 3d03094 Compare August 13, 2026 21:20
@gabriel-barrett

This comment was marked as outdated.

@argument-ci-bot

This comment was marked as outdated.

@gabriel-barrett

This comment was marked as outdated.

@argument-ci-bot

This comment was marked as outdated.

@gabriel-barrett
gabriel-barrett force-pushed the perf/inline-blake3-round branch 3 times, most recently from d6f0857 to 69ce736 Compare August 14, 2026 14:45
@gabriel-barrett

Copy link
Copy Markdown
Member Author

!benchmark aiur-recursive fresh

@gabriel-barrett

Copy link
Copy Markdown
Member Author

!benchmark aiur fresh

@argument-ci-bot

argument-ci-bot Bot commented Aug 14, 2026

Copy link
Copy Markdown

!benchmark — main vs 69ce736

backends: aiur-recursive · envs: InitStd · set: primary · shard: 0 · baseline: fresh (base-SHA run, bencher bypassed)

aiur-recursive · InitStd — main from: base run @ 4e89546 (fresh — bencher bypassed)

3 constants · 3 with regressions · 3 with improvements (|Δ| > 3.0% on any metric).

constant recursive-prove-time (main) recursive-prove-time (PR) Δ% recursive-peak-ram (main) recursive-peak-ram (PR) Δ% recursive-proof-size (main) recursive-proof-size (PR) Δ% recursive-verify-time (main) recursive-verify-time (PR) Δ% recursive-execute-time (main) recursive-execute-time (PR) Δ% recursive-fft-cost (main) recursive-fft-cost (PR) Δ% prove-time (main) prove-time (PR) Δ% proof-size (main) proof-size (PR) Δ% verify-time (main) verify-time (PR) Δ% peak-ram (main) peak-ram (PR) Δ%
String.split 35.764 s 31.074 s -13.1% (1.15× faster) 🟢 107.68 GiB 81.50 GiB -24.3% (1.32× smaller) 🟢 5.30 MiB 6.27 MiB +18.3% (1.18× larger) ⚠️ 33.1 ms 38.1 ms +15.3% (1.15× slower) ⚠️ 5.961 s 4.727 s -20.7% (1.26× faster) 🟢 180.38B 143.49B -20.5% (1.26× fewer) 🟢 15.713 s 14.745 s -6.2% (1.07× faster) 🟢 11.21 MiB 12.14 MiB +8.3% (1.08× larger) ⚠️ 69.0 ms 75.7 ms +9.7% (1.10× slower) ⚠️ 32.74 GiB 29.83 GiB -8.9% (1.10× smaller) 🟢
Vector.append 32.628 s 27.362 s -16.1% (1.19× faster) 🟢 95.00 GiB 73.59 GiB -22.5% (1.29× smaller) 🟢 5.30 MiB 6.23 MiB +17.5% (1.18× larger) ⚠️ 32.4 ms 39.9 ms +23.0% (1.23× slower) ⚠️ 5.158 s 4.255 s -17.5% (1.21× faster) 🟢 157.02B 128.00B -18.5% (1.23× fewer) 🟢 3.885 s 3.795 s -2.3% 10.42 MiB 11.34 MiB +8.9% (1.09× larger) ⚠️ 65.7 ms 69.1 ms +5.1% (1.05× slower) ⚠️ 6.80 GiB 6.89 GiB +1.4%
Nat.add_comm 21.106 s 17.709 s -16.1% (1.19× faster) 🟢 58.08 GiB 44.38 GiB -23.6% (1.31× smaller) 🟢 5.30 MiB 6.23 MiB +17.5% (1.18× larger) ⚠️ 34.6 ms 38.9 ms +12.3% (1.12× slower) ⚠️ 3.752 s 3.105 s -17.2% (1.21× faster) 🟢 113.85B 92.75B -18.5% (1.23× fewer) 🟢 1.024 s 1.034 s +1.0% 8.93 MiB 9.86 MiB +10.4% (1.10× larger) ⚠️ 52.6 ms 60.8 ms +15.7% (1.16× slower) ⚠️ 3.79 GiB 4.06 GiB +7.0% (1.07× larger) ⚠️

Workflow logs

@argument-ci-bot

argument-ci-bot Bot commented Aug 14, 2026

Copy link
Copy Markdown

!benchmark — main vs 69ce736

backends: aiur=prove · envs: InitStd · set: primary · shard: 0 · baseline: fresh (base-SHA run, bencher bypassed)

aiur · InitStd · prove — main from: base run @ 4e89546 (fresh — bencher bypassed)

13 constants · 13 with regressions · 13 with improvements (|Δ| > 3.0% on any metric).

comparison table (13 constants)
constant prove-time (main) prove-time (PR) Δ% throughput (const/s) (main) throughput (const/s) (PR) Δ% peak-ram (main) peak-ram (PR) Δ% execute-time (main) execute-time (PR) Δ% verify-time (main) verify-time (PR) Δ% proof-size (main) proof-size (PR) Δ% fft-cost (main) fft-cost (PR) Δ%
Array.extract_append 39.589 s 38.272 s -3.3% 🟢 38.950 40.290 +3.4% 🟢 73.66 GiB 70.70 GiB -4.0% 🟢 9.861 s 9.625 s -2.4% 131.2 ms 146.6 ms +11.7% (1.12× slower) ⚠️ 21.59 MiB 23.38 MiB +8.3% (1.08× larger) ⚠️ 136.02B 130.81B -3.8% 🟢
ByteArray.utf8DecodeChar?_utf8EncodeChar_append 38.143 s 36.140 s -5.2% (1.06× faster) 🟢 70.550 74.460 +5.5% (1.06× faster) 🟢 73.09 GiB 67.14 GiB -8.1% (1.09× smaller) 🟢 9.759 s 9.374 s -3.9% 🟢 136.4 ms 145.1 ms +6.4% (1.06× slower) ⚠️ 21.69 MiB 23.47 MiB +8.2% (1.08× larger) ⚠️ 138.80B 126.89B -8.6% (1.09× fewer) 🟢
Char.ofOrdinal_le_of_le 29.836 s 29.502 s -1.1% 88.690 89.690 +1.1% 58.53 GiB 58.49 GiB -0.1% 6.903 s 6.630 s -4.0% 🟢 137.5 ms 201.3 ms +46.4% (1.46× slower) ⚠️ 21.64 MiB 23.42 MiB +8.3% (1.08× larger) ⚠️ 99.42B 90.63B -8.8% (1.10× fewer) 🟢
Vector.extract_append._proof_2 21.860 s 21.323 s -2.5% 59.560 61.060 +2.5% 39.70 GiB 38.22 GiB -3.7% 🟢 5.365 s 5.263 s -1.9% 130.4 ms 148.2 ms +13.7% (1.14× slower) ⚠️ 21.30 MiB 23.08 MiB +8.4% (1.08× larger) ⚠️ 77.08B 73.31B -4.9% (1.05× fewer) 🟢
_private.Init.Data.Range.Polymorphic.SInt.0.Int64.instRxcHasSize_eq 17.638 s 16.652 s -5.6% (1.06× faster) 🟢 102.740 108.810 +5.9% (1.06× faster) 🟢 34.77 GiB 31.77 GiB -8.6% (1.09× smaller) 🟢 3.634 s 3.537 s -2.7% 138.0 ms 149.8 ms +8.5% (1.09× slower) ⚠️ 21.47 MiB 23.26 MiB +8.3% (1.08× larger) ⚠️ 54.85B 49.57B -9.6% (1.11× fewer) 🟢
String.split 16.598 s 15.578 s -6.1% (1.07× faster) 🟢 106.340 113.300 +6.5% (1.07× faster) 🟢 32.71 GiB 29.74 GiB -9.1% (1.10× smaller) 🟢 3.376 s 3.252 s -3.7% 🟢 133.0 ms 141.9 ms +6.7% (1.07× slower) ⚠️ 21.68 MiB 23.46 MiB +8.2% (1.08× larger) ⚠️ 50.25B 45.59B -9.3% (1.10× fewer) 🟢
List.mergeSort 12.202 s 11.714 s -4.0% 🟢 118.670 123.610 +4.2% 🟢 23.77 GiB 22.24 GiB -6.4% (1.07× smaller) 🟢 2.438 s 2.333 s -4.3% 🟢 129.5 ms 147.4 ms +13.7% (1.14× slower) ⚠️ 21.53 MiB 23.32 MiB +8.3% (1.08× larger) ⚠️ 36.10B 32.44B -10.1% (1.11× fewer) 🟢
Vector.append 3.968 s 3.886 s -2.1% 122.230 124.810 +2.1% 6.69 GiB 6.60 GiB -1.3% 684.6 ms 653.3 ms -4.6% 🟢 132.6 ms 134.9 ms +1.7% 20.13 MiB 21.92 MiB +8.9% (1.09× larger) ⚠️ 8.02B 7.24B -9.7% (1.11× fewer) 🟢
Nat.gcd_comm 3.235 s 3.104 s -4.1% 🟢 120.550 125.640 +4.2% 🟢 5.07 GiB 5.78 GiB +14.0% (1.14× larger) ⚠️ 524.7 ms 507.6 ms -3.3% 🟢 123.7 ms 133.3 ms +7.8% (1.08× slower) ⚠️ 19.90 MiB 21.68 MiB +9.0% (1.09× larger) ⚠️ 5.25B 4.60B -12.4% (1.14× fewer) 🟢
String.append 2.399 s 2.299 s -4.2% 🟢 126.740 132.250 +4.3% 🟢 4.62 GiB 4.64 GiB +0.3% 403.9 ms 393.2 ms -2.7% 123.5 ms 127.6 ms +3.3% ⚠️ 19.17 MiB 20.96 MiB +9.3% (1.09× larger) ⚠️ 2.90B 2.55B -12.1% (1.14× fewer) 🟢
Int.gcd 1.991 s 2.001 s +0.5% 104.480 103.950 -0.5% 4.50 GiB 4.53 GiB +0.7% 355.0 ms 343.3 ms -3.3% 🟢 118.2 ms 129.5 ms +9.5% (1.10× slower) ⚠️ 18.73 MiB 20.51 MiB +9.5% (1.10× larger) ⚠️ 1.87B 1.64B -11.9% (1.14× fewer) 🟢
Nat.sub_le_of_le_add 1.815 s 1.788 s -1.5% 93.650 95.090 +1.5% 4.60 GiB 4.62 GiB +0.3% 343.9 ms 333.7 ms -2.9% 113.8 ms 128.4 ms +12.8% (1.13× slower) ⚠️ 19.08 MiB 20.87 MiB +9.4% (1.09× larger) ⚠️ 1.60B 1.42B -11.5% (1.13× fewer) 🟢
Nat.add_comm 1.011 s 1.050 s +3.9% ⚠️ 41.550 40 -3.7% ⚠️ 3.54 GiB 4.17 GiB +17.7% (1.18× larger) ⚠️ 255.5 ms 251.9 ms -1.4% 106.7 ms 116.6 ms +9.3% (1.09× slower) ⚠️ 17.25 MiB 19.04 MiB +10.4% (1.10× larger) ⚠️ 271.37M 249.57M -8.0% (1.09× fewer) 🟢

Workflow logs

Rebased onto the fused xor-rotation branch: the seven inline calls now
compose with the two-operand u32_xor_rotr7/12 forms. Codegen
regenerated and all 71 kernel FFT pins + the shard aggregate
re-measured on top of the new base (median -5.4%, range -11.4%..-0.2%;
shard 6.08B -> 5.21B, -14.4%). aiur (cargo + prove + cross),
ixvm (pins + parity), multi-stark and recursive-verifier suites pass;
fmt, clippy, deny clean.
@gabriel-barrett
gabriel-barrett force-pushed the perf/inline-blake3-round branch from 69ce736 to b6a4f22 Compare August 14, 2026 17:50
@gabriel-barrett

Copy link
Copy Markdown
Member Author

!benchmark aiur-recursive fresh

@gabriel-barrett

Copy link
Copy Markdown
Member Author

!benchmark aiur fresh

@argument-ci-bot

argument-ci-bot Bot commented Aug 14, 2026

Copy link
Copy Markdown

!benchmark — main vs b6a4f22

backends: aiur-recursive · envs: InitStd · set: primary · shard: 0 · baseline: fresh (base-SHA run, bencher bypassed)

aiur-recursive · InitStd — main from: base run @ 97aa19e (fresh — bencher bypassed)

3 constants · 3 with regressions · 3 with improvements (|Δ| > 3.0% on any metric).

constant recursive-prove-time (main) recursive-prove-time (PR) Δ% recursive-peak-ram (main) recursive-peak-ram (PR) Δ% recursive-proof-size (main) recursive-proof-size (PR) Δ% recursive-verify-time (main) recursive-verify-time (PR) Δ% recursive-execute-time (main) recursive-execute-time (PR) Δ% recursive-fft-cost (main) recursive-fft-cost (PR) Δ% prove-time (main) prove-time (PR) Δ% proof-size (main) proof-size (PR) Δ% verify-time (main) verify-time (PR) Δ% peak-ram (main) peak-ram (PR) Δ%
String.split 34.284 s 31.716 s -7.5% (1.08× faster) 🟢 102.25 GiB 81.04 GiB -20.7% (1.26× smaller) 🟢 5.27 MiB 6.27 MiB +18.9% (1.19× larger) ⚠️ 34.7 ms 37.9 ms +9.2% (1.09× slower) ⚠️ 5.645 s 4.839 s -14.3% (1.17× faster) 🟢 173.38B 143.49B -17.2% (1.21× fewer) 🟢 15.805 s 15.068 s -4.7% 🟢 11.19 MiB 12.14 MiB +8.5% (1.09× larger) ⚠️ 68.0 ms 75.8 ms +11.6% (1.12× slower) ⚠️ 32.25 GiB 29.75 GiB -7.7% (1.08× smaller) 🟢
Vector.append 31.433 s 28.063 s -10.7% (1.12× faster) 🟢 90.02 GiB 73.45 GiB -18.4% (1.23× smaller) 🟢 5.27 MiB 6.23 MiB +18.1% (1.18× larger) ⚠️ 32.5 ms 37.4 ms +15.3% (1.15× slower) ⚠️ 4.991 s 4.283 s -14.2% (1.17× faster) 🟢 152.01B 128.00B -15.8% (1.19× fewer) 🟢 3.853 s 3.825 s -0.7% 10.39 MiB 11.34 MiB +9.2% (1.09× larger) ⚠️ 65.2 ms 68.8 ms +5.5% (1.06× slower) ⚠️ 7.23 GiB 6.34 GiB -12.3% (1.14× smaller) 🟢
Nat.add_comm 20.507 s 17.985 s -12.3% (1.14× faster) 🟢 55.58 GiB 44.60 GiB -19.8% (1.25× smaller) 🟢 5.27 MiB 6.23 MiB +18.1% (1.18× larger) ⚠️ 34.9 ms 38.4 ms +10.2% (1.10× slower) ⚠️ 3.591 s 3.070 s -14.5% (1.17× faster) 🟢 107.43B 92.75B -13.7% (1.16× fewer) 🟢 1.034 s 1.031 s -0.4% 8.90 MiB 9.86 MiB +10.7% (1.11× larger) ⚠️ 53.3 ms 61.2 ms +14.9% (1.15× slower) ⚠️ 3.98 GiB 3.56 GiB -10.7% (1.12× smaller) 🟢

Workflow logs

@argument-ci-bot

argument-ci-bot Bot commented Aug 14, 2026

Copy link
Copy Markdown

!benchmark — main vs b6a4f22

backends: aiur=prove · envs: InitStd · set: primary · shard: 0 · baseline: fresh (base-SHA run, bencher bypassed)

aiur · InitStd · prove — main from: base run @ 97aa19e (fresh — bencher bypassed)

13 constants · 13 with regressions · 13 with improvements (|Δ| > 3.0% on any metric).

comparison table (13 constants)
constant prove-time (main) prove-time (PR) Δ% throughput (const/s) (main) throughput (const/s) (PR) Δ% peak-ram (main) peak-ram (PR) Δ% execute-time (main) execute-time (PR) Δ% verify-time (main) verify-time (PR) Δ% proof-size (main) proof-size (PR) Δ% fft-cost (main) fft-cost (PR) Δ%
Array.extract_append 37.550 s 37.412 s -0.4% 41.070 41.220 +0.4% 73.20 GiB 70.64 GiB -3.5% 🟢 9.577 s 9.391 s -1.9% 138.9 ms 151.1 ms +8.8% (1.09× slower) ⚠️ 21.54 MiB 23.38 MiB +8.5% (1.09× larger) ⚠️ 135.19B 130.81B -3.2% 🟢
ByteArray.utf8DecodeChar?_utf8EncodeChar_append 37.157 s 34.546 s -7.0% (1.08× faster) 🟢 72.420 77.900 +7.6% (1.08× faster) 🟢 72.13 GiB 67.22 GiB -6.8% (1.07× smaller) 🟢 9.613 s 9.122 s -5.1% (1.05× faster) 🟢 197.0 ms 148.7 ms -24.5% (1.33× faster) 🟢 21.63 MiB 23.47 MiB +8.5% (1.09× larger) ⚠️ 136.87B 126.89B -7.3% (1.08× fewer) 🟢
Char.ofOrdinal_le_of_le 28.515 s 28.454 s -0.2% 92.790 92.990 +0.2% 58.03 GiB 58.51 GiB +0.8% 6.602 s 6.421 s -2.8% 131.8 ms 150.6 ms +14.2% (1.14× slower) ⚠️ 21.58 MiB 23.42 MiB +8.5% (1.09× larger) ⚠️ 98.00B 90.63B -7.5% (1.08× fewer) 🟢
Vector.extract_append._proof_2 21.362 s 20.460 s -4.2% 🟢 60.950 63.640 +4.4% 🟢 39.42 GiB 38.21 GiB -3.1% 🟢 5.182 s 5.110 s -1.4% 128.2 ms 152.2 ms +18.7% (1.19× slower) ⚠️ 21.24 MiB 23.08 MiB +8.7% (1.09× larger) ⚠️ 76.48B 73.31B -4.1% 🟢
_private.Init.Data.Range.Polymorphic.SInt.0.Int64.instRxcHasSize_eq 17.040 s 15.965 s -6.3% (1.07× faster) 🟢 106.340 113.500 +6.7% (1.07× faster) 🟢 34.22 GiB 31.82 GiB -7.0% (1.08× smaller) 🟢 3.560 s 3.361 s -5.6% (1.06× faster) 🟢 134.9 ms 143.8 ms +6.6% (1.07× slower) ⚠️ 21.42 MiB 23.26 MiB +8.6% (1.09× larger) ⚠️ 54.00B 49.57B -8.2% (1.09× fewer) 🟢
String.split 16.080 s 15.024 s -6.6% (1.07× faster) 🟢 109.770 117.480 +7.0% (1.07× faster) 🟢 32.26 GiB 29.72 GiB -7.9% (1.09× smaller) 🟢 3.243 s 3.158 s -2.6% 132.5 ms 141.8 ms +7.0% (1.07× slower) ⚠️ 21.62 MiB 23.46 MiB +8.5% (1.09× larger) ⚠️ 49.51B 45.59B -7.9% (1.09× fewer) 🟢
List.mergeSort 11.944 s 11.350 s -5.0% (1.05× faster) 🟢 121.230 127.570 +5.2% (1.05× faster) 🟢 23.52 GiB 22.26 GiB -5.4% (1.06× smaller) 🟢 2.435 s 2.308 s -5.2% (1.05× faster) 🟢 133.7 ms 142.9 ms +6.9% (1.07× slower) ⚠️ 21.48 MiB 23.32 MiB +8.6% (1.09× larger) ⚠️ 35.52B 32.44B -8.7% (1.09× fewer) 🟢
Vector.append 3.982 s 3.778 s -5.1% (1.05× faster) 🟢 121.780 128.380 +5.4% (1.05× faster) 🟢 7.11 GiB 6.06 GiB -14.8% (1.17× smaller) 🟢 666.1 ms 647.1 ms -2.8% 135.2 ms 131.0 ms -3.1% 🟢 20.08 MiB 21.92 MiB +9.2% (1.09× larger) ⚠️ 7.90B 7.24B -8.3% (1.09× fewer) 🟢
Nat.gcd_comm 3.194 s 3.051 s -4.5% 🟢 122.110 127.830 +4.7% 🟢 4.92 GiB 4.81 GiB -2.2% 529.7 ms 504.2 ms -4.8% (1.05× faster) 🟢 122.8 ms 131.9 ms +7.4% (1.07× slower) ⚠️ 19.84 MiB 21.68 MiB +9.3% (1.09× larger) ⚠️ 5.15B 4.60B -10.7% (1.12× fewer) 🟢
String.append 2.339 s 2.245 s -4.0% 🟢 129.970 135.390 +4.2% 🟢 4.63 GiB 4.79 GiB +3.5% ⚠️ 400.3 ms 382.6 ms -4.4% 🟢 120.4 ms 127.3 ms +5.7% (1.06× slower) ⚠️ 19.12 MiB 20.96 MiB +9.6% (1.10× larger) ⚠️ 2.85B 2.55B -10.5% (1.12× fewer) 🟢
Int.gcd 1.991 s 1.956 s -1.8% 104.490 106.350 +1.8% 5.40 GiB 4.53 GiB -16.2% (1.19× smaller) 🟢 342.9 ms 340.7 ms -0.6% 113.8 ms 127.5 ms +12.0% (1.12× slower) ⚠️ 18.67 MiB 20.51 MiB +9.9% (1.10× larger) ⚠️ 1.83B 1.64B -10.3% (1.12× fewer) 🟢
Nat.sub_le_of_le_add 1.788 s 1.741 s -2.7% 95.060 97.660 +2.7% 4.42 GiB 4.61 GiB +4.3% ⚠️ 337.3 ms 333.3 ms -1.2% 113.0 ms 128.9 ms +14.1% (1.14× slower) ⚠️ 19.03 MiB 20.87 MiB +9.7% (1.10× larger) ⚠️ 1.58B 1.42B -10.0% (1.11× fewer) 🟢
Nat.add_comm 1.019 s 1.084 s +6.3% (1.06× slower) ⚠️ 41.200 38.740 -6.0% (1.06× slower) ⚠️ 4.17 GiB 3.49 GiB -16.4% (1.20× smaller) 🟢 245.4 ms 246.5 ms +0.4% 107.8 ms 115.9 ms +7.4% (1.07× slower) ⚠️ 17.20 MiB 19.04 MiB +10.7% (1.11× larger) ⚠️ 268.28M 249.57M -7.0% (1.07× fewer) 🟢

Workflow logs

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant