mirror of
https://github.com/lux-apps/papers.git
synced 2026-11-03 05:07:46 +00:00
First measured scaling laws for post-quantum threshold consensus on heterogeneous hardware. Real numbers from M1 Max with wgpu-native 29.0.0 (real WebGPU, not polyfill). Main findings: * CPU per-NTT cost flat at ~1.4 us across n=1..65536. * Metal: 1.5 ms per dispatch, crosses CPU at n~3260, peaks 1.48x at n=65536. * WGSL: 2.7 ms per dispatch, asymptotic per-op (1.58 us) HIGHER than CPU (1.38 us) — never crosses on M1 Max. Constraint: uint32-emulated u64 vs Metal's native u64. * Pulsar production hot path n=2688 sits below both crossovers. Per-validator GPU acceleration unprofitable; aggregator-side multi-validator batching wins. Three empirical scaling laws derived: * L1 batch-size law: T_GPU/poly(n) = D/n + tau, crossover n* = D/(tau_CPU - tau_GPU). * L2 validator-parallelism law: aggregator amortizes dispatch over k validators. * L3 epoch-amortization law: workloads that batch at epoch boundary cross n* far earlier. Sections (660 LoC of LaTeX): 01-introduction — claim summary + sharpest finding 02-methodology — bench harness, hardware, threats to validity 03-measurements — TSV-grade tables of NTT sweep + workload-level (ZAP, FHE, reshare) 04-scaling-laws — three theorems with fitted constants 05-implications — concrete posture for backend.Policy defaults 06-honesty — what was measured vs not (NVIDIA, Block-STM, DEX, e2e) 99-conclusion — production posture + queued workstreams Data/ directory carries the raw TSV (ntt-sweep-m1max-2026-05-04.tsv) emitted by the new corona_lattice_ring_sweep_bench. Honest scope: NVIDIA H100, Block-STM parallel EVM throughput, DEX matching engine, and end-to-end consensus+EVM+DEX+FHE pipeline are all queued for v0.3.0; not in this paper. Section 06 documents the boundary.
921 B
921 B
| 1 | # Corona lattice_ring NTT sweep (Q=0x1000000004a01 N=256, Apple silicon) | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| 2 | # Metal: ON | WGSL: Dawn (real WebGPU) | |||||||||
| 3 | # | |||||||||
| 4 | # polys | CPU/poly_us | Metal/poly_us | WGSL/poly_us | CPU/batch_us | Metal/batch_us | WGSL/batch_us | Metal_speedup | WGSL_speedup | iters |
| 5 | 1 | 1.3571 | 1481.3618 | 2731.9228 | 1.36 | 1481.36 | 2731.92 | 0.001x | 0.000x | 2000 |
| 6 | 4 | 1.3380 | 505.2314 | 692.7828 | 5.35 | 2020.93 | 2771.13 | 0.003x | 0.002x | 2000 |
| 7 | 16 | 1.3598 | 186.5787 | 172.3772 | 21.76 | 2985.26 | 2758.04 | 0.007x | 0.008x | 2000 |
| 8 | 64 | 1.3554 | 89.5084 | 56.3136 | 86.75 | 5728.54 | 3604.07 | 0.015x | 0.024x | 2000 |
| 9 | 256 | 1.3539 | 23.5543 | 15.2922 | 346.59 | 6029.91 | 3914.81 | 0.057x | 0.089x | 1024 |
| 10 | 1024 | 1.4113 | 6.5490 | 4.5789 | 1445.17 | 6706.20 | 4688.74 | 0.215x | 0.308x | 256 |
| 11 | 2688 | 1.3786 | 3.1950 | 2.6479 | 3705.77 | 8588.15 | 7117.69 | 0.431x | 0.521x | 97 |
| 12 | 4096 | 1.5449 | 2.3217 | 2.2498 | 6328.00 | 9509.79 | 9215.33 | 0.665x | 0.687x | 64 |
| 13 | 16384 | 1.4938 | 1.1913 | 1.6806 | 24473.82 | 19518.02 | 27534.67 | 1.254x | 0.889x | 16 |
| 14 | 65536 | 1.3832 | 0.9337 | 1.5800 | 90652.03 | 61190.16 | 103545.52 | 1.481x | 0.875x | 4 |