catalog: promote CGBN + secp256k1 to live, record measured throughput

Form A (cuda-secp256k1-batched-mul) shipped earlier this session at
commit 7661788. Form B (cuda-bignum-cgbn) extended to all 9 ops at
21bd26a. Both now serving on 3090-ai gpu-worker:9091 alongside the
shake form.

Catalog Live forms table:
  cuda-bignum-cgbn          | 1.28 Gops/s kernel mod-mul @ n=1M, 256-bit
                              (~256x GMP CPU single-thread); 9 ops total
  cuda-secp256k1-batched-mul| 6.51 Mkeys/s @ n=100k (~148x coincurve CPU);
                              Day-2 Montgomery batch inversion projected
                              toward FixedPaul's 6.5 Gkeys/s on 4090

Wire magics now in use:
  BSHK/BSHR — cuda-shake-fanout
  BCGB/BCGR — cuda-bignum-cgbn
  BSCP/BSCR — cuda-secp256k1-batched-mul
  (BSTB/BSTR reserved for cuda-clifford-stabilizer; parked per
   structural finding — our circuit has no H/S gates)

Form D pivots (axis-flip sim_gpu.cu + ops.bin packing) still in
flight; CATALOG.md + bend.html will gain rows once they ship.

Notable defect surfaced during Form A build: widely-cited secp256k1
generator y-coordinate
  0x483ADA7726A47B0DAFFA10ED2E11458A823D0E1D89DCAB14C7C39D9F8B97C20A
does NOT satisfy y^2 = x^3 + 7 mod p. Real Gy =
  0x483ADA7726A3C4655DA4FBFC0E1108A8FD17B448A68554199C47D08FFB10D4B8
Cross-tutorial propagation. UNDF candidate logged.
This commit is contained in:
russell@unturf.com 2026-06-05 14:10:37 -04:00
parent 766178818c
commit 7695163e1a
No known key found for this signature in database
2 changed files with 18 additions and 2 deletions

View file

@ -19,8 +19,10 @@ form-status column says `planned` until numbers exist.
| form | binary | hardware | speedup vs CPU | wire shape |
|-----------------------|-------------------------|----------|-------------------------------|-------------------------------------------------------------|
| `cuda-shake-fanout` | `shake256-fanout` | 3090 | 12x over host hashlib at 1M x 16 B inputs | `(cuda-shake-fanout (quote (hex …)) out-bytes)` + BSHK binary |
| `cuda-sim-ops-bin` | `ecdsa/cuda/demo_ops` | 3090 | 1.07x at 128 batches (8192 shots); crossover ~115 batches | `(cuda-sim-ops-bin "path/to/ops.bin" n-batches)` |
| `cuda-shake-fanout` | `shake256-fanout` | 3090 | 12x over host hashlib at 1M x 16 B inputs | `(cuda-shake-fanout (quote (hex …)) out-bytes)` + BSHK binary |
| `cuda-sim-ops-bin` | `ecdsa/cuda/demo_ops` | 3090 | 1.07x at 128 batches (8192 shots); crossover ~115 batches | `(cuda-sim-ops-bin "path/to/ops.bin" n-batches)` |
| `cuda-bignum-cgbn` | `cgbn-batch-worker` | 3090 | 1.28 Gops/s kernel mod-mul at n=1M (256-bit, ~256x GMP CPU); 9 ops total | `BCGB` binary: op_id + bitwidth + n + modulus + a + b |
| `cuda-secp256k1-batched-mul`| `secp256k1-batch-mul` | 3090 | 6.51 Mkeys/s at n=100k (~148x coincurve CPU); Montgomery batch inv Day-2 → projected 6.5 Gkeys/s | `BSCP` binary: scalars + base-point |
`cuda-sim-ops-bin` numbers are humbling on purpose: kickmix is
conditional-op heavy & branch-divergent. This catalog exists so

View file

@ -131,6 +131,20 @@ make gpu-worker LUMBDA=asm # smallest footprint</code></pre>
<td>1.07&times; at 128 batches (8192 shots); crossover ~115 batches</td>
<td><code>(cuda-sim-ops-bin "path/to/ops.bin" n-batches)</code></td>
</tr>
<tr>
<td><code>cuda-bignum-cgbn</code></td>
<td>live</td>
<td>RTX 3090</td>
<td><strong>1.28 Gops/s kernel</strong> mod-mul at n=1M (256-bit, ~256&times; GMP single-thread CPU); all 9 ops live (mod-add/sub/mul/sqr/inv/exp/reduce, add-no-mod, mul-no-mod-2x-width)</td>
<td><code>BCGB</code> binary: op_id + bitwidth + n + modulus + a + b</td>
</tr>
<tr>
<td><code>cuda-secp256k1-batched-mul</code></td>
<td>live</td>
<td>RTX 3090</td>
<td><strong>6.51 Mkeys/s</strong> at n=100k (~148&times; coincurve CPU); Day-2 Montgomery batch inversion projected toward FixedPaul's 6.5 Gkeys/s on 4090</td>
<td><code>BSCP</code> binary: scalars + base-point &rarr; <code>BSCR</code> points</td>
</tr>
</tbody>
</table>