Network Rendering with FinalDCP

Because FinalDCP was developed to handle the workload of one of the biggest film festivals in Germany, it comes right out of the box with network rendering capabilities. But network rendering is (in my opinion) one of the best, but mostly unused features of FinalDCP. So I’m going to give you a quick guide how to utilize network rendering in FinalDCP.

Why do you even want to use network rendering?

That question is easy to answer: Speed
When you have a few computers, that are the same, with FinalDCPs network rendering, you can lower rendering times significantly.

1 Node
30,5 fps
5 Nodes
146,9 fps
10 Nodes
264,7 fps

* Dual Xeon Quadcore X5550 @ 2.67 GHz (16 Threads) converting from CineForm to JPEG2000 1920 x 1080 24p

But you could also use it to offload the processing from your main computer. Let’s say you are an editor or colorist and have your main hero machine, that can work with 4K (exchange with the highes resolution at the time of reading) in realtime and you don’t want to block it, just to create a DCP. Well, just use FinalDCP on your main machine, to create the render job, and send to it to the RenderManager and let another machine do the actual work, while you can continue to work on your hero machine and create more revenue.

Please keep in mind, that your network speed is very important to achieve significant speed improvements. For example, if you are using uncompressed TIFF files, and only have a standard 1 GBit/s network, you will not benefit from using network rendering at all. If you have a decent RAID in your computer, not using network rendering, will be much faster.

Why?

One frame 2K uncompressed 2048×1080 16Bit needs 2048 x 1080 x 3(rgb) x 2 (2x8bit) = 13271040 Byte = 13.27 MByte per frame. That makes 13.27 MByte / frame * 24 frames / s = 318.5 MByte / s

To convert from bits to byte, you have to divide the bits by 8. So your 1 GBit/s network can theoretically handle 1000Mbit/s / 8 = 125 MByte/s.

1920x1080 24p 12Bit ProRes
41.25 MByte/s
1 GBit Ethernet
125 MByte/s
1920x1080 24p 16Bit uncompressed
298.6 MByte/s
2048x1080 24p 16Bit uncompressed
318.5 MByte/s

So if you computer could render with 30,5 fps like in our test at the top. You would be slower using network rendering, because your network would be the bottleneck.

We were only able to get the 264,7 fps, because we used a compressed source format (CineForm) and this way reduced the needed network bandwidth.

What do we need to use network rendering?

First you need at least one additional computer and a wired network. I do not recommend using your WLAN for network rendering. Because of the latency between a request and an answer, rendering speeds over WLAN can be slow.

Than you need at least one network share. Every computer that should help you with rendering has to have read access to your source material and write access to your destination folder. Also on OS X computers make sure that the network shares you use are mounted to the same path on every computer.

Open the RenderManager on the machine with your licenses.
Please don’t use more than one RenderManager in your network. This is because RenderManager also acts as a license server. So if you have more than one RenderManager open, the render job might get send to the RenderManager without a license, and this will not work.

Then open the Worker application on every computer that you want to render with, and make sure, that it connects to your RenderManager.

The last step is to create your FinalDCP project. Drag you source material from your network share and not your local storage into FinalDCP and set the destination folder also to a folder on a network share. That’s it. Just press Create Package to send your FinalDCP project to RenderManager, and watch how RenderManager distributes the rendering to all connected Worker.