opencl_device_priority does not allow special characters in device name

Hi,

also added an issue on github but thought it might be worthwile to also ask here.

Arch Linux 5.6.15-arch1-1
community/darktable 2:3.0.2-5

1.767031 [opencl_init]          0       'GeForce RTX 2060'
1.767033 [opencl_init]          1       'Intel(R) Gen9 HD Graphics NEO'
1.767036 [opencl_init] FINALLY: opencl is AVAILABLE on this system.
1.767039 [opencl_init] initial status of opencl enabled flag is ON.

In order to finetune which card to use for which pixelpipe I followed these instructions:
https://www.darktable.org/usermanual/en/darktable_and_opencl_multiple_devices.html

It is recommended to use device names instead of device numbers. Therefore my setting would look like this:

opencl_device_priority=!Intel(R) Gen9 HD Graphics NEO,*/!GeForce RTX 2060,*/GeForce RTX 2060,*/GeForce RTX 2060,*

However this does not seem to work. It looks like the brackets within the name of the Intel device break the logic. To test this, I have changed the logic for the export, trying to force the Intel to render the Export pixelpipe explicitely excluding the Nvidia:

opencl_device_priority=!Intel(R) Gen9 HD Graphics NEO,*/!GeForce RTX 2060,*/Intel(R) Gen9 HD Graphics NEO,!GeForce RTX 2060/GeForce RTX 2060,*
For completion these are my opencl related settings in darktablerc:

opencl=TRUE
opencl_async_pixelpipe=false
opencl_avoid_atomics=false
opencl_checksum=1235645779
opencl_device_priority=!1,0/!0,1/0,1/0,1 --> (this one is working obviously)
opencl_disable_drivers_blacklist=false
opencl_library=
opencl_mandatory_timeout=200
opencl_memory_headroom=300
opencl_memory_requirement=768
opencl_micro_nap=1000
opencl_number_event_handles=25
opencl_scheduling_profile=default
opencl_size_roundup=16
opencl_synch_cache=active module
opencl_use_cpu_devices=false
opencl_use_pinned_memory=false

Also: It looks like the opencl_device_priority is only taken into account as long as opencl_scheduling_profile is set to default.

Regards,

Stephan

1 Like

Did you try escaping them, \\(R\\)

good point - actually tried this but with only one backslash… will give it a try later with two.

Edit: tried →

opencl_device_priority=*/!0,*/Intel\\(R\\) Gen9 HD Graphics NEO,*/*

Did NOT work - unfortunately :frowning:

regards,

stephan

1 Like

For whatever reason, there have been updates to Arch LInux and the device numbers have been mixed up. Now the opencl_device_priority is no longer correct in darktablerc.

I also tried to use the device naming in darktablerc but it does not work with escaping characters.

Regards,
Marcus