engine-cuda: deferred carries, carry-flag arithmetic, one nonce per thread #17
Reference in New Issue
Block a user
Delete Branch "cuda/tuning"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
#3 step 5. Kernel tuning measured on benjy (RTX 4090 at 250 W, miner paused, interleaved rounds); every variant passed parity against
pow_corebefore it was timed.gf_add/gf_reducevia inline PTX2.86x origin's wgpu build on the same card and limit. Part of the gain is indirect: fewer instructions per hash let the power-capped card boost from 1920 to 1995 MHz.
Rejected by measurement:
__noinline__permute (13 percent slower, so code size was not the limit),-maxrregcount80 and 64 (flat), internal-round unroll 1 or 22 (flat).Batch size (#6 for the CUDA engine): with the old grid cap of 1M threads, batches above 1M looped nonces per thread and lost up to 4 percent; with the cap at 4M threads every batch size from 1M to 16M lands at 304 to 306. So batch size is irrelevant to throughput here and stays at 1M, which keeps stale work per job switch smallest.
Every knob remains a
-Dmacro reachable throughMINER_NVCC_FLAGS, so the harness can keep testing variants without code changes. Thebenchrun on this PR is the full-protocol confirmation (5 x 30 s, parity 25).Not measured:
sm_120. Its compile used 255 registers with 100 bytes of spill on the earlier kernel, against 128 and 16 on Ada, which is a different codegen outcome and needs beast to evaluate.🤖 Generated with Claude Code
https://claude.ai/code/session_01CBgs2nSi4H2mdh8kD8vMX5
quantus-bench
b640d3a711on benjy.hanzalova.internaltotal median: 408.27 MH/s (batch 1000000, 5 x 30s, engine gpu-cuda)
--- resume miner ---
active