From 948bdf0e41644596c5702f5dfae4ad6ddf95ffd8 Mon Sep 17 00:00:00 2001 From: "russell@unturf.com" Date: Fri, 5 Jun 2026 21:46:12 -0400 Subject: [PATCH] =?UTF-8?q?bend.html:=20streamline=20=E2=80=94=20collapse?= =?UTF-8?q?=20Wave=201=20detail=20into=20table,=20tighten=20prose?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Wave 1's 7 detailed entries (3 paragraphs each) become one compact 4-column table matching Waves 2/3/4. Drops ~30 lines without losing any reference URL or speedup number. Protocol section: 2 paragraphs → 1. Fleet section: 4 paragraphs + table → 2 paragraphs + same table. Net change: 284 → ~244 lines while preserving every citation and every measurement. Reads more like a reference doc. --- www/bend.html | 55 ++++++++++++++------------------------------------- 1 file changed, 15 insertions(+), 40 deletions(-) diff --git a/www/bend.html b/www/bend.html index f909363..17e158e 100644 --- a/www/bend.html +++ b/www/bend.html @@ -65,13 +65,12 @@ make gpu-worker LUMBDA=asm # smallest footprint 1M × 16 B23,811 ms159 msCLIFF157 ms -

Binary mode wins by 30–200× over S-expression mode at scale. At 1 M × 16 B inputs, C tier binary is 157 ms end-to-end versus 23,811 ms for the S-exp path. At that scale bend beats host hashlib by ~12×.

-

The CUDA toolchain stays isolated to the leaf binary the worker spawns. No tier links libcudart; no tier requires nvcc at build time. Asm tier hosts workers through hand-written pipe2 + fork + execve syscalls.

+

Binary mode wins by 30–200× over S-expression at scale; at 1 M × 16 B inputs C tier binary is 157 ms vs 23,811 ms for S-exp, and bend beats host hashlib by ~12×. The CUDA toolchain stays isolated to the leaf binary the worker spawns — no tier links libcudart; asm tier hosts workers through hand-written pipe2 + fork + execve syscalls.

Fleet

-

bend runs on a 2-host LAN cluster. Round-robin selection lives in bend.lsp via *bend-workers* & the BEND_WORKERS environment variable.

+

bend runs on a 2-host LAN cluster; round-robin selection lives in bend.lsp via *bend-workers* + BEND_WORKERS env.

@@ -79,8 +78,7 @@ make gpu-worker LUMBDA=asm # smallest footprint
hostGPUarchportcoexists with
ai.foxhop.netRTX 4090 (24 GB)sm_899092qwen LLM (llama.cpp) on GPU
-

The 4090 box shares its GPU with a qwen LLM. Bend kernels fit alongside because secp256k1 / CGBN workloads burn SMs for milliseconds at a time then release; qwen keeps its weights resident, bend allocates transient VRAM per call. 24 GB VRAM holds both.

-

Cluster aggregate (round-robin fan-out, sequential dispatcher): 1.6× at 200 × n=1k CGBN mod-mul, 1.2× at 6 × n=100k. Cap is client-side serialization; an async dispatcher unlocks the remaining 2× headroom. Workers themselves never block each other.

+

The 4090 box shares its GPU with a qwen LLM — bend kernels burn SMs for milliseconds then release; qwen keeps its weights resident; 24 GB VRAM holds both. Cluster aggregate (sequential round-robin dispatcher): 1.6× at 200 × n=1k mod-mul, 1.2× at 6 × n=100k; an async dispatcher unlocks the remaining 2× headroom.

@@ -131,41 +129,18 @@ make gpu-worker LUMBDA=asm # smallest footprint

Surveyed forms (Wave 1)

- -

A. cuda-secp256k1-batched-mul — batched secp256k1 scalar / point ops

-

Reference numbers: gECC 4.94× on unknown-point mul, 5.56× on ECDSA verify vs CPU. VanitySearch forks hit 6.5 Gkeys/s on RTX 4090, 8.6 Gkeys/s on RTX 5090, 2.65 Gkeys/s on RTX 3080.

