Darktable and beignet opencl

Darktable blacklists the beignet opencl driver (which supports the integrated GPU on Intel processors), supposedly because it doesn’t give any speed improvments. Having problems setting up OpenCL to properly work on my dedicated gpu, I decide to benchmark the beignet nonetheless.

I recompiled the latest darktable, removing the beignet from the black list in opencl_drivers_blacklist.h and benchmarked by processing a raw from a random PlayRaw post.

I benchmarked 9.4sec for the beignet opencl and 11.2sec with opencl disabled (average of three runs each). This is only one benchmark, but seems to me that beignet should be disabled, as it does provide speed improvements.

Are there any disadvantages to enabling OpenCL on beignet?

1 Like

The past concensus seemed to be that beignet wasn’t stable on all platforms, which makes having it enabled by default problematic. There are several threads here already about the subject, and if it works for you its easy to patch back in.

You can use intel neo drivers instead to use the integrated GPU on Intel processors :wink:

Beignet segfaulted in several case, because of this it was blacklisted. Use the Intel Neo driver …

Thanks for the pointer for Intel Neo! I got it installed, and on my benchmark photo it averages 7.2, considerable improvment over my beignet benchmark.
I also got my dedicated gpu (radeon rx 550) working using the amdgpu-pro opencl implementation (rocm won’t run on my machine due to lack of PCIe atomics). I get worse performance with it than with the integrated intel GPU. Some more benchmarking shows that the Radeon GPU handles less events, but those it does handle it performs faster. If I choose the Radeion GPU device for opencl, it does the denoise-profiled blending in CPU instead of GPU.

Is there a way to tell darktable to use the Radeon GPU and fallback to the Intel one? I tried playing with the opencl_device_priority but I can only get it to use a single GPU at a time.

I’m using ROCm which works just fine. Looking forward to vkdt :slight_smile: