Sunday 7 September 2014

Introduction to Distributed Network Rendering - student's note: Part 1

 
`
rev: 1.0 updated: 08/09/2014

SUMMARY


This note explains what is "Distributed Network Rendering" in general, and how it works in Vray for Sketchup. Other 3D applications may not have the same methodology and approach but i believe they would be able to achieve the same result and speed maybe varies. It took me 2 years to planned, research and deploy this not just on Vray, but on various 3D applications and their implementation as well. However, for best result and easy to execute is Vray for sketchup. This plugin is very polished and considerably cheap compared to other rendering engines. The meaning of cheap here covers the time to learn the application and to deploy the DNR functionality features as we all know that time is money.

INTRODUCTION

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 of 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. The most common way to do this is to divide the frame to be rendered into small regions(buckets) and give each machine to render a number of them. Then get the results and combine them into the final image.
- chaosgroup.com

WHAT IS THE JUSTIFICATIONS?

Rendering speed is extremely important when it comes to meeting the deadline or given a time frame of a project commissioned by the client and consider the time factor in CG business as well. This technology (Distributed Network rendering or something similar) has been around for years and used in the movie industries and on large scale projects that cost millions. However, in recent years computers hardware have dropped in price, faster in speed and even better. It is affordable to implement Network Rendering now for small studio and even for SOHO. Depending on the budget, you can build your own rendering farm to meet the requirement you need. In my case, for research and education.

THE EXPERIMENT

It wasn't possible for me as a teacher to own a small research and development lap for this subject or to work on this technology few years back. This is due to the hardware limitations as well as software at that time prevented such experiment to be conducted at personal level. The most crucial part of the entire project is funding. With enough patience and the right timing, last year in October 2013 I've decided to execute this long awaited plan and slowly build these machines in the period of 6 months for the basic equipment (1 unit of Workstation and 2 units of rendering nodes or nodes) as trial basis. At first, I intended to have 3 dedicated units of nodes but since I am not in the render farm business, I cut the budget and reconfigured some of the specifications as originally planned. In addition, it is not cheap to build one. With this setup, I have the chance to work on the technology and I can increase the rendering speed by adding some other components to the new hardware setup which makes is sustainable should I require to do so. The most important thing is getting the result fast particularly creating new Vray materials, light adjustment in the scene and colour balance as a whole. It is very taxing task if you have a slow machine to do it.

Apart from that, I can conduct other research and create new courses which is one of the main reasons to have this money spent. How can we teach and explain to students if we do not have the necessary hands-on experience? In this field, we don't expect to pick up a book off the shelf and read from it or google some articles from the internet or youtube and pretend that we know the technology and know-how. If we have no experience or knowledge of a particular subject we just don't advise people what to do. We can discuss about it but to advise? Word of advise, get the same group of people that has the same interest or expertise to discuss with and certain people that good in the area of expertise such as network specialist and so on. Else you will get people that suffers from "Dunning-Kruger" effects all around the net or your social network to criticize and judge your works.

Frankly, these subjects are highly technical to me at least and not all information and functions can be explained or written down in the manual overnight. For all we know the book doesn't say a thing about troubleshooting during and after the implementation if shits happen. There is a reason they (the software creator) encourage us to seek advice from forums or search the blogs related to certain topics. These need experiment and not based on hearsay or guesstimate.

HARDWARE AND BUDGET

The computers and networking setup, i used medium range hardware specifications which consider as entry level to many, since this is not one machine but few that were required to run the test. We need to have a firm budget for this because we might end up over spent. We cannot put too much concentration and money on one particular unit like the workstation for example and neglect the rest. All of them are equally important and we need to oversee the entire spending and the result that we need. So just keep it moderate.

1. The workstation screenshots:

Cheap medium size workstation casing


Big cooling fan for long hour operation


1000 AV Power Stabilizer


Entry level 8GB RAM 1600Mhz


4 x 8GB RAM 1600 and Intel i7 3.5mhz


Mid range video card for modeling and
real-time rendering purpose. It is not necessary
for you to purchase this particular model.
You can use lower model than this depending on
your initial budget.

Note:
Some components added are for other research which are not required to run Distributed Network Rendering.

2. The rendering node screenshots:


Small casing for the rendering node for
small footprint


Mini ITX Motherboard and stable 450 Watt power supply is
suffice since there is no power hungry video card installed.


Mid range SSD hard drive as recommended by
Mr Charles Chin that this is one of the best in town and there
is a reason for that.


2 x 8GB 1600Mhz = 16GB for
each node


INTEL i7K 3.6Mhz for each rendering node. (generation could
be vary)

Note:
Use the most basic requirement for the node.

DISTRIBUTED NETWORK RENDERING ON MULTI-PLATFORM


I am not sure at this time, if we use multi-platforms or mix environment like Windows, linux or mac to perform this task but for testing and more consistent outcome i used the same platform (MS Windows 7 and 8 64 bits) and almost the same CPU specification. I connected the LAN network with 1000BASE‑TX hub and CAT6 cables which isolate the wireless connection to the internet and file server on all the machines. This way i can concentrate the distribution tasks using a different sets of IP addresses rather than mixing them up between the rendering packets and the internet connection. I used fixed IP address for the network rendering in this case. I am no hardware or network guru but i do think the configuration can be further improved . At this time it is not important to me since my main purpose is to run the DNR feature.

Some forums would discourage to have mixed platforms or even different computer architecture and some say that is not an issue. Perhaps both are correct in a way since known bugs have be eliminated and improved over the years like Chaos Group and others that offer the same principles or features in their respective applications.

To demonstrate this feature in Vray for Sketchup, I have prepared 2 short video clips performed on my setup to introduce you how to execute and activate the Distributed Network Rendering in Vray and the time difference between single machine and multiple machine render the same image. It may seem easy and simple but because of this note or article serves as an introduction only, i have skipped some procedures or shall I say Standard Operating Procedures (SOP) that you need to perform before executing the network rendering. The full article shall be released in another article later this year. The article will explain why such components being used and the details of setting up the network as well as Pros and Cons.

In this demonstration, I used the same image modelled in Sketchup and Vray as the rendering engine. The standard of reference used was render the same resolution with a single machine on (i7) and 2 i7s connected on the same network. Pay attention to the tiles or packets during the rendering process and the render time to complete in the end of the videos. For your information the video is not in real-time as to shorten the boring progress status of the rendering process. (for better viewing turn on the HD icon at the bottom of the video window on the player bar).



Rendered with Single i7




Rendered with Distributed Network rendering in Vray (i7 x 2)
 

Conclusion:

To use or not to use Distributed Network Rendering in Vray in General is really depends on the tasks and the final delivery that you need. If you render video sequence to 780 HD or 1080 FULL HD resolution or should you require to render your image to higher resolution (e.g. 7000 above) for print as you normally would (between 1k to 3k) then I suggest you to give it a try.

In theory if you need to render an image that takes 1 hour on a single machine it would be 1/5 of the time shorter if you use 5 nodes on Distributed Network Rendering with the same CPU speed. However, this depend on how the software manage the process and the technology differs greatly from one rendering engine to another. Since Sketchup is a 32 bit application and Vray operates within Sketchup, the rendering operation is limited to the 2 gb physical RAM limitation however, it was reported on the screen that an allocation of 4 GB ram were used for the rendering in this case. But this doesn't mean it will slowdown and limited to the rendering size. Indeed, sometimes you will encounter the exited limitation message or automatic quit from the application. There is solutions or work round for this kind of technical issues.

There are some unsolved issues that if an image render higher than 4k resolution somehow the nodes stop responding and caused the image not rendered properly (with blank packets). It could be the software beta released or something to do with the network configuration, other than that it is really amazing with the rendering speed and i am very happy with it. (refer to the achievement log at the end of this article)

I admit that I did not fully optimised the hardware and the network configuration during the test but that is not much of a concern to me since I only need more speed on the rendering part. However, for commercial services (providing render-farm services) or professional services these should not be overlooked and you should consult or do more research if you like on networking and packet thresholds.
Result of the speed test rendered at:
  • 4000 x 1818 resolution = 3m 45.4s Network rendering
  • 4000 x 1818 resolution = 7m 22.4s Single machine

Achievement Log:
  • 06/09/2014 able to push the render to the desire 7k resolution which is ideal for print to A3 or A2 size paper using .vrimg format Vray special rendering method.

  • 06/09/2014 rendering node stop responding to long rendering hours was due to that particular node was set to 32bit spawner for the server process which I set to autostart with windows. After switching to 64 bit version, then it ran smoothly. Further test needed to reaffirm that this assumption is accurate.




DIY Your NAS (Network-attached storage)

    Updated: 15/08/2015 rev. 2.2 SUMMARY Introduction to NAS This article is about Do-It-Yourself dedicated centralised fileserver. ...