Radeon RX460 and Cycles doesn't work

Hi,

the Raytraced/Cycles mode is not really working with my new Radeon RX460. The Core i5-6500 works finde. When I switch the device with “RhinoCycles_SelectDevice” to the RX460 the raytraced viewport seems corrupted. Only when I move around in the viewport, it looks like it’s working. Here are screenshots, first one when I do nothing, looks wrong:

Second one is while rotating the viewport with the mouse. btw doing that and taking a screenshot at the same time required both hands plus my nose pressing “P” :laughing:

I have the latest drivers:

I know you don’t recommend AMD cards. But I like the drivers and never had any issues with rhino. Rendering is not really important for me, I was just curious. I chose the RX460 because I wanted a modern card with the least noise possible. Got this one - no fans. It’s also the same GPU which is in the new Macbook Pro 15" (late 2016) - so I thought it can’t be that wrong.

Any Idea how I can make it work with my GPU or will I just have to wait for later versions to fix this?

Hi @hitenter,

I have a RX 480 in my machine. I have this problem as well. It is on my list to fix eventually to work with the Split kernel, but until that is done you can make Raytraced/Cycles use the so-called mega kernel. You’ll have to add an environment variable before starting Rhino WIP:

RMB on windows start menu > System > Advanced system settings > Environment Variables… > New…

Add the variable CYCLES_OPENCL_MEGA_KERNEL_TEST and set its value to 1.

edit: Note that you’ll have to give the first attempt to switch to Raytraced time to actually compile the mega kernel. This process can take up to 10 minutes.

Thank you so much Nathan,
that worked perfectly fine for me. The time to compile was only about ten seconds with my machine.

new device numbers now

I’m glad it worked :slight_smile:

Note that custom materials not necessarily behave correctly, so stick for now to the basic Rhino materials (Glass, Gem, Metal, etc.)

If you want to texture i.e. glass or metal first create a Rhino glass or metal material, change settings as much as you can to get the materials close to what you want, convert it to the Custom type, then add a texture to the diffuse channel. Probably better to not play too much with other settings until I’m done with a better custom rhino material. But this hopefully gives you already a lot to work with.

/Nathan

@nathanletwory

Great, thank you. I think the development of Rhino is really heading into the right direction.

EDIT:
I installed the Cycles for Rhino standalone renderer in order to compare the render speed of my CPU and GPU. I stopped the rendering after 40 samples.

My GPU, which is device 2
(Baffin (OpenCL), Id 2 Num 1 Name OPENCL_AMD Accelerated Parallel Processing_Baffin_01:00.0 DisplayDevice True AdvancedShading True PackImages True)
took about 1m 50s to finish those 40 samples.

My CPU, chose device 1
(Intel Core i5-6500 CPU @ 3.20GHz (OpenCL), Id 1 Num 0 Name OPENCL_Intel® OpenCL_Intel® Core™ i5-6500 CPU @ 3.20GHz_ID_0 DisplayDevice True AdvancedShading True PackImages True)
took only about 0m 55s to finish the 40 samples. (2 CPU render threads used)

So the i5-6500 aka CPU is much faster than the RX460 aka Baffin aka GPU. Isn’t even a low-end GPU like this one supposed to be faster like an i5?

I guess the GPU architecture isn’t utilized well at this point?

1 Like

Correct. OpenCL rendering isn’t up to par with CUDA rendering just yet, but it is being worked. The mega kernel isn’t the best solution for AMD cards, but for your (and my) card currently it is the only option to get proper render results out of Raytraced / Cycles for Rhino - the split kernel is the preferred solution, but I need to look into why it doesn’t work properly. As you can see from i.e. viewport rotation the very first step in progressive refine goes fine, after that there seems to be problems.

From the Cycles Roadmap for 2017 you’ll see that the Split Kernel is listed to be improved upon and, ultimately, it should give possibility for new ways of rendering faster.

Now, that is the OpenCL not being just there yet. There is still another issue you’re running into, and that is that your display device is also your rendering device. That will result in slower render times from the GPU as well - and you probably may have noticed some lag in the GUI while rendering on the GPU (if not, then lucky you :wink: ).

The most optimal set-up will be to render on GPUs that are not your display drivers.

edit: Note that you don’t have to install the Cycles for Rhino plug-in to compare render times. Just select the render device you want to time and switch the view you want to test with to Raytraced. Write down the timings once the rendering has finished.

/Nathan

yes, the the GUI/viewport gets really laggy when I use the GPU as cycles device - quite annoying. is that the case with nvidia GPUs too? with CPUs it’s possible to assign a specific number of threads to cycles in order to keep the system responsive. I guess GPUs should should be able to behave similar? like assigning a limited amount of shaders/CUDA-cores to the rendering process in order to keep the GUI/viewport responsive?

after reading a bit about CUDA vs OpenCL I get the impression that nividia’s CUDA may not be the politically correct way, since it’s proprietary. but more important is that with CUDA they gave developers a tool which actually made utilizing GPUs for stuff other than games possible in the first place. so if they hadn’t made that move, we wouldn’t be talking about GPUs here at all.
anyway I hope that the work on the split kernel advances and the OpenCL implementation catches up with CUDA. it’s just nice to have a choice when buying stuff.

hopefully you keep us updated about important advancements in this regard.

Yes. @DavidEranen did some groundwork that may help alleviate this problem. I’ll probably notify the forum when I have managed to do that.

Most certainly. My personal machine has a R9 270x and an RX480. I’ll keep this on my watch list :slight_smile:

ok, interesting. so if someone would want to get the most out of a GPU+cycles then he would probably go with two cards? a simple and inexpensive GTX1050-2GB (or maybe GTX1050Ti-4GB if dealing with larger files) for the viewport, combined with something like a GTX1080 as render device.

In my dev machine I have a GTX 760 to drive the display and a GTX 1060 with 5GB for rendering.

@nathanletwory
couldn’t wait for openCL to catch up with CUDA.
so I got a Zotac GTX1060 6GB AMP.

question:
probably I should delete the mega-kernel variable from my environment settings before I switch to the GTX?

No need to remove, it is OpenCL specific. If you render just with CUDA (so not NVidia OpenCL), you’ll get that :slight_smile:

/Nathan

thanks, works.

I can say that cycles renders A LOT faster on the GTX1060 compared to the RX460. of course the GTX1060 has more than double the compute power compared to the RX460.

hopefully openCL catches up to CUDA in the not so distant future.
I’ll throw the RX460 into my PC at home in order to compare over time.

Blender has some dedicated developers improving OpenCL rendering. I think split kernel improvements will be merged soon, along with automatic tile size determining. On top of that AFAIK AMD is actively working with Blender Cycles developers to improve rendering. So there is hope :slight_smile: