Dave Andersen, a computer science professor, writes about systems, Go, C++, Rust, and cryptocurrency mining performance.
HN commenters cite his write-up on Monero's original proof-of-work function and CPU vector optimizations, and his work on teaching distributed systems in Go.
I mean, a serious FPGA lab would simply keep their FPGA techniques secret until they build a sizable advantage. There's a lot of tech that would be built up: a custom memory controller, an implementation of various Cryptocoin PoW systems, and of course, the Bill of Materials for the ideal power-efficiency for various designs, etc. etc.
Something like an FPGA + Interposer to HMC would be a huge R&D effort, and just as centralizing.
BTW: None of the designs I've talked about are strictly speaking commodity. They'd require at a minimum, custom PCBs. Maybe more advanced techniques for the best technology (again: Custom Interposer to HMC + FPGA interface + all the Verilog / VHDL code to make it happen).
As long as an FPGA-based shop kept their FPGA PCB secret, as well as their code secret, and their Device Drivers secret (You'd probably run Linux / Windows to talk to the FPGA over PCIe) then they're basically going to be ahead of the rest of the competition. Eventually, the competition would catch up, but a constant R&D effort into newer designs (ie: testing HBM2 vs HMC vs RLDRAM3 vs QDRIV, building relationships with suppliers, etc. etc.) could lead into a sustainable business edge.
Heck, early on in Monero's life, some dude got to like 40%+ of the entire network's Hash Rate by simply writing better CPU code and keeping it for himself, and then spending hundreds-of-thousands of dollars on AWS: https://da-data.blogspot.com/2014/08/minting-money-with-monero-and-cpu.html
> By…
> I woke up on May 28th, 2014 [one month after Monero launched], on vacation with my family in the middle of the desert, to find a copy of my private source code plastered across the bitcointalk message board. Announced as a "new optimized version" of the Monero currency miner, it was enthusiastically adopted by cryptocurrency miners across the world. And in the process of doing so, my daily profit from the Monero Mining Project dropped by over five thousand dollars per day.
...
> [Monero] was a fork of Bytecoin designed to not have the 80% premine. But its initial developer either didn't know, didn't care, or wanted to profit from the de-optimized hashing. That initial developer was pretty quickly given the boot by the community, and in came an unrelated group of developers who took it over---who were, as far as I can tell, completely unaware of the deoptimization. So things sat there for a few weeks in the same state as Bytecoin.
...
> This was a brilliantly designed proof-of-work function targeting the strengths of modern CPUs -- native AES encryption and fast 64 bit multipliers -- tuned to use a scratchpad exactly the size of the per-core L3 cache on Intel CPUs (about 2MB) that someone then wrapped in such a thick blanket of crap it was nearly unrecognizable until you started jumping in, tearing it apart, and putting it back together again.
https://da-data.blogspot.com/2014/08/minting-money-with-monero-and-cpu.html
I was very eagerly awaiting the optimizations mentioned in part 1[0]. Unfortunately the optimizations work primarily on the Kepler architecture (Geforce 6xx, 7xx, and the GridGPU chips on EC2) and not the older Fermi chips that are so popular for CUDA/Scientific Computing. All that said those quoting khash figures still seem to be getting poorer performance than the GTX 580, so I've got no right to complain.[1]
In any case it is very commendable that someone is making an effort towards bringing nVidia GPUs performance in line with that experienced by AMD owners. I'm glad someone with experience in memory usage optimization is looking into this.
To Dave: If you're reading this then thank you from the collective of nVidia GPU owners.
[0] http://da-data.blogspot.ca/2013/12/briefly-profitable-alt-coin-mining-on.html
[1] http://da-data.blogspot.co.uk/2013/12/scrypt-mining-changes-incorporated-into.html
If folks are interested in the old Monero PoW function (and, uh, the reason they changed it), I wrote up a thing about it a long time ago:
https://da-data.blogspot.com/2014/08/minting-money-with-monero-and-cpu.html
The history of people trying to design GPU or ASIC-resistant proof-of-work functions is long and mostly unsuccessful. I haven't looked into RandomX; it's possible they've succeeded here (or possible that with the alt-coin market mining profitability tanking after Ethereum moved to proof-of-stake, it just wasn't worth it).
Yeah, I heard about that. Thing is, I talked to him last sem and he wasn't sure that Go would be allowed at that point, so I decided to wait a sem. Have you heard anything from the people doing it in Go this time? Its awesome to have the opportunity to use it, but I think it would throw people off for a the first 1-2 weeks while they were getting used to it which might put them at a disadvantage relative to the class. Andersen said something similar too - http://da-data.blogspot.com/2013/02/teaching-distributed-systems-in-go.html