From BlenderWiki
GPU Rendering
Introduction
GPU rendering makes it possible to use your graphics card for rendering, instead of the CPU. This can speed up rendering, because modern GPU's are quite designed to do a lot of number crunching. On the other hand, they also have some limitations for rendering complex scenes, due to more limited memory, and interactivity issue when using the same graphics card for display and rendering.
Cycles has two GPU rendering modes, through CUDA, which is the preferred method for NVidia graphics cards, and OpenCL, which is intended to support rendering on AMD/ATI graphics cards. The implementation of this is only in an experimental stage however, and rendering of an ambient occlusion like image is supported currently.
Configuration
To enable GPU rendering, go into the User Preferences, and under System tab, select the Compute Device(s) to use. Next, for each scene you can configure to use CPU or GPU rendering in the Render properties.
CUDA
NVidia CUDA is supported for GPU rendering with NVidia graphics cards. We support graphics cards starting from GTX 2xx (shader model 1.3), however it is recommended to use a GTX 4xx or GTX 5xx card (shader model 2.x), since only those are likely to give good speedup, earlier cards are often slower than just using the CPU. Shader model 1.3 cards also do not support some Cycles features, see below.
Cycles requires recent drivers to be installed, on all operating systems. Be sure to download the Blender version matching your operating system, that is, download 64 bit Blender for 64 bit operating systems.
List of CUDA cards with shader model
Older Cards
For Mac and Linux, it's possible to compile kernels at runtime, for cards that are not officially supported. GeForce 8xxx, 9xxx cards are not included in official release, but they might work by enabling experimental features.
The CUDA toolkit version 4.0 (64 bit version) or newer must be installed for this. Other versions might work, but are not supported. The first time rendering is done, the kernel must be compiled for your GPU architecture. Since Cycles is quite complex compared to a typical GPU kernel, compilation may take from 40 seconds to a few minutes, and may also up about 2GB of memory, depending on the graphics card model.
Missing Features with Shader Model 1.x
Due to limitations of the hardware, compiling a kernel with all features enabled is not possible for these cards. Currently missing are:
- Transparent Shadows
- Sample as Lamp for World textures
- Ambient Occlusion
- Render Passes
OpenCL
Implementation not finished yet, marked as experimental feature.
Rendering using OpenCL is not yet fully supported, but it is being worked on so we can support more graphics cards. Currently only simple clay rendering is supported, due to our full kernel not compiling with the AMD OpenCL compiler.
The first time rendering is done, the kernel must be compiled for your GPU architecture. Since Cycles is quite complex compared to a typical GPU kernel, compilation may take from 40 seconds to a few minutes, and may also up about 2GB of memory, depending on the graphics card model.
OpenCL version 1.1 or higher is required.
Frequently Asked Questions
Why is Blender unresponsive during rendering?
While a graphics card is rendering, it can not redraw the user interface, which makes interactive unresponsive. . We attempt to avoid this problem by giving back control over the GPU as often as possible, but a completely smooth interaction can't be guaranteed, especially on heavy scenes. This is a limitation of graphics card for which no true solution exists, though we might be able to improve this somewhat in the future.
If possible, it is best to install more than one GPU, using one for display and the other(s) for rendering.
Why does a scene that renders on the CPU not render on the GPU?
There maybe be multiple causes, but the most common is that there is not enough memory on your graphics card. We can currently only render scenes that fit in graphics card memory, and this is usually smaller than that of the CPU. Note that for example, 8k, 4k, 2k and 1k image textures take up respectively 256MB, 64MB, 16MB and 4MB of memory.
We do intend to add a system to support scenes bigger than GPU memory, but this will not be added soon.
Can I use multiple GPU's for rendering?
Yes, go to User Preferences > System > Compute Device Panel, and configure it to your desire.
Would multiple GPU's increase available memory?
No, each GPU can only access its own memory.
What renders faster, NVidia or AMD, CUDA or OpenCL?
Currently NVidia with CUDA is rendering faster. There is no fundamental reason why this should be so, we don't use any CUDA specific features, but the compiler appears to be more mature, and can better support big kernels. OpenCL support is still being worked on and has not been optimized as much, because we haven't had the full kernel working yet.
Error Messages
Unsupported GNU version! gcc 4.5 and up are not supported!
On Linux, depending on your GCC version you might get this error.
If so, delete the following line in /usr/local/cuda/include/host_config.h
#error -- unsupported GNU version! gcc 4.5 and up are not supported!
CUDA Error: Invalid kernel image
If you get this error on Windows 64 bit, be sure to use the 64 bit build of Blender, not the 32 bit version.
CUDA Error: Out of memory
This usually means there is not enough memory to store the scene on the GPU. We can currently only render scenes that fit in graphics card memory, and this is usually smaller than that of the CPU. See above for more details.
The NVIDIA OpenGL driver lost connection with the display driver
... due to exceeding the Windows Time-Out limit and is unable to continue.
If a GPU is used for both display and rendering, Windows has a limit on the time the GPU can do render computations. If you have a particularly heavy scene, Cycles can take up too much GPU time. Reducing Tile Size in the Performance panel may alleviate the issue, but the only real solution is to use separate graphics cards for display and rendering.