This is my first question ever on this site, so I hope I don't mess this up. :D
I'll try to be as specific as possible.
What I need:
Something that I can program in C (or a C-like language).
I need a processing unit that can be connected in an array for massively parallel computations.
The unit should have a many/multi-core architecture (32-bit RISC is good enough) and the cores as well as the units should be able to communicate with each other.
All units should be simultaneously programmable. I don't want to program every one of them by hand.
Every core will run the same simple algorithm, but with a different nonce.
Cores times speed divided by price should be as high as possible.
The resulting array should be able to outperform a standard desktop computer by several orders of magnitude regarding highly parallel computations.
The solution shouldn't be too complicated.
I don't really care for power efficiency. As long as it doesn't require ridiculous amounts of power (such as a private nuclear power plant per cpu) it shouldn't be a problem.
What I need it for:
Neural Networks & various other implementations of Machine Learning
Finding prime numbers, as well as other math-related problems (such as Collatz conjecture, etc.)
Hashing & other brute-force applications
Among other parallel programs.
What I've found so far:
GPU accelerated computing:
This solution seems to be the best I've found so far. Using CUDA & OpenCL I can use the hardware shaders of a GPU as individual cores. This is how Bitcoin mining was done in the past.
The upside of this approach is that I can have hundreds of threads running simultaneously. Also there is a lot of online support using this method.
The downside of this approach is that GPU shaders are terrible at conditional branches, thus hindering me of writing any such programs with many nested conditions.
One of the first family ICs I've stumbled upon that seemed appropriate was the xCORE product range. They are microprocessors that are relatively cheap (~20USD each) and can have up to 32 cores.
What is a bit off-putting is the fact that the only indication of speed is in MIPS. Looking at a hookup guide, they use a 25MHz external crystal. Also there isn't too much online support.
The Parallella Board
This is a very interesting little board that is marketed as a "credit card sized supercomputer". It runs a derivative of Ubuntu and has a Epiphany-III co-processor with 16 cores (I think). They say it can execute 90 GFLOPS.
The downside is that I need more cores.
This microprocessor seems perfect. It is made by the same company as the Parallella board and features 64 RISC cores at a whopping 800Mhz.
The only downside is that this IC is discontinued. :'(
Kalray processors and PCIe cards
Again a very interesting solution for parallel computation, where the processors have up to 256 cores. Kalray also offers training in using their products.
The downside is that one has to request for a price and it seems like one can only buy these components from them directly. Also it seems to me that they are more focused on networking.
FPGAs have also come into consideration, as they can perform entire algorithms in single clock cycles.
What I'm looking for though is something that can also perform very large algorithms, while FPGAs don't have that many logical elements.
Budgetwise I'm really flexible. So let's say 10'000USD.
I'd prefer to design my own computing array pcb with an ic you guys recommend, however I'm open to other solutions. Maybe I've already found the best solution but I don't know it yet. What do you ladies and gentlemen think?
Thank you very much in advance!
Added that I'd like to program in C
Added that I don't care for power consumption
Added that I'd prefer to make my own pcb
Added budget of 10 000 usd