Cycles has a split OpenCL kernel since Blender release 2.75. It's an alternative approach to what is used on CPU (so called megakernel). The idea behind splitting the kernel is to have multiple smaller kernels which are not only simpler and faster to compile, but also have better performance. Initial split kernel patch was done by AMD. Further work was also funded by AMD.
The OpenCL Split Kernel now supports nearly all features. Only Correlated multi jitter is missing. Baking works, but uses the mega kernel. Volumetrics, SSS, Branched path tracing, HDR lightning and Denoising are fully supported.
With current drivers, all production files from the official cycles benchmark pack, including the huge one from Gooseberry, render now pretty fast.
Activate OpenCL rendering
- For AMD cards on Windows and Linux you just need to select your GPU under file -> user preferences -> system. The split kernel will be used by default to give the best performance.
- To use OpenCL on other platforms, launch Blender with --debug-value 256 (either on the command line or by adding it to your shortcut). It will add a section "debug" in the render options panel. There you can choose the kernel (split or mega) and the platform (set to "all" to enable OpenCL for Intel and NVidia).
Then choose GPU as the device to render in the render option panel.
To test the performance of your computer, you can download the official Cycles Benchmark files from here https://download.blender.org/demo/test/cycles_benchmark_20160228.zip. Those include production files for films, archviz (exterior and interior), comics, etc.
How to get the best performance
- Tile size of 64x64 up to 256x256 give the best performance.
Compare your results
- You can compare your configuration performance to some tested platforms at the Blender institute here: https://docs.google.com/spreadsheets/d/1YC0R06lLDn0pECDDridUTxEZDboAzzyjotZLQmOi3Og/edit#gid=0
- There are also different thread where rendering times are discussed on http://www.blenderartists.org but different file versions and Blender versions are mixed up most of the time, so it's better to compare to the google docs above.
Current issues and limitations
There are some known issues which are common to all kernels and platforms:
- Use latest buildbot to benefit from all speedups and new functionalities.
- Baking does not deliver correct results. It still uses the old mega kernel.
- SSS is still pretty slow. Speedups are being worked on.
- Correlated multi jitter pattern is not implemented yet.
- Compiling kernels take up to 60 sec on high end CPU. It leads devs to reduce the selective node compilation possibilities to reduce recompile time. At the moment this process is single thread. Making it multi-threaded would greatly reduce times.
Supported AMD Cards
- All cards with a GCN Architecture superior or equal to 2.0 are supported, like the R9 290/290X, W7100, W9100 and RX 480.
- GPU Cycles rendering on GCN 1.0 cards will not work with Blender versions made after March 2017. Blender itself will work, but will use CPU rendering for Cycles. If you have such a card, use Blender 2.78c downloadable here: http://download.blender.org/release/Blender2.78/ . To check which version of the GCN architecture your card has, see here: https://en.wikipedia.org/wiki/List_of_AMD_graphics_processing_units.
For now those limitations are considered a TODO rather than a bug.
AMD on OSX (outdated section, to be updated)
AMD team who's working on OSX drivers for El Capitan (OS X 10.11) did really nice work on improving the driver which is now capable of compiling and running OpenCL megakernel. The following features are supported:
- Hard and rough surface BSDF
- Transparent shadows
- Motion blur (camera, object, deformation)
Nothing special is needed for using OpenCL on OSX now, just go to the user preferences and enable OpenCL compute device.
The following features are to be investigated for inclusion into next Blender release:
- Correlated multi jitter noise pattern
- Volume scatter/absorption
Other features requires a bit bigger changes and will happen in one of the later releases.
Split kernel status
Split kernel on OSX has some issues with reporting back ray status to the CPU (and maybe some other ones) which makes it unusable at this platform.
This is to be investigated still, more details later.
OpenCL on other platforms
OpenCL works fine on NVIDIA cards, but performance is reasonably slower (up to 2x slowdown) compared to CUDA, so it doesn't really worth using OpenCL on NVIDIA cards at this moment.
Intel OpenCL works reasonably well. It's even possible to use OpenCL to combine GPU and CPU to render at the same time, for until some more proper solution is implemented.