What’s faster than one PC? Well, two (or more) PCs, right?
Yes and no.
As so often, it depends on your workloads.
And even if your workloads are suited for running on multiple PCs, how can you combine their processing power, anyway?
In this article, we’ll go through different workloads – from rendering to gaming – and see when it’s beneficial for you to combine multiple PCs – and how to do so.
Benefits of Combining Multiple PCs’ Processing Power
Let’s see what you can gain from utilizing the resources of multiple PCs, and whether or not it’s worth it for your use cases.
Connecting computers and pooling their resources together is done for three main reasons:
So you can continue using your primary PC without slowdowns.
This way, you can carry on working on your next project, or even gaming, while your, e.g., rendering or other processing tasks are running on the secondary computer.
To speed up extremely time-consuming tasks.
Some tasks might just take terribly long to complete. Yes, I am looking at you “Rendering” and “Simulating”.Such tasks can usually be separated into sub-tasks and assigned to different computers to be run simultaneously – often leading to a near-linear time-decrease per added PC. The bottleneck here is network connection latency, though, but for well-parallelized workloads this can be negligible.
For safety & reliability reasons.
There may be a process that you don’t want to be interrupted, so why not have a secondary computer that can take over if your first one crashes? This can save you from any potential data loss or time delays that can set back a project, or an ongoing process (like a live streaming session).
How is processing power combined? (A high-level view)
“Combine” is a bit of a misleading word here. If I were to truly combine 2 PCs, I would expect the result to be one PC that is twice as powerful.
Well, combining processing power doesn’t quite work this way. You don’t assemble or combine hardware physically.
It’s more of a connecting of 2 or more PCs, so you can “utilize the performance of both individual PCs as well as possible, with some ease-of-use”.
For simplicity’s sake, we’ll measure the processing power of a PC by how long it takes to complete one task. This task can be e.g. rendering a Video (Image sequence).
If one PC takes 1 hour to render our Video, then two PCs will optimally take just 30 minutes to complete the rendering. If you had 10 PCs, then that Video rendering will be done in just 6 Minutes.
This is an optimal case.
Now, if you start the video rendering on your first PC, there’s no way for all the other PCs to know yet, that they should help out with this task.
You’ll have to connect them and tell them to talk to each other.
There are many ways to connect PCs, but the most used and easiest one is through a network connection. You go out, buy a switch and some LAN Cables, and hook them all up to each other.
Servers work the same way. A single server is just a fancy word for a Computer in a different form-factor and intended use-case, and they are all hooked up to each other through a network connection.
Of course, a Network (or any kind of) connection introduces latency.
The farther data has to travel, the larger latency becomes (in layman’s terms).
The distance within a PC is very small, so data travel is extremely short (e.g. between one PC’s CPU and RAM). But from one PC to another PC over suboptimal wires (LAN cables), is a lot slower.
So what we have to do to circumvent the latency bottleneck as much as possible, is make sure the PCs can do as much work as possible on their own, before having to talk over the LAN cable to other PCs again.
This also means that not all tasks can be easily parallelized. Only tasks that can be easily divided into independent sub-tasks. More on that later.
What Kind of Performance Can Be Combined?
Let’s begin by looking into what particular components of your secondary PC you can use and benefit from the most.
If you’re going to be delegating a rendering task to a secondary computer, chances are you will need its CPU power.
The best CPU for rendering is one that has a high core count, with fast clock speeds.
If you have a second PC that’s sitting around, then you can make use of what you already have, even if it doesn’t have a CPU that is purpose-built with your workloads in mind.
But if you want to plan out a new build based on optimizing the processing power of a secondary PC’s CPU, you’ll want to make sure it has the best specifications for the task.
So to recap: You’ll be able to make use of a second PC’s CPU, but depending on its performance, the benefit might not be that great.
If your workloads are more so dependent on GPU performance (such as GPU Rendering), then a second, unused GPU can help you immensely in alleviating resources from, or adding to, the resources of your main PC.
And PCs can drive more than just a single GPU. With HEDT Workstation builds that can function as render nodes, you can add up to 4 GPUs per (desktop) PC.
If rendering workloads are on your daily task list, you’ll be happy to know that some render engines even support hybrid rendering. This means that, in addition to the performance of a second PC’s GPUs, you can also make use of the CPU’s processing power as well.
And you can add to this list any other workloads that can be split into independent sub-tasks.
Remember what we said about latency above? The less talking we have to do through the network, the faster processes can be completed.
If a simple task needs 1 second to get data through a network, a task that consists of 1 million such simple tasks would take forever.
Now, if this simple task would get data not through a network, but from their local Memory, this request would take just 10 nanoseconds! 100000000 times faster.
So our main goal has to be to reduce the amount of talking over the network.
We can do that by taking a big task, and splitting it up into independent sub-tasks.
Independent, so that an individual PC can work on this sub-task without the need for anynetwork access (until the job is completed and the result is sent back to the host).
Let’s make an example. A workload/task that can be easily parallelized:
Image processing (e.g. Batch scaling images to a different resolution).
If you want to resize 1000 Images, on 4 PCs, there’s nothing easier than just have each PC resize 250 Images.
The task of resizing 1000 Images can be easily split up into 1000 sub-tasks. Every single image resizing being one sub-task.
Rendering a 3D Animation
This works the same way. Rendering an Animation that consists of 100 Frames, can be easily split up into 100 individual sub-tasks. The Rendering of 1 Frame being the sub-task.
If you had 100 PCs this 100 Frame animation would render 100 times faster than on just a single PC (optimally).
What if we had 101 PCs? Or 1000 PCs? Would this help?
Because sub-tasks can’t be easily split further, having more PCs than sub-tasks will not help speed up the process.
This brings us to the next section:
Can the Processing Power of Two PCs Be Combined for Gaming?
This is an example of a task that can’t be split up into sub-tasks:
Gaming: You can’t split up running a Game into sub-tasks that would benefit from running on multiple PCs. Because of Latency.
Say you would want to use the Graphics Card on your secondary PC to compute the graphics, instead of the main PC that is running your Game.
Because the GPU needs to access 3d model data, scene data, textures, animations of a given level in real-time, 60 times (or more) per second, your network connection is just too slow and has unsuitable latency to send back the required rendered frames in that short of a time. You’d encountered abysmal lag.
Any task that requires real-time interaction is usually unsuitable for running on multiple PCs.
Of course, you could just launch the game on your second PC, and remote / screen share and control that second PC from your first PC, but that’s not really combining any processing power. That’s just playing on your second PC and controlling it from your first.
You have much less latency, but you still have some latency, as the finished, rendered frames still have to be sent to you through the network to display on your first PC’s monitor. (This is how online Streaming Games like Google’s Stadia works, by the way).
What about Streaming?
There is a case where connecting two PCs can be useful for gamers. If you love to stream your gaming achievements to an audience, then delegating the streaming task to a second PC can be incredibly useful.
To use the terms we introduced above: Running the Game is one (sub-)task, running the stream is another (sub-)task. Although this doesn’t scale perfectly, you have two tasks, and streaming can be outsourced to a second PC without any issues.
Not only does it free up resources from your master machine – allowing your CPU and video card to focus on processing the gaming application – but it also provides a safety net.
If your PC crashes, the second computer can still run the stream in real-time, uninterrupted. Viewers will still see you crystal clear, even if the game stopped entirely.
In order to stream using two PCs, you will need a specific peripheral called a capture card.
This connects to both gaming and streaming computers. It captures the audio and video from the gaming PC and outputs it to the streaming PC so it can be processed by a streaming application like OBS or XSplit.
How to Combine the Processing Power of Multiple PCs
Alright, so let’s say you need to combine PCs, how can you get it done? Well, there are different methods you can use, some more straightforward and simple than others.
Over the Network
We’ve already talked a bit about network connections.
It’s perhaps the simplest way to hook up multiple PCs to each other. From here, you can use the devices in a Homegroup network (Windows) so you can share files and peripherals.
This is also the step that allows certain specialized software (e.g. the Render Manager Thinkbox Deadline) the ability to harness the computational power of both your PCs through application-specific capabilities.
Here’s a Guide to getting started with any Hardware /Software Setup for enabling LAN connections.
These specialized applications will allow using network-connected PCs to help in processing a specificworkload.
For example, certain 3D render engines – like OctaneRender – will have a “network render” option. Using this option from the settings will allow you to send rendering tasks to a second computer with the click of a button (After some setup).
Because you might have more than just one specific workload that you’d like to distribute across your network PCs, a third-party Render Manager makes sense.
Render Managers are Tools that can manage processing jobs for a wide variety of Software. They queue, distribute and assign jobs based on different PCs’ processing capabilities and collect the result for further use.
If you want to make the investment and build your own Render Farm then your computers can become Render Nodes. These Render Nodes are subsequently controlled by a Render Manager.
The Parallel Virtual Machine (PVM) and the Message Passing Interface (MPI). These are a bit more complex and difficult to set up.
A PVM allows you to connect heterogeneous computers (basically PC’s with different hardware architecture; think AMD vs Intel) for concurrent operations.
For more information on this subject, you’ll want to visit netlib, where you’ll find the appropriate software and several in-depth tutorials.
Do be warned that these tutorials are highly technical in nature.
Message Passing Interface
When it comes to MPI, VirtualBox is where it’s at. You can use this application to connect multiple guest machines into a unified virtual machine.
VirtualBox also allows you to create guest operating systems on a device, which can give you the opportunity to test applications on different operating systems (if compatibility is an issue).
For example, if you’re using a Mac but the application you want to run only works on Windows, you can install a virtual OS and connect your separate computers to that OS and have them execute the application.
I know this sounds complicated, but it really is easier than it sounds.
In the end, though, you’re always bound by the bottleneck a Network Connection introduces.
Does Combining the Performance of Multiple PCs Make Sense?
As discussed, this depends on the workloads you’re running.
Can your workload be divided into independent sub-tasks? (good for distributing across multiple PCs)
Examples – Passive tasks such as Rendering, Batch-Processing
Or are your workloads highly latency-dependent? (bad for distributing across multiple PCs)
Examples – Active tasks such as Gaming, Active Work within a Software Application
That’s your answer right there.
Can I Combine My Laptop’s and PC’s Processing Power?
Sure! Laptops are just PCs in a different Form Factor, so all of the above applies to them as well.
Their lower performance capabilities compared to desktop PCs or Servers, though, wouldn’t make them my first choice.
If you already have one, feel free to use it, don’t buy an extra Laptop, though, for increasing your performance.
The performance per Dollar will always be worse in Laptops. They are made for mobility reasons first and foremost.
Can You Sell Your Computer’s Processing Power?
Since a Distributing Computing system can work via the cloud, your PC can also become a node on any such network.
In return for accessing your computer’s processing power, you can be compensated depending on your PC’s hardware, and the number of hours you lease it.
There are also Scientific Research Projects that distribute tasks, such as simulating Protein features, onto thousands of worldwide home PCs.
Folding @home is a well-known Project that you can take part in with very little setup.
There are also Render Farms that work by utilizing Home-PCs. The Sheep-It Renderfarm is such an example.
With the Sheepit Renderfarm you can make your PC’s resources available to others
Payment isn’t always monetary, though, in such Projects. You might be granted other means of compensation such as to render points.
Utilize the Processing power of multiple PCs through Online Render Farms
If you need to complete easily parallelizable tasks quickly, it may be wise to use an online Render Farm.
A Render Farm refers to a cluster of computers (Render Nodes) that are connected via a LAN network connection and accessed remotely.
Such Render Farms can be used via the cloud (online), through various companies that offer their rendering and processing services for a price.