Windows 10 running Darktable not using PC at full capacity

Hi, my laptop has a dedicated GC in addition to the integrated one. I have the following, with GC #1 beeing significantly faster than #0.

3.331822 [opencl_init] kernel loading time: 1.0691
3.333816 [opencl_init] OpenCL successfully initialized.
3.336808 [opencl_init] here are the internal numbers and names of OpenCL devices available to darktable:
3.342791 [opencl_init]          0       'Intel(R) UHD Graphics 620'
3.345784 [opencl_init]          1       'GeForce MX150'
3.347778 [opencl_init] FINALLY: opencl is AVAILABLE on this system.

However, Darktable does only use my Intel GC. I’ve tried to edit C:\Users\MyName\AppData\Local\darktable\darktablerc and force GC #1 with the Following line:

opencl_device_priority=1/1/1/1

as described in the documentation (https://www.darktable.org/usermanual/en/darktable_and_opencl_multiple_devices.html) but it doesn’t work. I’ve also tried with:

opencl_device_priority=!0,*/!0,*/!0,*/!0,*

In addition, the Nvidia setting pannel is set with the Nvidia GPU as the preferred GPU.

Of course, I think that OpenCL is properly installed because other SW (like Capture One Pro for instance) use my Nividia GPU.

I don’t know what to do. Any help ?

maybe the MX150 lacks the opencl image extension

I don’t beleive so, because running darktable-cltest.exe probes everything right, with all kernels beeing loaded sucessfully.

Is it an Optimus GPU? If so, can you try to configure Darktable to run on the dedicated card?

2 Likes

My guess would be this as well.

In the nvidia settings you should be able to force a certain application to use the nvidia gpu.

The MX150 is advertised as an Optimus card (whatever it means). With the Nvidia setting pannel, I had the Nvidia GPU set as default for every application. I’ve now tried Something else (sorry for the french thing): global parameters as “automatic” and darktable forced as Nvidia preferred.


And still …

My issue is perhaps a bit deeper since I realize that Capture One Pro does neither use my Nvidia. I’ve performed a clean install of the drivers, and it appears that OpenCl seems to be installed but I can’t make it work.

My Nvidia OpenCL version is 1.2, while the version of Intel’s is 2.1. Could that be the reason ?

optimus means the card might need to be switched on first. like switching from using the intel GPU to Nvidia.

By setting “Multiple GPUs” in the UI, it seems to use the Nvidia GPU. But just a little bit : never more than 5-7% That beeing said, CPU usage does never go beyond 40% (and integrated GPU never beyond 40% as well) while rendering is however currently computed (like after zooming).

How can I make Darktable use all the resources on my Windows 10 PC ? As it, it does use less than 25% of it and it sluggish, as a consequence.

EDIT : after plugin the AC power, ressource usage grows. So it is perhaps a power management issue, related to the OS. I’ll check that.

I’ve made a short video showing how the CPU and GPUs are used while performing basic actions. I also show parameters.

I’d really like to use DT (and switch to Linux if I’m fine on the mid term) but I have to check before if usage is comfortable on my laptop. As it, DT does only use a part of the processing power, so I cannot evaluate. There are many occasions when “working” is showed on the bottom, but only part of the processors is used.

By contrast, on the same PC with the same settings, Capture One Pro better balances load on CPU/GPU#0/GPU#1, and is much more fluid in useage …

Did you manage to resolve this issue in the end?

I had a similar problem with Intel 620 vs Nvidia MX940. I changed the opencl_device_priority to 1,!0/!0,!1/1,!0/1,!0 as found here:

https://darktable-users.narkive.com/hW9hrKgp/gpu-select-open-cl-dt-windows

I also changed the Nvidia settings like you did, and added Darktable in Settings -> System -> Display -> Graphics settings as High Performance by default.

But I seem to recall that it used to use the Nvidia GPU before and being a little faster, that’s why I got looking into it in the first place.

It might be due to a recent windows or intel driver update, or something like that…

Actually, the issue was mainly that the HW monitor included in W10, which is not accurate. By using a dedicated and specialized monitor, the values were very different and showed a much better utilization of the graphic card. That beeing said, a laptop Nvidia MX150 is not enough to run Darktable smoothly, I would recommend something significantly faster. Don’t expect major improvements with your 940MX, which is roughly in the same league.

I know, but it was being utilized before, and it is now again. It’s still noticeably faster than using the integrated intel one. Good enough for a small laptop. :slight_smile:

I don’t know about the MX150, but it isn’t exactly specified as to what your CPU/iGPU is.

I can tell you that, on an i5-7200U (midrange mobile Kaby Lake), which I THINK is designated as “620”:
OpenCL is roughly 4x faster than CPU for a compute-intensive pipeline with Intel’s NEO drivers
Darktable blacklists this particular combination for OpenCL usage due to a bugreport that (eventually) traced back to improper caching of compiled OCL kernels by Darktable
The above are based on my experiences on Linux (Ubuntu 19.04 on i5-7200U). There have been implications that the Windows versions of Intel’s “NEO” driver are less mature/stable.

I plan on submitting a pull request later this week to un-blacklist the NEO drivers at least on non-Windows machines.

1 Like

Hi’ @hlev and others

Inspired by this thread I have had a closer look at my laptop.

I have a HP laptop running windows 10 and Darktable 2.6.2 equipped with 2 GPUs: Intel HD Graphics Family and NVIDIA GeForce GTX 850M. NVIDIA is the fastest.

Using the default setup - opencl_device_priority= star/!0,star/star/star - Darktable primarily use Intel except for export in which case NVIDIA is used exclusively. I type “star” instead of “*” to make sure the text is correct.

When I start Darktable with “darktable –d opencl” no screen output is visible, the output seems to be overwritten at once. I assume that Intel is no. 0 and NVIDIA is no. 1. I can’t figure out how to make the output visible. Can anyone help?

Inspired by the example in the 2.4 manual I have tried the following setting: !0,star
/!1,star/1,star/1,star which results in more use of NVIDIA, but Intel is still the preferred GPU.

I have tested many different settings but have not been able to make Darktable use NVIDIA primarily. In some cases Darktable just give up and use Intel exclusively. This is also the case when I use the setup: 1,!0/!0,!1/1,!0/1,!0 - NVIDIA is not used!

I seems to me that Darktable is not working as described in the manual in respect to device priority.

When you say “output” - do you mean DT is not displaying on the screen? Or are you not seeing debug output? That’s strange, unless you’re directly running darktable instead of first running “cmd” and then running darktable from within a command prompt.

Not sure… I almost never fire up my Windows partition and don’t run DT on it. I guess on Windows Intel must have some sort of closed-source compute runtime other than Beignet and NEO, as Beignet remains blacklisted on all platforms (I’m not going to try and have this changed, anyone who is running hardware not supported by NEO is likely running hardware that will be simply problematic for OpenCL) and NEO remains blacklisted under Windows (someone else will have to take more data to show that NEO on Windows is OK - given that NEO is only formally released for Ubuntu-based distributions, Windows + NEO is a huge unknown. It may turn out that it too was unfairly blacklisted due to darktable’s kernel caching issues, but I was only comfortable removing the blacklist for platforms I personally tested.)

Hi’ @Entropy512

Thank you for your response. I execute Darktable using a BAT-file with start “darktable……”.

Using the command prompt to start darktable:
C:“Program Files”\darktable\bin\darktable.exe -d opencl
results in no output on the display or maybe it is overwritten at once? But Darktable starts.

Better open cmd.exe and start darktable from there.

Same result. No output visible…