How to use Opencl in openSUSE tumbleweed?

Hi @Claes,
I download and execute “NVIDIA-Linux-x86_64-418.88.run”. Not thing happen…

Thanks for all your helps. I don’t want to spend too much time on setup system. I decide go back to Linux Mint. Thanks a lot!

1 Like

Do you always run away if you hit a bump?

1 Like

Hi @asn
I love KDE, rolling release and cute green lizard logo of openSUSE.
But I already spent to much time on it. Is it worth? I don’t know.
I just a normal user, just want my PC runing satble and do that I want to do.
If you have any new way to setup opencl on openSUSE, I’ll be glad to try it.
Thanks for your comments.

I’m using ROCm, which provides a zypper repo for SUSE in the meantime. However @darix tried to help you but you ran away before he got to help you.

Hi @asn,

did you follow the whole procedure under New features and enhancements in ROCm 2.10 for SLES15 including groupchange of the user, dkms and modprobe or did you just added the mentioned repo and installed the four rpms

hsa-rocr-dev
hsakmt-roct
rocm-opencl
rocm-opencl-devel

manually without further configuration?

To install ROCm with OpenCL and OpenCL Image support, you have do the following five steps:

  1. Add the 2.10.0 repo to your package manager (3.0 doesn’t work). To do that for zypper on openSUSE create the following file:

    /etc/zypp/repos.d/rocm.repo

    [rocm]
    name=Radeon Open Compute
    enabled=1
    autorefresh=0
    baseurl=http://repo.radeon.com/rocm/zyp/2.10.0/
    type=rpm-md
    
  2. Install the required packages using:

    zypper in rocm-opencl hsa-ext-rocr-dev
    
  3. Create /etc/ld.so.conf.d/rocm-opencl.conf with the following content:

    /opt/rocm/hsa/lib/
    /opt/rocm/lib
    /opt/rocm/lib64
    /opt/rocm/opencl/lib/x86_64
    
  4. To load the new paths into the linker run: ldconfig

  5. And last but not least create an OpenCL ICD file using:

    echo libamdocl64.so > /etc/OpenCL/vendors/amdocl64.icd
    

I’m on Kernel 5.4.14.

2 Likes

Thank you @asn.

If I understand properly, that just implements the opencl part and therefore keeps the system interdependent from snapshot (Kernel/driver) updates.
The next days I might find some time to install Tumbleweed and Leap on an external drive to try it out on a “real” system. Still undecided whether I wanna “roll” or not

@asn Thanks for your comments. Before I asked this question here, I tried many days and installed all I can find (about opencl) on “https://software.opensuse.org/” (even I don’t waht it is…).
If I let you and @darix feel I run away, I apology.

Actually, I still keep openSUSE tumbleweed on my laptop not switch to Linuxmint and try to find how to use opencl (I really like this OS) and using darktable on another PC with Win10 temporarily.
If you and @darix have any new idea of fix opencl issue, pleae let me know. :slightly_smiling_face:

Hi @darix, I used Nvidia driver ver.390 (G04)on Ubuntu before, it’s not working too.
Until I install “ocl-icd-opencl-dev”, then it works.

#apt install ocl-icd-opencl-dev

Maybe my Quadro k2100m also need this library on openSUSE.
Do you install any opencl library for your P600? or just install driver?

Hi All~ good news!
After reinstall the driver, opencl-headers and libopencl1 it works!! Thanks you all.

But there are a very weird problem.
Opencl worked only if I run darktable-cltest first.
Once I reboot my system, it wouldn’t work untill I run “darktable-cltest” again. Any ideas?

#rpmqpack| grep -iE ‘(opencl|ocl|nvidia)’ | grep -Eiv ‘(geoclue|autoclean)’
kernel-firmware-nvidia
libOpenCL1
nvidia-computeG05
nvidia-gfxG05-kmp-default
nvidia-glG05
opencl-headers
x11-video-nvidiaG05

