V-Ray RT 3.6 Hybrid Mode: Combining CPU and GPUs for RenderingWritten on October 4, 2017 by William George
In the latest version of V-Ray RT, currently available as a plug-in for 3ds Max, Chaos Group has added an interesting feature. V-Ray RT has always been about using GPUs to create photo-realistic renders, in contrast to V-Ray Adv (sometimes called V-Ray Production or just V-Ray) which uses the CPU instead. CPU-based rendering has been around a lot longer, but using GPUs can allow for much more horsepower to be packed into a single workstation or render node without too high of a price. That leaves the CPU in your system sitting idle, though, which is a bit of a waste.
With V-Ray RT 3.6, you can now use both the CPU and GPUs in a single computer! This is called Hybrid Rendering, and promises a free boost to rendering speeds without any additional complexity for users. The way it works is pretty ingenious: the folks at Chaos Group figured out a way to run CUDA code on the CPU. CUDA is the language used to perform general computation on NVIDIA graphics cards, and has been used by V-Ray RT for quite a while - but until now it could only run on GPUs. Being able to run the same code on CPUs as well was originally designed to allow for easier debugging, but it turned out to also be a nice way to get a speed boost when rendering without any additional hardware requirements.
There is a great blog post about this from Chaos Group themselves, if you want more insight into how and what they did - but they only provide a couple of limited performance examples. To augment that information, we have tested a slew of Intel Core X (Skylake-X) series processors with up to three GeForce GTX 1080 Ti video cards - to see how much of an impact adding the CPU has on performance with different numbers of GPUs. If this information is helpful to readers, we may test additional configurations in the future... so please let us know in the comments!
Test Hardware and Methodology
For this first foray into testing V-Ray Hybrid Rendering, we used a single hardware platform with the following specs:
|Skylake X (X299) Test Hardware|
|Motherboard:||Gigabyte X299 AORUS Gaming 7 (rev 1.0)|
|CPU:||Intel Core i9 7940X 3.1GHz
(4.3/4.4GHz Turbo) 14 Core
Intel Core i9 7960X 2.8GHz
(4.2/4.5GHz Turbo) 16 Core
Intel Core i9 7980XE 2.6GHz
(4.2/4.4GHz Turbo) 18 Core
|RAM:||8x Crucial DDR4-2666 16GB (128GB Total)|
|GPU:||3x NVIDIA GeForce GTX 1080 Ti 11GB|
|Hard Drive:||Samsung 960 Pro M.2 PCI-E x4 NVMe SSD|
|OS:||Windows 10 Pro 64-bit|
|Software:||V-Ray RT 3.60.03 for 3ds Max 2017|
To measure performance, we opened a complex indoor scene within 3ds Max 2017, switched the render engine to V-Ray RT, and then rendered it with the default resolution and settings. Here is a screenshot of what the finished render looked like:
What changed between runs was the mode selection within V-Ray RT and the CUDA device(s) being used. We ran the top and bottom ends of the above CPU spectrum (18 and 8 cores) with the CPU alone, in both CPU and CUDA modes, and then also with every possible combination of 1, 2, and 3 video cards. As you will see, we found that the video cards by themselves (without the CPU being included) scored very closely on both extreme ends of the processor line - so for the rest of the CPUs we only tested the combinations which included the CPU in the mix. Those results are broken out into three graphs below.
Results - Core i7 7820X
First up, we have the full run of different CPU and GPU combinations using the 8-core i7 7820X:
Here we can see a few interesting things:
- The i7 7820X is not as fast as a GeForce GTX 1080 Ti when it comes to rendering in V-Ray RT, but it does give better performance when in CUDA mode than when in the normal CPU mode (a setting that can be selected within V-Ray RT's render configuration options).
- Running the render on secondary video cards is substantially faster than doing so on the primary video card - the one which is handling display output. When I saw this I switched which video card was being used as the primary and ran it again, just to make sure we didn't have a defective video card - but the results were the same (within a percent or two / margin of error).
- Even though this CPU isn't nearly as fast as a dedicated video card, in this situation, adding it to the mix provides a free performance boost. That ranged from about 35% reduction in render time with a single GPU down to around 8% when three GPUs were being used. Considering that the only additional cost incurred to use the CPU is some electricity usage, this seems like a very nice boost!
Results - Core i9 7980XE
Next, we have the full same CPU and GPU combinations - but this time using the 18-core i9 7980XE:
This time around the CPU has a much larger impact! In fact, the i9 7980XE alone outpaces the GTX 1080 Ti when it is running as the primary video card... and it isn't far behind the same GPU when used as a secondary card (no video output). Consequently, it also has a much bigger impact on performance when used in combination with the video cards. At the top end, with three 1080 Ti cards, including the 18-core processor reduced render times by more roughly 20%.
Now that we have data from two different CPUs, we can also note a couple of additional things:
- The time difference between the full process of rendering (including all of the set up that 3ds Max does) and the main render passes is pretty steady - both between the two CPUs and across the different CUDA device combinations. There is some variance from one run to the next, but almost all of them fall in the 60 to 100 second range.
- When rendering on the GPUs only, the CPU in the system did not seem to matter. All of the results without the CPU included were within 2% of each other, well within margin of error, so we can safely exclude those from the rest of our testing. If you want to use that info in any comparisons you make as a reader, simply use the results from the two graphs above.
Results - CPU Comparison
Now that we have a good feel for the overall behavior of CPUs and GPUs in V-Ray RT 3.6, lets compare the rest of the Core X models:
The performance across these different CPUs lines up pretty well, considering the initial test results from the two ends of this spectrum. As core count increases, the impact the processor has on rendering speed goes up as well (and render times themselves go down). The more GPUs you have, though, the less overall impact the CPU will have. That isn't too surprising, though: in the same way, adding a 4th GPU would have much less impact on performance than adding a 2nd GPU. However, it is encouraging to see that the V-Ray RT engine still sees performance increases even with three GPUs.
This new Hybrid Rendering mode is quite beneficial, especially considering that it requires no additional hardware investment. Simply adding your processor to the list of CUDA devices used when rendering in V-Ray RT 3.6 will increase performance, even if you already have multiple GPUs at your disposal. The speed-up you get will depend on what CPU you have, though, so if you are buying or building a new workstation for V-Ray RT it is now worth considering a more powerful CPU than you might have in the past. We will be updating our V-Ray recommended systems accordingly, and may test additional processors / platforms in the future as well.