16 Core ARM Cluster for less than £130
I've always quite fancied playing around with a cluster, and now it seems, one can be had for relatively little cost.
It should be noted that at this point I am still waiting for some of the items to arrive, so I'm not sure if any of the following will actually work as yet! Also, I'm not expecting this thing to be particularly performant, I'm building this for educational reasons.
- 4 x Short Ethernet cables £7.56 (you might want to swap the linked item out for something similar, see below)
- 4 x Short Micro USB cables £8.99
- 4 x 16GB (8GB would probably be fine) Micro SD cards £27.80
- 1 x 5 port 10/100 Ethernet switch £6.49
- 1 x Powered USB splitter £17.99
- 4 x NanoPi NEO 512M + Heatsink & shipping to the UK $66.84 (£53.81)
You will also probably need a USB-serial converter, these can be picked up for a few £.
The two parts that have already arrived are the switch and the USB power supply, both are very similar form factors and will stack rather nicely with a bit of double sided tape.
The NanoPi NEO boards max out at 2A (10W) each, the switch is rated at 0.6A (3W). That gives an overall power of 43W, well within the 60W capability of the USB power supply chosen.
Optionally a new power cable for the switch can be made from a 1.45mm ID 3.45mm OD barrel connector, a USB type A plug, some heat shrink and wire. This will mean the whole thing could draw power from only one wall socket. If you don't want to do the soldering or cant find those components, using the power supply that comes in the box with the switch should be just fine.
The max output for each port on the PSU is 2.4A (12W) so if you were planning on replacing the boards with something with a higher draw (the Raspberry Pi3 for example, for which the recommended PSU current capacity is 2.5A), this might be something to consider.
As the cluster will be running on a separate network there will be no problem giving each device a static IP. If this is not the case then configuring a DHCP server to give each of them a static lease should be just fine as long as the cluster remains connected to the server.
Now for the really interesting stuff! I will be using OpenMP to handle the shared memory parallelism, and a simple socket interface to distribute data between the machines. The compute nodes will be clients to the master node's server. The clients will send requests to the master for new chunks of data to be processed.
The first use for this will be running some genetic algorithms where the main processing effort is in calculating the fitness of the individuals. To start with, all the crossover and mutation will be done by the master node, and once the population is ready, it will be distributed across the compute nodes for fitness evaluation. This will unfortunately lead to a short amount of time that the nodes are idle. I will look into fixing this when I have the baseline system working.
More parts arrived, sorry for the abysmal pictures.
Yes, one of the Ethernet cables is quite significantly shorter than the others, I might recommend not choosing the ones listed above, as they don't seem to be made to the same level of quality as the other parts on the list. They will remain on the list as I will continue to use them (they're not that bad)!
The USB cables on the other hand seem really great for the price and even come with some nice little Velcro ties that might come in handy later.
Software and testing coming soon.
Installed the operating systems and tested the network connections, all seems well!