#darktable-cltest
WARNING: either your user id or the effective user id are 0. are you running darktable as root?
0.018800 [opencl_init] opencl related configuration options:
0.018807 [opencl_init]
0.018809 [opencl_init] opencl: 1
0.018821 [opencl_init] opencl_scheduling_profile: ‘default’
0.018822 [opencl_init] opencl_library: ‘’
0.018824 [opencl_init] opencl_memory_requirement: 768
0.018826 [opencl_init] opencl_memory_headroom: 400
0.018829 [opencl_init] opencl_device_priority: ‘/!0,///!0,*’
0.018833 [opencl_init] opencl_mandatory_timeout: 200
0.018846 [opencl_init] opencl_size_roundup: 16
0.018849 [opencl_init] opencl_async_pixelpipe: 0
0.018851 [opencl_init] opencl_synch_cache: active module
0.018854 [opencl_init] opencl_number_event_handles: 25
0.018856 [opencl_init] opencl_micro_nap: 1000
0.018859 [opencl_init] opencl_use_pinned_memory: 0
0.018861 [opencl_init] opencl_use_cpu_devices: 0
0.018863 [opencl_init] opencl_avoid_atomics: 0
0.018865 [opencl_init]
0.018936 [opencl_init] could not find opencl runtime library ‘libOpenCL’
0.018986 [opencl_init] could not find opencl runtime library ‘libOpenCL.so’
0.019097 [opencl_init] found opencl runtime library ‘libOpenCL.so.1’
0.019126 [opencl_init] opencl library ‘libOpenCL.so.1’ found on your system and loaded
0.155082 [opencl_init] found 1 platform
0.155118 [opencl_init] found 1 device
0.155414 [opencl_init] device 0 Quadro K2100M' has sm_20 support. 0.155577 [opencl_init] device 0 Quadro K2100M’ supports image sizes of 16384 x 16384
0.155584 [opencl_init] device 0 `Quadro K2100M’ allows GPU memory allocations of up to 498MB
[opencl_init] device 0: Quadro K2100M
GLOBAL_MEM_SIZE: 1995MB
MAX_WORK_GROUP_SIZE: 1024
MAX_WORK_ITEM_DIMENSIONS: 3
MAX_WORK_ITEM_SIZES: [ 1024 1024 64 ]
DRIVER_VERSION: 440.44
DEVICE_VERSION: OpenCL 1.2 CUDA

Take care of the warning:

/Claes

Hi @Claes
Oh~ I use “sudo darktable-cltest”…
Maybe all the problems are about authority?

darktable -d opencl

Hi @asn
Here is the result if I don’t run "sudo darktable-cltest” first. It’s not working.

kelvin@localhost:~> darktable -d opencl
Invalid MIT-MAGIC-COOKIE-1 keyInvalid MIT-MAGIC-COOKIE-1 key0.140339 [opencl_init] opencl related configuration options:
0.140349 [opencl_init]
0.140351 [opencl_init] opencl: 1
0.140354 [opencl_init] opencl_scheduling_profile: ‘default’
0.140356 [opencl_init] opencl_library: ‘’
0.140358 [opencl_init] opencl_memory_requirement: 768
0.140361 [opencl_init] opencl_memory_headroom: 400
0.140363 [opencl_init] opencl_device_priority: ‘/!0,///!0,*’
0.140366 [opencl_init] opencl_mandatory_timeout: 200
0.140370 [opencl_init] opencl_size_roundup: 16
0.140373 [opencl_init] opencl_async_pixelpipe: 0
0.140376 [opencl_init] opencl_synch_cache: active module
0.140379 [opencl_init] opencl_number_event_handles: 25
0.140382 [opencl_init] opencl_micro_nap: 1000
0.140384 [opencl_init] opencl_use_pinned_memory: 0
0.140387 [opencl_init] opencl_use_cpu_devices: 0
0.140389 [opencl_init] opencl_avoid_atomics: 0
0.140392 [opencl_init]
0.140515 [opencl_init] could not find opencl runtime library ‘libOpenCL’
0.140559 [opencl_init] could not find opencl runtime library ‘libOpenCL.so’
0.141801 [opencl_init] found opencl runtime library ‘libOpenCL.so.1’
0.141823 [opencl_init] opencl library ‘libOpenCL.so.1’ found on your system and loaded
0.181442 [opencl_init] could not get platforms: -1001
0.181460 [opencl_init] FINALLY: opencl is NOT AVAILABLE on this system.
0.181464 [opencl_init] initial status of opencl enabled flag is OFF.

But after I ran "sudo darktable-cltest”, then run “darktable -d opencl”

kelvin@localhost:~> darktable -d opencl
Invalid MIT-MAGIC-COOKIE-1 keyInvalid MIT-MAGIC-COOKIE-1 key0.052770 [opencl_init] opencl related configuration options:
0.052782 [opencl_init]
0.052794 [opencl_init] opencl: 1
0.052797 [opencl_init] opencl_scheduling_profile: ‘default’
0.052800 [opencl_init] opencl_library: ‘’
0.052805 [opencl_init] opencl_memory_requirement: 768
0.052808 [opencl_init] opencl_memory_headroom: 400
0.052812 [opencl_init] opencl_device_priority: ‘/!0,///!0,*’
0.052815 [opencl_init] opencl_mandatory_timeout: 200
0.052819 [opencl_init] opencl_size_roundup: 16
0.052822 [opencl_init] opencl_async_pixelpipe: 0
0.052825 [opencl_init] opencl_synch_cache: active module
0.052829 [opencl_init] opencl_number_event_handles: 25
0.052833 [opencl_init] opencl_micro_nap: 1000
0.052836 [opencl_init] opencl_use_pinned_memory: 0
0.052839 [opencl_init] opencl_use_cpu_devices: 0
0.052842 [opencl_init] opencl_avoid_atomics: 0
0.052845 [opencl_init]
0.052945 [opencl_init] could not find opencl runtime library ‘libOpenCL’
0.052979 [opencl_init] could not find opencl runtime library ‘libOpenCL.so’
0.053062 [opencl_init] found opencl runtime library ‘libOpenCL.so.1’
0.053081 [opencl_init] opencl library ‘libOpenCL.so.1’ found on your system and loaded
0.062374 [opencl_init] found 1 platform
0.062400 [opencl_init] found 1 device
0.062530 [opencl_init] device 0 Quadro K2100M' has sm_20 support. 0.062622 [opencl_init] device 0 Quadro K2100M’ supports image sizes of 16384 x 16384
0.062625 [opencl_init] device 0 `Quadro K2100M’ allows GPU memory allocations of up to 498MB
[opencl_init] device 0: Quadro K2100M
GLOBAL_MEM_SIZE: 1995MB
MAX_WORK_GROUP_SIZE: 1024
MAX_WORK_ITEM_DIMENSIONS: 3
MAX_WORK_ITEM_SIZES: [ 1024 1024 64 ]
DRIVER_VERSION: 440.44
DEVICE_VERSION: OpenCL 1.2 CUDA

