OpenCL not detected using darktable 3.6 and Nvidia Geforce GTX 1050 Ti card

I have installed a Geforce 1050 TI card in my WINDOWS system (I had previously a 1650 Super which is better but I needed it for other tasks).
Its specs say that it is opencl 3.0 compatible.

I have upgraded to DT 3.6.

But now I cannot activate opencl in darktable, as there are some issue compiling base.cl

I have tried to reinstall nvidia drivers (uninstalled them and reinstall the latests one for this card) and reinstall DT 3.6 too.

I have deletede the INETCache\darktable directory were the compiled versions of opencl programs seem to reside.

But it seems that there is some kind of issue compiling basic.cl it seems there is an external function that is not found (__nv_fast_log2f).

May somebody help me with this problem?

this is the log when I run darktable-cltest from the cmd line (windows 10 21H1)

C:\Program Files\darktable\bin>darktable-cltest
0.075464 [opencl_init] opencl related configuration options:
0.081372 [opencl_init]
0.083394 [opencl_init] opencl: 1
0.086325 [opencl_init] opencl_scheduling_profile: ‘default’
0.091772 [opencl_init] opencl_library: ‘’
0.095170 [opencl_init] opencl_memory_requirement: 768
0.099526 [opencl_init] opencl_memory_headroom: 400
0.104102 [opencl_init] opencl_device_priority: ‘/!0,///!0,*’
0.109625 [opencl_init] opencl_mandatory_timeout: 200
0.114892 [opencl_init] opencl_size_roundup: 16
0.118902 [opencl_init] opencl_async_pixelpipe: 0
0.123881 [opencl_init] opencl_synch_cache: active module
0.128544 [opencl_init] opencl_number_event_handles: 25
0.133421 [opencl_init] opencl_micro_nap: 1000
0.137149 [opencl_init] opencl_use_pinned_memory: 0
0.141534 [opencl_init] opencl_use_cpu_devices: 0
0.146111 [opencl_init] opencl_avoid_atomics: 0
0.149951 [opencl_init]
0.153947 [opencl_init] found opencl runtime library ‘OpenCL.dll’
0.159546 [opencl_init] opencl library ‘OpenCL.dll’ found on your system and loaded
0.324208 [opencl_init] found 2 platforms
0.328729 [opencl_init] found 2 devices
0.332432 [opencl_init] device 0 NVIDIA GeForce GTX 1050 Ti' has sm_20 support. 0.339091 [opencl_init] device 0 NVIDIA GeForce GTX 1050 Ti’ supports image sizes of 16384 x 32768
0.347796 [opencl_init] device 0 NVIDIA GeForce GTX 1050 Ti' allows GPU memory allocations of up to 1024MB [opencl_init] device 0: NVIDIA GeForce GTX 1050 Ti GLOBAL_MEM_SIZE: 4096MB MAX_WORK_GROUP_SIZE: 1024 MAX_WORK_ITEM_DIMENSIONS: 3 MAX_WORK_ITEM_SIZES: [ 1024 1024 64 ] DRIVER_VERSION: 471.11 DEVICE_VERSION: OpenCL 3.0 CUDA 0.459666 [opencl_init] options for OpenCL compiler: -w -cl-fast-relaxed-math -DNVIDIA_SM_20=1 -DNVIDIA=1 -I"C:\Program Files\darktable\share\darktable\kernels" 0.474526 [opencl_init] compiling program demosaic_ppg.cl’ …
0.482824 [opencl_load_program] loaded cached binary program from file ‘C:\Users\ferna\AppData\Local\Microsoft\Windows\INetCache\darktable\cached_kernels_for_NVIDIAGeForceGTX1050Ti_47111\demosaic_ppg.cl.bin’ MD5: ‘1638526f3388d9ec24a72781f0c8eee9’
0.503779 [opencl_load_program] successfully loaded program from ‘C:\Program Files\darktable\share\darktable\kernels\demosaic_ppg.cl’ MD5: ‘1638526f3388d9ec24a72781f0c8eee9’
0.519646 [opencl_build_program] successfully built program
0.525175 [opencl_build_program] BUILD STATUS: 0
0.529600 BUILD LOG:
0.531342