-

Wire: (secp-mul-batch (scalars . blob<N×32B>) (base-point . blob<64B>)) → (points . blob<N×64B>)

-

Refs: gECC paper · VanitySearch · VanitySearch-Bitcrack

- -

B. cuda-bignum-cgbn — 256-bit modular arithmetic primitives

-

Reference numbers: 100×+ on dense mul vs Xeon-20c + GMP + OpenMP on V100.

-

Wire: (cgbn-batch (op . mod-mul|mod-inv|mod-add) (modulus . blob<32B>) (a . blob<N×32B>) (b . blob<N×32B>)) → blob<N×32B>

-

Refs: NVlabs CGBN · midsize-int benchmarks

- -

C. cuda-rho-pollard-walk — Pollard rho / kangaroo walks

-

Reference numbers: 87.7 M ops/sec on RTX 2070 Super for ECCp79. Original CUDA Pollard paper reports > 7.2 M points/sec at 256 threads on older hardware.

-

Wire: (rho-walk-batch (start-points . blob<W×64B>) (steps . N) (distinguished-mask . blob<32B>)) → (distinguished . blob<K×96B>)

-

Refs: atlomak/CUDA-rho-pollard · oritwoen/kangaroo

- -

D. cuda-clifford-stabilizer — tableau stabilizer simulator (Stim-on-GPU)

-

Reference numbers: 186× over Stim (CPU SOTA) on equivalence-checking.

-

Wire: (stab-sim-batch (n-qubits . k) (circuit . blob) (n-shots . S)) → (samples . blob<S×ceil(k/8)>)

-

Refs: STABSim · Qimax · equivalence-checking

- -

E. cuda-bernstein-yang-inv — batched modular inverse (safegcd)

-

Reference numbers: 3–10× per inversion over Fermat on CPU. No published dedicated CUDA implementation; Standalone Bernstein-Yang-on-CUDA holds novel territory.

-

Wire: (modinv-batch (modulus . blob<32B>) (xs . blob<N×32B>)) → blob<N×32B>

-

Refs: safegcd · Jumping for Bernstein-Yang

- -

F. cuda-ntt-poly — Number Theoretic Transform

-

Reference numbers: Up to 123× over CPU; 21× on RTX 3070; cuFFT-comparable kernel structure.

-

Wire: (ntt (mod . p) (omega . root) (xs . blob<N×8B>)) → blob<N×8B>

-

Refs: NTTSuite · FHE NTT

- -

G. cuda-radix-sort / cuda-prefix-scan — reduction primitives

-

Reference numbers: 1.4 G keys/sec on Titan; 20–50× over CPU merge sort; 257× over Intel Xeon Phi for scan.

-

Wire: (sort-u64 (xs . blob<N×8B>)) → blob<N×8B>

-

Refs: NVIDIA CUB · Onesweep

+ + + + + + + + + + + +
formthroughputhardwareref
cuda-secp256k1-batched-mul6.5 Gkeys/s VanitySearch RTX 4090; 8.6 Gkeys/s RTX 5090; 2.65 Gkeys/s RTX 3080(promoted — see Live)gECC · Bitcrack
cuda-bignum-cgbn100×+ on dense mul vs Xeon-20c + GMP + OpenMPV100NVlabs CGBN · midsize-int
cuda-rho-pollard-walk87.7 M ops/sec for ECCp79RTX 2070 Superatlomak · oritwoen
cuda-clifford-stabilizer186× over Stim (CPU SOTA) on equivalence-checkingSTABSimSTABSim · Qimax
cuda-bernstein-yang-inv3–10× per inversion over Fermat on CPU; novel territory on GPU—safegcd · Jumping
cuda-ntt-polyup to 123× over CPU; 21× on RTX 3070RTX 3070NTTSuite · FHE NTT
cuda-radix-sort1.4 G keys/sec; 20–50× over CPU merge sort; 257× vs Xeon Phi for scanTitanCUB · Onesweep

Surveyed forms (Wave 2)

Sorted by reported speedup descending.