Everything Digital, Everything Art

Hardware in Blender

The point of this document is to explain the purpose of hardware rendering within Blender, as well as where hardware comes into play when speeding up render times.

 

This was an article I added to the CGCookie Community, but since the Community was recently integrated into the site itself, and unable to preserve the old content I felt the need to preserve the post here. 

Contents

Render Methods Explanation

  1. OpenGL
  2. CUDA
  3. OpenCL

Hardware Rendering Types

  1. CPU Rendering
  2. GPU Rendering
  3. Multiple GPU Rendering

Helpful Information/Links

  1. Intel CPUs
  2. AMD CPUs
  3. AMD/ATI-based Video Cards (GPUs)
  4. nVidia-based Video Cards (GPUs)

 

Blender Rendering Methods Explained

One of the biggest requirements from a Blender user is the ability to render quickly. This can consist of rendering using the built-in viewport options, rendering Cycles previews using the viewport, as well as full frame renders. No matter what method of rendering you prefer, it is beneficial to understand how these methods use hardware to its advantage.

OpenGL Rendering

When you find yourself rendering within the viewport itself using the built-in options, or many times rendering exclusively with the Blender “Internal’ Render engine, you are making use of Blender’s OpenGL rendering.

OpenGL rendering is a method that has been used by many applications for decades which allowed the computer to utilize both the CPU and GPU (Central Processing Unit, Graphics Processing Unit) to increase the performance of the application’s graphical capability.  There is no exception for Blender, and it does not matter what type of CPU or GPU you use for this type of rendering, it will always work as intended. Unfortunately there are not any benchmarks (that I am aware of) to help gauge the performance based on hardware, and realistically it would not make much of a difference; it is much more important to base your decision of what hardware to get purely on the other rendering methods.

 

Cycles Preview Rendering/Full Frame Rendering

When Blender renders using the Cycles rendering engine, it bases this rendering on the specific hardware being used in the computer itself. This is where the type of hardware you have really comes into play, and will decide how fast a render is accomplished, as well as if it will happen at all. This is usually the performance most users try to compensate for with new hardware, but the fact of the matter is that even with the best hardware, there will be many times when renders will take a lot of time regardless.

 

Full Frame Rendering

To help increase the speed of renders, as well as reduce loss in incomplete renders, Blender uses a tile system to break renders up. With this system Blender renders each rendered still frame with tiles , where the Render is cut up into different sections. Not only does this allow renders to be rendered sections at a time, but helps increase performance when using a CPU or GPU to render. Each tile is rendered by a single CPU/GPU core/thread which means if you have an 8-core CPU, Blender will render 8 tiles simultaneously at any given time.  Tile size can also be changed by the user, as GPUs render faster with larger tiles, where CPUs render faster with smaller tiles.  All of these options can be found within the render settings, as well as plugins to take care of it for you.

 

Hardware Rendering Types Explained

CPU Rendering

With Cycles rendering, the default rendering mode consists of using the system’s CPU. This is usually the best method, because it is the only rendering method that allows Blender to use the system’s memory (Random Access Memory) when rendering. The importance of the system’s RAM lies in the fact that the scene being rendered must fit in the amount of allocated memory available, and the system itself is usually what has the most RAM available. To give an example: If your system has 8GB of RAM, the scene being rendered must not take up more than 8GB of RAM, otherwise Blender will give you an out of memory error once the memory has been exhausted in the render process.

The usual downfall that comes with CPU rendering is that the CPU itself is not the fastest rendering option when comparing performance with price. While there are many systems that use quad and octa-CPU Xeon setups with upwards to 72 total cores, and will make any other option look like a poor choice, the total cost for these systems quickly make it obvious such systems are not feasible for the typical end-user.

GPU Rendering

Opposite to CPU rendering is using a GPU to render your scenes and animations. Blender supports two GPU rendering methods, CUDA, and OpenCL. The difference between these two technologies is the accelerated hardware support Blender offers for these rendering methods. The Blender CUDA rendering capability is fully featured, meaning that it can render anything and everything on the GPU, where OpenCL is still in development, and there are still features that have yet to be supported. This does not mean you cannot use OpenCL to render what is supported, leaving the rest for the CPU, but having the ability to render anything on the GPU is a great thing to have.

Note: OpenCL support continues to see progress, and will be fully-featured in the future

Just like CPU rendering, there is a disadvantage to GPU rendering, the limitation of VRAM. It was only recently that video cards started to offer a substantial amount of VRAM (Video RAM), offering 8GB of VRAM on a single video card without having to spend your life savings. With that said, if the scene being rendered does not fit in the memory, CPU rendering is imminent.

One of the benefits of GPU rendering is the ability to use multiple GPUs to render, which Blender will use independently to render 200% (2 cards) and 300% (3 cards) faster, respectively when using the same card. The way Blender is capable of doing this is that it treats each card as a single GPU as if it was in its own system, and each GPU renders a single tile allowing a straightforward double, triple, or quadruple of performance when using multiple video cards.

In a situation where multiple cards are being used the memory does not stack, or become a collective amount of memory available. The maximum VRAM available to render the scene is based on the smallest amount of VRAM available by one of the cards. For example, with a system using 3 cards, one with 2GB, one with 4GB, and one with 6GB, the max VRAM available to render would be 2GB since the 2GB card would give an out of memory error when surpassing the 2GB mark.

 

Multiple GPU Rendering

Choosing two cards in a 3-GPU setup Image provided by AnthonyC of the CG Cookie Community.

In a situation where multiple cards are being used the memory does not stack, or become a collective amount of memory available. The maximum VRAM available to render the scene is based on the smallest amount of VRAM available by one of the cards. For example, with a system using 3 cards, one with 2GB, one with 4GB, and one with 6GB, the max VRAM available to render would be 2GB since the 2GB card would give an out of memory error when surpassing the 2GB mark.

 

To remove many previous multi-card rendering issues, as of Blender 2.78 users were given the option to pick and choose which cards to use with rendering. This means one can run a system with 3 different cards, and have the ability to pick the 2 most powerful cards for rendering.

Helpful Information/Links

Blender releases are created with the latest video drivers in mind, so make sure to update your video card drivers to keep video issues at bay.

OpenGL support errors are almost always due to the OS using an older video card driver disabling the OpenGL support. Any video card made in this century (and even older) will have OpenGL support.

Intel CPUs to use with Blender: Intel 6th Generation and Intel 7th Generation. Compare CPUs

Note: Apple computers use 5th Generation, and some 6th gen with fully-loaded models (Macbook Pro, Mac Pro). 7th gen models expected Q2 – Q3 2017 .

AMD CPUs to use with Blender: FX 8350, and AMD Ryzen.

Note: AMD FX CPUs render very slow when using Windows, with a 30-50% increase in render times. Not an issue when using Linux or BSD.

Supported CUDA Devices:  nVidia 400 series and higher  Check CUDA Enabled Devices

Supported OpenCL Devices: HD7000 series (some) and higher Check OpenCL Enabled Devices

Just like CPUs, you can also Compare GPUs

Blender GPU Rendering FAQ

Optimizing Renders (To clean up, and speed up renders) Learn Here at CGCookie

Map Baking (to reduce memory) Learn Here at CGCookie

Blender Artists: 2.7x Cycles Benchmarks

Blender Institute: New Cycles Benchmark