0.532596 [opencl_init] compiling program `atrous.cl’ …
0.537770 [opencl_load_program] loaded cached binary program from file ‘C:\Users\ferna\AppData\Local\Microsoft\Windows\INetCache\darktable\cached_kernels_for_NVIDIAGeForceGTX1050Ti_47111\atrous.cl.bin’ MD5: ‘ff8767a64c66af1d0299155750560036’

0.559687 [opencl_load_program] successfully loaded program from ‘C:\Program Files\darktable\share\darktable\kernels\atrous.cl’ MD5: ‘ff8767a64c66af1d0299155750560036’
0.574941 [opencl_build_program] successfully built program
0.579779 [opencl_build_program] BUILD STATUS: 0
0.584564 BUILD LOG:
0.586333

0.587486 [opencl_init] compiling program basic.cl' .. 0.592331 [opencl_fopen_stat] could not open file C:\Users\ferna\AppData\Local\Microsoft\Windows\INetCache\darktable\cached_kernels_for_NVIDIAGeForceGTX1050Ti_47111\basic.cl.bin.7b2495982937640eebcc3989e0df1d3c’!
0.610326 [opencl_load_program] could not load cached binary program, trying to compile source
0.618259 [opencl_load_program] successfully loaded program from ‘C:\Program Files\darktable\share\darktable\kernels\basic.cl’ MD5: ‘7b2495982937640eebcc3989e0df1d3c’
1.590050 [opencl_build_program] could not build program: -9999
1.596010 [opencl_build_program] BUILD STATUS: -2
1.600142 BUILD LOG:
1.602129 ptxas fatal : Unresolved extern function ‘__nv_fast_log2f’

1.608143 [opencl_init] failed to compile program basic.cl'! 1.613254 [opencl_init] discarding device 1 Intel(R) UHD Graphics 630’ because the driver `OpenCL 3.0 NEO ’ is blacklisted.
1.624540 [opencl_init] no suitable devices found.
1.628848 [opencl_init] FINALLY: opencl is NOT AVAILABLE on this system.
1.635877 [opencl_init] initial status of opencl enabled flag is OFF.

press any key to exit

1 Like

It’s a problem with the nvidia driver. If you downgrade to an older version it should work

1 Like

Thank you, I will try.
Do you know which is last version that works?

I am using game ready drivers, by the way.

I believe v460 works

2 Likes

Do you know were I can find previous versions?
I am looking at nvidia web and it only displays the last version in the drivers section (471).
Thank you

At the bottom of the page there is a link to older drivers

I have 466 which seems to work for me…albeit I have an older card…I can link it for you if you can 't find one

1 Like

I have installed 462 studio version and it works now.
Thanks a lot.

It seems nvidia has broken something with the las update. Hope they will solve it in next version.

1 Like

For the last few months, the proprietary nvidia driver has been in lock step with particular kernel versions. They have very much NOT been mix-and-match.

On Arch Linux, I am currently using nvidia 465.31-14 and kernel 5.12.15. OpenCL is working, correctly.

1 Like

I am on windows.
Last 471 version is faulty too, 462 is OK (it seems 466 works too, but I will stuck to the previous studio version which is the stable branch, new 471.11 studio does not work).

for reference OpenCL compilation fails with `Unresolved extern function '__nv_fast_exp2f'` with drivers 470.42.01 - Linux - NVIDIA Developer Forums

2 Likes

It seems the problem is not nvidia drivers, but darktable code.

It uses inline functions extensively. Not all opencl implementations admit inline functions.

It assumes that an inline function is converted to not inline functions by the compiler (as it seems was the case in opencl 1.1) but opencl specifications doesn’t impose that.

So when the linker tries to find a function that was declare inline it finds none.

There are workarounds (static inline functions or declaring all functions not inline) and darktable team is evaluating the best solution.

Seems like recent nvidia implementation of opencl has changed the treatment of inline functions.

