The multi-core mini-revolution signalled the rise of multithreading techniques being discussed more vigorously, as the exploitation of multiple cores is no longer the reach of a few individuals, but is as common as the computer itself. Another way to get performance scalability is simply to use multiple machines, running some application or parts of it at the same time, hopefully distributing the workload appropriately and communicating if and as required to get the final result. Combining the two...