About hardware accelerators advantages for full-node (not mining)
2 messages, 13 Jul 2015. Started by Alex Barcelo.
Alex Barcelo, Tier Nolan
I am searching for guidance and opinion in the subject's matter. I will begin with my use case, too see whether my ideas makes sense or not.
I have a Jetson TK1[1], which is a GPU (CUDA) powered development board. I thought that it may be a power-efficient device (in bitcoin environment), and thought about having it as a full-node. Either as a public full-node, if it makes sense, or a local full-node, to allow my PCs to perform relay onto the bitcoind in the Jetson. My idea is to run a bitcoind daemon on the Jetson as a node with high performance-per-watt (also cheap and repurposable). A pure-CPU implementation of bitcoind will clog the CPU
I assume that there are a bunch of heavy-compute highly-parallel functions which could be "outsourced" to a GPU. I may want to fork and/or contribute on that. However, maybe I am speaking nonsense. I have more background on parallel programming than my knowledge on bitcoin protocol. So, before coding a complete mess, I wanted to hear some opinions on the idea/configuration.
[1] https://developer.nvidia.com/jetson-tk1
The main processor load is for signature verification.
This requires a hash function call, some large number maths and an elliptic curve operation. The elliptic curve stuff is the longest step.
This takes around 1ms per signature on normal hardware, but optimized code is faster.
The main task is to prove that
R = u1 * G + u2 * Q
G is a constant, and the rest are different per signature.
Some of the core team have created a fast CPU implementation.
https://github.com/bitcoin/secp256k1.git
There was talk of batch verification of signatures. The process might take 16 signatures and compute them together.
I think a lot of the benefit of the GPU would be lost due to communication bandwidth. GPU miners benefit from needing very little information to be sent to the GPU routine.