Cycles improvements on AMD with public driver release

Good-ish news for AMD users!
I have successfully compiled the cycles kernel with shading using the new AMD Catalyst 12.4 OpenCL 1.2 developer beta

It took 19 minutes and at its height consumed more than 6.5GB of RAM.
Here’s my system configuration:
AMD Phenom [email protected]
12GB RAM
Radeon 5850
Windows 7x64
using Blender 2.62 64-bit official release

Here’s the steps I took:

  1. In 2.62\scripts\addons\cycles\kernel\kernel_types.h uncomment KERNEL_SHADING
  2. Start Blender and in Preferences pick your OpenCL device (Cypress in my case)
  3. Under Render Settings, change “Feature Set” to “Experimental” and then pick “GPU compute”
  4. Make sure the console is visible, so you can see any messages regarding compilation
  5. Start a render, the kernel should now start to compile
  6. Wait.
  7. After 576.45s seconds I was notified in the console window that the Kernel compilation had finished. Blender now appeared frozen, but ram usage went up and down again… It’s not done, keep going at this point!
  8. After 19 minutes total, the compilation finished and the render started! A glorious red cube, in my case. Yay!
    If you want to try this yourself, you must use a 64-bit build. Also, if you don’t have 6.5GB of physical RAM free your system will likely become very slow due to paging. Good Luck!

I haven’t done any further testing yet, apart from that red cube. There is also KERNEL_ADV_SHADING that I have left commented for now. I’ll try that next I guess, so stay tuned for updates.

UPDATE 1: Uncommenting KERNEL_ADV_SHADING leads to OpenCL compiler complaining about syntactical errors right away. I don’t even know what the difference between shading and advanced shading is, maybe someone in the know can elaborate.

UPDATE 2: Tried the BMW benchmark: 15 minutes 40 seconds. Looks like the intermediate step after compilation but before render is performed before every render, which by itself took 10 minutes and 13 seconds - which leaves us with 5 minutes 27 seconds for the render itself - not too impressive…

UPDATE 3: The aforementioned 10-minute wait appears to only happen for static renders, it is not happening during viewport renders. Procedural Textures are confirmed to be all working, however image textures do not work. Quite a dealbreaker here, so I’m changing the title of the thread.

Nice, thanks for report. As a side note, i am very exciting Tom Stellar advance with free OpenCL solution on Linux, http://tstellar.blogspot.com/. Some one mention it even faster then Fermi card on selected chemical research kernel, maybe later that compiler will work with huge Cycles kernel as well.

That’s great news Zalamander!

Have you tested procedural/Image Textures too? IIRC they were not working some time ago.

Edit: Advanced shading enables some better shader code, which makes mix/add and glass shaders render faster. It also gives support to RenderLayer/Passes and World Importance Sampling etc.

Unfortunately, that step after the compilation of the kernel but before rendering that takes ten minutes seems to be performed before every render. (Tried the BMW benchmark)
Needs further investigation, I guess.

Have you tested procedural/Image Textures too? IIRC they were not working some time ago.

I’ll do that next.

I’ve tried that change on the latest official release of blender on 11.12 drivers…im not gonna update driver till ATI drivers officially work in blender(due previous bad experience with ATI drivers…) …despite that this is finnaly good news, but sadly this may mean that good stuff are being produced for ccc 12.4 drivers…:frowning:

Nice job, Zal.

My main comp is over three years old now and not adding more than the 6 it has; hoping to upgrade soon, so such tests I’ll leave for people that have a clue and the system spec /nod

Interesting developments. I just read some of the opencl test results for the new nvidia 680gtx card, and it seems nvidia decided to limit gpu computing even more: the 7970 is almost four(!) times faster than the 680 in the Luxmark v2 test.

And rather worryingly, much slower than the previous 580gtx generation?! Even with beta drivers it should be at least on par. Arexma is proven right once again.

http://www.ozone3d.net/public/jegx/201203/geforce-gtx-680-opencl-luxmark.jpg

