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.

  • XMOS chips
    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.

  • Epiphany-IV (E64G401)
    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
    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!

-- Linus


  • Added that I'd like to program in C

  • Added FPGAs

  • 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

  • 2
    \$\begingroup\$ In case you're looking for power efficiency as well - what you're thinking about FPGA's with several soft-processors inside? Also, neural network and hashing can be done on FPGA without processor as i know \$\endgroup\$ – Looongcat Sep 11 '15 at 11:07
  • 1
    \$\begingroup\$ However, before ASICs the most efficient bitcoin miner was FPGA (same hashing task you've mentioned). The price is disadvantage, that's truth. GPU will be more cheap, but - it's less efficient in sense of power consumption. \$\endgroup\$ – Looongcat Sep 11 '15 at 11:18
  • 1
    \$\begingroup\$ Programming softcores in C on FPGAs is monumentally missing the point of FPGAs. If you don't want to learn hardware design in VHDL (or Verilog) you won't get the best out of them. \$\endgroup\$ – Brian Drummond Sep 11 '15 at 11:27
  • 1
    \$\begingroup\$ You've got a bit wrong idea - not external MCU, but external configuration memory. Anyway, it's even more expensive than MCU :) And @brian-drummond is right, learning HDL is a serious challenge. \$\endgroup\$ – Looongcat Sep 11 '15 at 11:36
  • 1
    \$\begingroup\$ Gotcha. It might be good to note what kind of budget you have to work with. \$\endgroup\$ – horta Sep 11 '15 at 14:15

Build a new machine

For now the most affordable solution for this is probably a PC with a good GPU. Try this configuration which is reasonably powerful, have no bottleneck and reasonably affordable (small form factor machine):

  • Intel Xeon E3-1231v3 processor (3.4GHz quad-core with hyperthreading)
  • Gigabyte GA-B85N-Phoenix mini-ITX motherboard
  • Kingston KVR DDR3-1600 RAM 8GBx2
  • AMD Radeon R9 290X GPU (or if you can afford it, R9 295X2)
  • Kingston SSDNow V300 120GB SATA-6Gbps SSD

Or if you have a good gaming rig, use it. The machine listed above is actually a suggested SFF gaming rig.

Another rig, a hell lot more expensive, a hell lot larger, more than three times as fast as the previous rig, and still no bottleneck at all:

  • Two Intel Xeon E5-2643v3 processor (3.4GHz hexa-core with hyperthreading)
  • Asus Z10PE-D16 WS dual-socket motherboard
  • Kingston KVR DDR4-2133 ECC RAM 16GBx8 (or if you can afford it, 16GBx16)
  • Two AMD Radeon R9 295X2 cards in CrossFire configuration (4 GPUs total, and if you can manage it, get three of them)
  • Intel SSD 730 Series (PCIe NVMe card)

Repurpose old systems, lots of them

Also if you can hunt down lots of old PCs for the cheap (e.g, my school is selling their 100+ Core 2 Duo PCs at $15 each after them being replaced by new i5 machines) you can whip up a few tens of them and throw them into a Beowulf cluster, if you know how to put those clusters into work.

For example if you whipped up 30 of those Core 2 Duo systems with 512MB RAM each, you end up with a cluster with 60 cores and 30GB of RAM.

The single-machine supercomputer

If you can score a Sony PlayStation 3 that can still run Linux, that beast will be able to help you a lot. By the way, according to USAF, put 1790 of them together in a Beowulf cluster and you get a TOP500 listed supercomputer.

| improve this answer | |
  • \$\begingroup\$ Thank you for your answer. The PS3 solution is very interesting. Also I'll look more into Beowulf clusters later on. I've looked into GPUs already, but as said, conditional branches are rather difficult for GPUs to compute, as seen in this paper: chipgen.stanford.edu/people/alum/pdf/… \$\endgroup\$ – Linus Brendel Sep 11 '15 at 13:10
  • \$\begingroup\$ @LinusBrendel The article you quoted are more than a decade old! Newer architectures are vastly different now! \$\endgroup\$ – Maxthon Chan Sep 12 '15 at 14:23

Not the answer you're looking for? Browse other questions tagged or ask your own question.