How to build a powerful distributed computer

Due to the heavy data requirement, wireless is too slow for almost any task, so you're going to need a physical connection between each machine. The faster your networking hardware, the better.

To start with, you should be fine with your standard Ethernet ports as long as they're capable of megabit speeds (100Mbps). If you need greater capacity, gigabit Ethernet cards are also cheap. Just stick them into a free PCI or PCI-X slot, and then disable the slower port if you can.

You'll also need a way of connecting the machines together. A gigabit switch can be bought for around £20 to £30, and this will let you connect each machine together at the maximum speed capacity.

You may be able to use the Ethernet ports on an internet or wireless router, but most will only be able to handle megabit speeds. It might be a good idea to start out using your standard Ethernet ports and your internet or wireless router and upgrade to a dedicated switch and ports later on.

As for general PC requirements, that depends on how you plan to use your cluster. Memory is more important than processing speed because it's likely that you'll be using your combined computing power for large, memory-intensive jobs. That means lots of images and textures in the case of 3D rendering, or lots of libraries, objects and source files in the case of distributed compilation.

Each node in a cluster will normally operate independently of the rest. If one machine has a lower specification, it shouldn't be too much of a bottleneck, but this depends on how you use your cluster.

If you're rendering a 300-frame animation and the slow machine happens to render only a handful of frames, then it has still made some contribution without holding any of the other machines back. But if the same machine is used to help render a single complex frame, it's likely that you'll need to wait for the slower machine to complete its work after the faster machines have finished.

Re-using hardware

If you're building these machines from scratch, you can cut corners. Other than for installing the OS, you won't need a keyboard, mouse, optical drive or screen.

You can even avoid using an optical drive for installation by using a tool called UNetbootin. This generates a Ubuntu USB stick installation from a standard CD image. However, its success depends on the capabilities of the system BIOS within each machine.

BIOS settings are normally accessed by pressing a certain key when you boot your machine. This key is most commonly [F2], but it could also be [F1], [Delete] or [Escape]. Look for any on-screen messages at boot for a clue. From the BIOS you should be able to discern whether your system can boot off external USB devices.

You should also disable 'halt on all errors' if the option exists. This means that your machine will boot even when there are errors or problems detected – which is what you need if the machine complains that no keyboard, mouse or screen has been detected.

Internal storage needs are minimal. You need around 10GB for the operating system, and it's going to be difficult to find a hard drive that small these days if you haven't got one or two handy.

For storing your project data, we'd recommend using either a large drive (or array) on the master machine, or use an external NAS device connected to the same switch as the other machines in the cluster. Linux can mount remote drives onto the local file system so that apps treat the remote storage as if it were local.