Meanwhile we have to stick to older drivers.

Fix “inline” usage in OpenCL kernels by drkoller · Pull Request #9359 · darktable-org/darktable (github.com)

2 Likes

Hi,

looks indeed as if the opencl issue is fixed moving forward.
What I don’t get is: how can I get the realted milestone [3.6.1] from git to compile here locally the version with the merged fix?

I can not find a related tag via “git tag”?
Sorry for the perhaps silly question … …

I think you can probably try checking out the darktable-3.6.x branch - it looks like the fix has been included there

May I expect a 3.6.0.2 or whatever version compiled for windows with the fix?

Compiling darktable for windows is too complex for me.

Okay,

went for 3.6.x branch and tried again with the nvidia 470.42.01 driver that was pushed with my manjaro update the other day. Still no luck, also with current master. Due to time constrains, until things stabilize I am now back on NVIDIA legacy driver v390 with which opencl works fine.

1 Like

462 and 465 is OK (at least in windows, I don’t know if linux drivers follow same numbering)

darktable 3.7.0~git375.8b5d719452
nvidia driver 470.42.01

still fails with

0.130036 [opencl_init] options for OpenCL compiler: -w -cl-fast-relaxed-math  -DNVIDIA_SM_20=1 -DNVIDIA=1 -I"/usr/share/darktable/kernels"
0.131327 [opencl_init] compiling program `demosaic_ppg.cl' ..
0.150757 [opencl_load_program] loaded cached binary program from file '${HOME}/.cache/darktable/cached_kernels_for_NVIDIAGeForceRTX2070SUPER_4704201/demosaic_ppg.cl.bin' MD5: 'c62a73d3d3efb5e1e1134928ea5e6797' 
0.150763 [opencl_load_program] successfully loaded program from '/usr/share/darktable/kernels/demosaic_ppg.cl' MD5: 'c62a73d3d3efb5e1e1134928ea5e6797'
0.152222 [opencl_build_program] successfully built program
0.152227 [opencl_build_program] BUILD STATUS: 0
0.152229 BUILD LOG:
0.152230 

0.152236 [opencl_init] compiling program `atrous.cl' ..
0.152472 [opencl_load_program] loaded cached binary program from file '${HOME}/.cache/darktable/cached_kernels_for_NVIDIAGeForceRTX2070SUPER_4704201/atrous.cl.bin' MD5: '2b89797761da0e16dc2e9f70f2be58f4' 
0.152475 [opencl_load_program] successfully loaded program from '/usr/share/darktable/kernels/atrous.cl' MD5: '2b89797761da0e16dc2e9f70f2be58f4'
0.152950 [opencl_build_program] successfully built program
0.152954 [opencl_build_program] BUILD STATUS: 0
0.152955 BUILD LOG:
0.152956 

0.152960 [opencl_init] compiling program `basic.cl' ..
0.153346 [opencl_fopen_stat] could not open file `${HOME}/.cache/darktable/cached_kernels_for_NVIDIAGeForceRTX2070SUPER_4704201/basic.cl.bin'!
0.153351 [opencl_load_program] could not load cached binary program, trying to compile source
0.153366 [opencl_load_program] successfully loaded program from '/usr/share/darktable/kernels/basic.cl' MD5: 'db6f7b44f6c98bbc443b8f678986eb0b'
0.269121 [opencl_build_program] could not build program: -9999
0.269133 [opencl_build_program] BUILD STATUS: -2
0.269135 BUILD LOG:
0.269136 ptxas fatal   : Unresolved extern function '__nv_fast_log2f'

0.269139 [opencl_init] failed to compile program `basic.cl'!
0.269150 [opencl_init] no suitable devices found.
0.269152 [opencl_init] FINALLY: opencl is NOT AVAILABLE on this system.
0.269153 [opencl_init] initial status of opencl enabled flag is OFF.

Gotta bugger nvidia about it…

they know about it. thread is linked above. i just wanted to clarify it for the people asking if all problems are fixed.

1 Like