If anyone wants to try out a GPU (CUDA) based npub miner I put one together and pushed to GitHub.
Discussion
Took about 10 days on a 3070 to find this 9 char prefix.

FWIW… there is also a branch with a Metal build which is functional, but it’s only doing 8mm keys/sec vs about 42mm on the 3070.
Love it! Thank you. Running now to generate the airchat account nostr:npub1g53mukxnjkcmr94fhryzkqutdz2ukq4ks0gvy5af25rgmwsl4ngq43drvk
What about for commercial cards? :) Specifically vgpu. You wouldn't happen to know where/how to get the toolkit? I'll have to check my driver packages but I don't think it's included with the grid drivers. Hopefully it doesn't require a consumer driver package.
Should work with any NVIDIA card with Cuda drivers. When you say vGPU, what type of setup?
I built and tested it using the 3070 I have at my desk. I’ll go test it on an H200 now and report back.
Confirmed working on an H200. Getting 170mm keys/sec 🔥

Thanks for following up. With vGPU it's nvidia grid virtual gpu. So it's a pair of tesla p100s with a "custom" gpu profiles into virtual machines. If you're unfamiliar it requires nvidia proprietary driver distributions to work. All drivers and guest software (usermode executable etc) come packaged together. and I don't see the toolkit bundled with it.
That said I also am unfamiliar with the toolkit on linux. Not sure if it's available through standard dnf distribution channels. Specifically rhel.
Not totally sure about RHEL but I bet we can get it figured out.
When you run nvcc —version does it fail?
RHEL packages appear to be publicly available without any sort of restrictions
https://developer.download.nvidia.com/compute/cuda/repos/rhel8/x86_64/cuda-rhel8.repo
https://developer.download.nvidia.com/compute/cuda/repos/rhel9/x86_64/cuda-rhel9.repo
nvcc is not available on the system. Yeah the other issue is that I'm forced to use a really old driver and older kernel. So the target machine specifically is running rocky 9 with kernel 6.14 on driver 550.163 with cuda 12.4. It looks like the toolkits available from those links you shared require cuda 13 or newer. I think I have to find an old package.
Found this which sounds like it might match your setup
Thanks for sharing those links, it means I just need to look harder! I've had better luck using the .run self contained files than the rpm packages (I don't think nvidia actually tests them XD)
You bet, not a problem. If you get them installed all you would need to do is update the makefile to CCAP=60 and set NOSTR_BLOCKS_PER_GRID = 1120 in GPURummage.h
This is awesome... GPU PoW on Nostr was something I expected for a while now and you finally brought it upon us. Every other project will be nostr:nprofile1qqswd2dylpf7fvw5ym45f5x9mvylm3q4eegnuejprr6x7hlmagcye0qpzemhxue69uhk2er9dchxummnw3ezumrpdejz7qg4waehxw309aex2mrp0yhxgctdw4eju6t09uq3zamnwvaz7tmwdaehgu3wd3skuep0hz5zqr inspired forever.
Is there a reason the private key is exported as hex? Could you change it to the actual nsec? Seems inconvenient…
Yeah good point, no reason not to display both formats in either mode for convenience. Just updated that.
Also heads up that I moved the block/thread config to the makefile as compiler flags so people don’t have to edit 2 files.
Thanks!
Much better now. Another bug I saw — I don’t think it actually shutdown properly. After pressing Ctrl + C, my GPU was running and my entire computer stalled… it didn’t stop the program clearly. I had to forcefully shutdown my computer. May be worth investigating. Was in WSL Ubuntu.
Alas, the nsec doesn’t actually match to the public key. When I paste in the nsec on Damus or primal, it doesn’t show an account with that public key. Something is seriously broken.
😬 well that’s embarrassing. Spent too much time on performance and not enough on testing. The math was correct, it was just backwards. Just pushed a fix.
Validated on both prefix types in a nostr client.

Also for the record, while some might blame Claude, AI slop, etc etc… I see this as my fault. Once I cloned the Damus repo and gave Claude the right instructions for testing everything was sorted out quickly. Had I done that up front, which is the proper approach, this would have been avoided.
No worries, we all make mistakes! Thank you for fixing.