And: http://www.anandtech.com/show/5699/nvidia-geforce-gtx-680-review/17

This is a good chance for AMD in the market - now if only their opencl drivers and Blender will work together well… Nvidia’s policy on gpu limits for their consumer cards is getting out of hand now, I feel - which only proves that CUDA never was the best horse to bet on.

Should AMD get their act finally together soon with the newer Opencl drivers, and the good opengl performance in Blender, nvidia consumer cards are looking less and less attractive as an option for 3d production - only useful if you happen to play games only in DX11 in Windows.

So, what next, nvidia? Why not get rid of opengl support in your 7xx generation?

I tested out the OpenCL drivers last night, it took about 10-20 minutes to compile each time, which included Advanced Shading (no syntax errors here)

Compiled file, however i was getting green shadows everywhere, and glossy reflections didnt work correctly… thats all i tested.

All the benchmarks show strongly varying compute performance, from being twice as fast as the GTX580 to being slower. It’s a new architecture and it has already happened before that Luxmark/SLG performance was more than doubled through a driver update.

Arexma is proven right once again.

Let’s not jump to conclusions here. The other benchmarks do not indicate an artificial limiting except the (already established) DP cut.

Should AMD get their act finally together soon…
Honestly, I don’t see it happening with Cycles. It’s probably just Cycles’ design, but even if the compiler eventually manages to do everything, it probably will be much slower (as the BMW benchmark indicates).
Apart from that viewport performance in blender isn’t really impacted so long as you don’t use double-sided lighting, so I don’t see a problem there.

I tested out the OpenCL drivers last night, it took about 10-20 minutes to compile each time, which included Advanced Shading (no syntax errors here)
Compiled file, however i was getting green shadows everywhere, and glossy reflections didnt work correctly… thats all i tested.
What did you use to test this? In the report above I used 2.62 release, but recent SVN builds give funky colors for me, too.

I tested out a nightly build… i believe it was bat3a’s… ill try the official build tonight…

double sided lighting? how do we turn this off?

So do I get that correct that KERNEL_SHADING compiles fine for all?
If so, I don’t see any reason not to enable that per default in svn and the upcoming 2.63.

double sided lighting? how do we turn this off?
Object Data->Normals
You need to be in Blender Internal mode to access this setting, but I believe it also affects Cycles viewport drawing.

Recent SVN revisions give fancy weird adventure colors for KERNEL_SHADING

maybe there could be an initiative to have all new renderer for opencl only, the back bone for this renderer could be cycles but this orientated around opencl thus freeing up time for brecht to work on cuda cycyles
A kinda speciallised spinof

All this blender development makes me wish that i was a programmer

maybe there could be an initiative to have all new renderer for opencl only, the back bone for this renderer could be cycles but this orientated around opencl thus freeing up time for brecht to work on cuda cycyles

It would be interesting to find out if compiling the shader graph instead of running an interpreter (which the opencl compiler currently chokes at) could be reliable after all. However I doubt a volunteer for that will form out of thin air - how should such an initiative look like in practice?

i take that initiative back because like i said before (not a programmer) there seems to be a workaround the 10 12 minute compiling of the kernel…

another approach would be to have compiling the kernel multi-threaded full apologise if this is already the case

Interesting. Looks like cycles and opencl are getting closer to a full support (well…it’s a long road).
Can’t wait to buy a new powerful vga to be used with cycles.

I’m considering to buy a raedon 7850(opencl performance slightly lower of an 7870).
the cool thing is that it has the same price of the nvidia gtx 560 ti but equivalent of an nvidia gtx 570

@Zalamander
I think both CUDA and OpenCL use their JIT trickery to boost performance like Java and other, recompiling on-fly parts of code that take many iterations.

Has anyone tride the 12.3 ccc drivers…

I googled 12.4 beta and then installed on other comp; didn’t crash the system and seemed to work fine. I got it running under gpu without shaders; will look at seeing if can get shaders working on the build I downloaded soon as can.