We have a few machines sitting around, some are cpu only machines, while other have nvidia or AMD gpus. Can I get all these machines hooked up and use the fastest rendering method on each machine for Cycles? Basically, it will use gpus (either Cuda or OpenCL) and if there isn't a gpu, it will default to cpu? Thanks.
-
1$\begingroup$ Do you plan on using these all for the same scene? If you're trying to render an animation, you can install a service like SheepIt! on all your machines, then sign in to all of them. Each machine will render different frames individually then upload them all to a cloud once they're done. You can then download all the frames your machine network has rendered in a ZIP file. It's quite useful, really. $\endgroup$– Josh SilveousDec 13, 2016 at 14:59
-
$\begingroup$ Thanks, we are trying to see if we can have a small mix renderfarm going, since some of our Blender files are around 500 mb to 1 gb in size. This makes rendering over the cloud difficult as it will take longer to transfer than render. I like to buy some more gpus, but worried that I won't be able to use them since I have a mixed farm and they will most likely default to cpu if my main machine use a different gpu than my renderfarm gpus. $\endgroup$– Tom C.Dec 14, 2016 at 13:02
-
$\begingroup$ Ah yes. SheepIt!'s 500mb limit is troublesome. Another workaround could be using google drive. If you install Google Drive on all your machines. Then, in Blender, under the output tab in the render panel, select the output location to a folder on the google drive. Then uncheck overwrite and check placeholders. In theory, this will create essentially a "shared folder" between all the machines. If you need me to explain in more detail, i'd be more than happy to. In regards to the question, if you set up the network like this you should be... $\endgroup$– Josh SilveousDec 14, 2016 at 13:15
-
$\begingroup$ ... able to use whatever device you want on each individual machine. $\endgroup$– Josh SilveousDec 14, 2016 at 13:16
-
$\begingroup$ I do have a share drive setup for all the machines, and they are all able to see it. So I think I'm good there. Just worried about buying a bunch of additional GPUs. I'll run some test to see if there's any issues, if there a way to see if a render node is actually using cpu or gpu? Thanks. $\endgroup$– Tom C.Dec 14, 2016 at 14:40
2 Answers
You should be able to configure the compute device on each machine, submit the render job, and have it "just work". In fact, this is the main reason why the compute device settings are in user preferences instead of scene settings: to allow them to be set per-machine, rather than per-scene. Two things to be mindful of:
The scene needs to be saved with "GPU compute" selected under render settings. This will set GPU-capable machines to use CUDA or OpenCL as set in user preferences, while CPU-only machines will fallback to CPU mode. However, if your workstation is a CPU-only machine, you will not be able to simply select this option. I could've sworn there was a question on Blender StackExchange somewhere about how to work around this particular issue, but I can't for the life of me find it, apologies.
Not all features/shaders are supported in OpenCL mode. There is no easy or automatic way to prevent your OpenCL-GPU machines from running a scene that needs these features. You will have to do it by hand. See this table for the current feature status: https://docs.blender.org/manual/en/dev/render/cycles/features.html
One way to handle this: if your render farm software supports machine groups, you may want to consider creating a "cycles safe features" group that contains all machines, then a second "cycles all features" group that only contains CPU/CUDA machines, and use the "all features" group for a job that needs features that aren't supported in OpenCL.
To render with your GPU, open Blender and go to File>User Preferences>System and in the Bottom-left, enable CUDA (or whatever is next to none) then, under the render tab in the properties panel, set Compute Device to GPU.
-
$\begingroup$ Thank you. I did that, but what if I set my project to Cuda and my renderfarm gpu is using OpenCL. Will it intelligently switch to opencl for me or will is default to cpu? I plan to use Network Render or CGRU for the farm. Thanks. $\endgroup$– Tom C.Dec 14, 2016 at 16:31
-
$\begingroup$ @TomC. Yea. Unless you are using multiple GPUs on the same machine that aren't the same brand (Nvidia, AMD, etc.) $\endgroup$ Dec 14, 2016 at 18:47