It works!

Hi @asn
After I run "sudo darktable-cltest ".
I can just use “darktable-cltest”, then opencl works.
It looks like I need to run a “sudo darktable-cltest” first, anyway.

kelvin@localhost:~> darktable-cltest
0.020404 [opencl_init] opencl related configuration options:
0.020414 [opencl_init]
0.020416 [opencl_init] opencl: 1
0.020428 [opencl_init] opencl_scheduling_profile: ‘default’
0.020430 [opencl_init] opencl_library: ‘’
0.020432 [opencl_init] opencl_memory_requirement: 768
0.020433 [opencl_init] opencl_memory_headroom: 400
0.020436 [opencl_init] opencl_device_priority: ‘/!0,///!0,*’
0.020450 [opencl_init] opencl_mandatory_timeout: 200
0.020453 [opencl_init] opencl_size_roundup: 16
0.020454 [opencl_init] opencl_async_pixelpipe: 0
0.020456 [opencl_init] opencl_synch_cache: active module
0.020459 [opencl_init] opencl_number_event_handles: 25
0.020462 [opencl_init] opencl_micro_nap: 1000
0.020464 [opencl_init] opencl_use_pinned_memory: 0
0.020466 [opencl_init] opencl_use_cpu_devices: 0
0.020468 [opencl_init] opencl_avoid_atomics: 0
0.020470 [opencl_init]
0.020547 [opencl_init] could not find opencl runtime library ‘libOpenCL’
0.020612 [opencl_init] could not find opencl runtime library ‘libOpenCL.so’
0.020715 [opencl_init] found opencl runtime library ‘libOpenCL.so.1’
0.020747 [opencl_init] opencl library ‘libOpenCL.so.1’ found on your system and loaded
0.030686 [opencl_init] found 1 platform
0.030701 [opencl_init] found 1 device
0.030869 [opencl_init] device 0 Quadro K2100M' has sm_20 support. 0.030987 [opencl_init] device 0 Quadro K2100M’ supports image sizes of 16384 x 16384
0.030990 [opencl_init] device 0 `Quadro K2100M’ allows GPU memory allocations of up to 498MB
[opencl_init] device 0: Quadro K2100M
GLOBAL_MEM_SIZE: 1995MB
MAX_WORK_GROUP_SIZE: 1024
MAX_WORK_ITEM_DIMENSIONS: 3
MAX_WORK_ITEM_SIZES: [ 1024 1024 64 ]
DRIVER_VERSION: 440.44
DEVICE_VERSION: OpenCL 1.2 CUD

It worked, thank you very much :sunglasses:

@asn I did a quick test install on an external SSD today.

Your setup description works flawlessly. One questions though:

  • Is it correct, that the repo and the files are not signed?

Yes, they are not signed which is really bad!!!

Open a ROCm bug, suggest them to either sign the packages or use the OpenSUSE Build Service, which should be easier :slight_smile:

1 Like

done
github issue

Okay, again the combination of tumbleweed, opencl and in my case AMD graphics card, which is older and belongs to the polaris line. That line has no longer been supported by rocm since rocm 4.5.
On supported OSs, which tumbleweed is not, the official AMD driver works unobtrusively.
I cannot get the official driver to work under tumbleweed. Because of the line of my graphics card, I should call up the installer with --opencl=legacy which enforces dkms to be installed by the setup script.

Does anyone of you use the same combination (tumbleweed, AMD and opencl) and can point me in the right direction?