This page introduces and provides information on setting up Distributed Rendering.
Distributed rendering is a technique for distributing a single render job within a single frame across many computers in a network. There are different approaches to doing this, but the main concept is to reduce the render times by dividing different parts of the rendering pipeline and giving each participant different parts of the job.
To use the distributed rendering feature you need to have both V-Ray for 3ds Max and Autodesk 3ds Max installed on the Render Client when rendering with V-Ray Next. When using the V-Ray GPU render engine, V-Ray GPU render server installation is sufficient on each server machine.
V-Ray divides the frame into regions and spreads them across the participants in the distributed rendering. This is done completely through TCP/IP protocol which is the standard protocol of the Internet and thus the most common protocol that is supported by the hardware. V-Ray itself does not need additional file or directory sharing (note that you may actually need some file/directory sharing for the bitmaps or other additional files used during rendering). The distribution management is divided into Render Clients and Render Servers.
The render client is the computer from which the rendering is started. It divides the frame into rendering regions and spreads it across the Render Servers. It distributes data to the render servers for processing and collects the results.
Every render client requires a render node license. To see how to set up your render license, see the Set Up Your V-Ray License.
A render server is one of the computers in the network that does the rendering work. A render server requests render data from the render client, processes it, and sends the result back. In any DR job, there can be many render servers.
If any of the servers fails, you should get a notification and the render client will try to reassign the buckets to another server.
Distributed Rendering is performed differently depending on the V-Ray renderer. V-Ray Next requires vrayspawner to be run on the render server machine, while V-Ray GPU requires V-Ray GPU Render Server or V-Ray Standalone (with server command).
1. Set up the Render Servers by starting V-Ray Spawner on each server machine. It will start the 3dsmax.exe in server mode which will appear as 3ds Max minimized down in the taskbar. It should have the title "vraydummy.max". (This step is not required if the server machine uses spawner as service)
2. Set up the Render Client. In the V-Ray for 3ds Max interface, enable Distributed rendering from the Settings tab under the System rollout. Use the Render Server button to add the IPs of all your Render Servers.
V-Ray GPU can run on one or more CUDA enabled graphics cards. The GPU devices must be selected before initiating the distributed rendering on each server machine. To specify which cards to use, go to Windows Start > Programs > Chaos Group > Select devices for V-Ray GPU rendering of each render slave machine and pick.
By default, the render slave machine will use all its graphic cards in CUDA DR rendering, if nothing was specified beforehand.
1. Set up the Render Servers. You can do this in two different ways: (This step is not required if the server machine uses V-Ray server as service)
a. Start the render server on each server machine from Start menu > Programs > Chaos Group > Launch V-Ray GPU Render Server for 3ds Max ####.
b. Start the V-Ray Standalone and enter the "vray -server" command in the command prompt.
2. Set up the Render Client. In the V-Ray for 3ds Max interface, bring forth the Render Settings and in the Performance tab under the Distributed Rendering rollout switch On. Use the Render Server button to add the IPs of all your Render Servers.
Distributed rendering works over TCP/IP and requires the following ports:
|Renderer type||Port number||Port type|
Port 20205 is only used by render servers to broadcast a message that they are ready to join an ongoing DR rendering.
V-Ray Standalone when set as render server receives rendering requests on port 20207 by default.
You can add command line options to the VRaySpawner.
You can specify Numa command line options to VRaySpawner.exe to better utilize processor nodes with Numa architecture:
|-numa[=N]||Select the number of slave processes to start. If N is not given, N=0 or N>=M, one process per NUMA node will be created. Here "M" is the number of selected nodes using "-node", or the number of all available NUMA nodes if no "-node" is used.|
|-node=node1[,node2][,node3]...||Select NUMA nodes that will be used for the slave process(es). Default - use all available NUMA nodes.|
|-port=port1[,port2][,port3]...||Select listening ports for the slave process(es). If the number of processes is greater than the number of ports given, the last port is auto incremented. The default listening port is 20204 for 3ds max. The render client should be set to use the corresponding port range.|
|-Service||Register vrayspawner as a Windows service.|
|-UnregServer||Unregister vrayspawner as a Windows service.|
|-cmdparams="<parameters_string>"||Specifies a string to be provided directly as an argument to the spawned application.|
|-tempdir="<temp_folder_path>"||Override path for vrayspawner's temporary files folder. Vrayspawner is using %temp% to write some files needed for spawning applications.|
|-AppName="<excutable_file>"||Override spawned application file name. For example, for 3ds Max the default name is 3dsmax.exe.|
Example: Using 3ds max #### and a system with 8 NUMA nodes:
spawns eight 3dsmax.exe processes, every running on single NUMA node and using listening ports 20204-20211
spawns four 3dsmax.exe processes, every running on two NUMA nodes and using listening ports 20204-20207
spawns three 3dsmax.exe processes, running on NUMA nodes 3,5 & 6 and using listening ports 30000, 40000 & 40001
spawns three 3dsmax.exe processes, running on nodes (2,3) (4,5) & (6) and using listening ports 20204,20205 & 20206
#### is the 3ds Max version.