Hardware for Blender
With popular questions focused around hardware, I thought it best to create a thread to explain the purpose of hardware rendering within Blender, as well as where hardware comes into play when speeding up render times. Hardware models will be updated as time passes, and being a Community post anyone is welcome to suggest topics/changes to make this a great central point for "Blender Hardware" questions.
Render Methods Explanation
Hardware Rendering Types
- CPU Rendering
- GPU Rendering
- OpenGL Support
- Intel CPUs
- AMD CPUs
- Supported CUDA GPUs
- Supported OpenCL GPUs
- Blender GPU Rendering FAQ
- Memory Reduction
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.
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
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.
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.
Multiple Card Rendering
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.
Choosing two cards in a 3-GPU setup
Image provided by @anthony_c
More 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.
Even when video cards are set in SLI, Blender will see and use these cards as individual GPUs. This allows users to have SLI available for applications taking advantage of SLI, but give Blender even more performance using them separately. (Crossfire not tested)
Intel CPUs to use with Blender: Intel 6th Generation and Intel 7th Generation. Compare CPUs
Apple and Intel: Most Apple computers use 5th Generation with their systems, and even 3rd generation Ivy Bridge Xeon CPUs with the Mac Pro. The new 2017 MacBook Pros with TouchBars use the latest 6th generation Skylake CPUs, but only offering AMD R9 450, 455, and 460 GPUs.
The more powerful 7th gen Kaby Lake MBPs with nVidia GPUs were expected in Q2 before being pushed back, and are now expected sometime in Q3 2017, as well as the new iMacs late Q3, and modular Mac Pros 2018-2019.
CPUs used in Current Apple Systems
AMD CPUs to use with Blender: FX 8350, and AMD Ryzen.
Note: FX 9000 series consists of overclocked 8350 CPUs 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
While Cycles OpenCL is being developed, AMD/ATI users can use AMD's ProRender Engine for renders
Similar to CPUs you can Compare GPUs too
Blender GPU Rendering FAQ
Optimizing Renders to clean up, and speed up renders Learn Here at CGCookie
Map Baking to reduce memory consumption Learn Here at CGCookie
Blender Artists: 2.7x Cycles Benchmarks
Blender Institute: New Cycles Benchmark