OpenCL not available after 'suspend/resume' cycle. Is there an easy work around?

Mine does (Ubuntu 23.10) – but it’s set up to compile darktable from source.
Here is how you can find stuff from the terminal:

kofa@eagle:~$ ls -l `locate libOpenCL.so`
lrwxrwxrwx 1 root root    18 Jun 14  2023 /usr/lib/i386-linux-gnu/libOpenCL.so.1 -> libOpenCL.so.1.0.0
-rw-r--r-- 1 root root 84220 Jun 14  2023 /usr/lib/i386-linux-gnu/libOpenCL.so.1.0.0
lrwxrwxrwx 1 root root    18 Jun 14  2023 /usr/lib/x86_64-linux-gnu/libOpenCL.so -> libOpenCL.so.1.0.0
lrwxrwxrwx 1 root root    18 Jun 14  2023 /usr/lib/x86_64-linux-gnu/libOpenCL.so.1 -> libOpenCL.so.1.0.0
-rw-r--r-- 1 root root 73384 Jun 14  2023 /usr/lib/x86_64-linux-gnu/libOpenCL.so.1.0.0
lrwxrwxrwx 1 root root    14 Jun 14  2023 /usr/share/man/man7/libOpenCL.so.7.gz -> libOpenCL.7.gz

This shows that libOpenCL.so is a symbolic link pointing at libOpenCL.so.1.0.0, and so is libOpenCL.so.1. There are two versions, one for 32 and 64 bits. libOpenCL.so only exists for 64 bits (there is /usr/lib/x86_64-linux-gnu/libOpenCL.so, but no /usr/lib/i386-linux-gnu/libOpenCL.so).

And

kofa@eagle:~$ cat /etc/OpenCL/vendors/nvidia.icd 
libnvidia-opencl.so.1

shows that the ICD file from Nvidia specifies the library libnvidia-opencl.so.1. And that library is (in 32 and 64 bit versions):

kofa@eagle:~$ ls -l `locate libnvidia-opencl.so.1`
lrwxrwxrwx 1 root root 30 Oct 30 12:17 /usr/lib/i386-linux-gnu/libnvidia-opencl.so.1 -> libnvidia-opencl.so.525.147.05
lrwxrwxrwx 1 root root 30 Oct 30 12:17 /usr/lib/x86_64-linux-gnu/libnvidia-opencl.so.1 -> libnvidia-opencl.so.525.147.05

To find the packages providing them:

kofa@eagle:~$ dpkg -S /usr/lib/x86_64-linux-gnu/libOpenCL.so /usr/lib/x86_64-linux-gnu/libOpenCL.so.1 /usr/lib/x86_64-linux-gnu/libOpenCL.so.1.0.0
ocl-icd-opencl-dev:amd64: /usr/lib/x86_64-linux-gnu/libOpenCL.so
ocl-icd-libopencl1:amd64: /usr/lib/x86_64-linux-gnu/libOpenCL.so.1
ocl-icd-libopencl1:amd64: /usr/lib/x86_64-linux-gnu/libOpenCL.so.1.0.0

kofa@eagle:~$ dpkg -S /etc/OpenCL/vendors/nvidia.icd /usr/lib/x86_64-linux-gnu/libnvidia-opencl.so.1 /usr/lib/x86_64-linux-gnu/libnvidia-opencl.so.525.147.05
libnvidia-compute-525:amd64: /etc/OpenCL/vendors/nvidia.icd
libnvidia-compute-525:amd64: /usr/lib/x86_64-linux-gnu/libnvidia-opencl.so.1
libnvidia-compute-525:amd64: /usr/lib/x86_64-linux-gnu/libnvidia-opencl.so.525.147.05

So:

  • libOpenCL.so is from a package, ocl-icd-opencl-dev, required only for development (incl. compiling darktable from source); that is probably why you don’t have it;

  • libOpenCL.so.1 and libOpenCL.so.1.0.0 come from the vendor-independent package ocl-icd-libopencl1;

  • while the Nvidia vendor package libnvidia-compute-525 provides libnvidia-opencl.so.1 and libnvidia-opencl.so.525.147.05. The latter version number corresponds to the version of my other NVidia packages (the 32-bit packages were filtered out below):

    kofa@eagle:~$ dpkg -l|grep nvidia|grep 147 | grep -v i386
    ii  libnvidia-cfg1-525:amd64                                 525.147.05-0ubuntu0.23.10.1                          amd64        NVIDIA binary OpenGL/GLX configuration library
    ii  libnvidia-common-525                                     525.147.05-0ubuntu0.23.10.1                          all          Shared files used by the NVIDIA libraries
    ii  libnvidia-compute-525:amd64                              525.147.05-0ubuntu0.23.10.1                          amd64        NVIDIA libcompute package
    ii  libnvidia-decode-525:amd64                               525.147.05-0ubuntu0.23.10.1                          amd64        NVIDIA Video Decoding runtime libraries
    ii  libnvidia-encode-525:amd64                               525.147.05-0ubuntu0.23.10.1                          amd64        NVENC Video Encoding runtime library
    ii  libnvidia-extra-525:amd64                                525.147.05-0ubuntu0.23.10.1                          amd64        Extra libraries for the NVIDIA driver
    ii  libnvidia-fbc1-525:amd64                                 525.147.05-0ubuntu0.23.10.1                          amd64        NVIDIA OpenGL-based Framebuffer Capture runtime library
    ii  libnvidia-gl-525:amd64                                   525.147.05-0ubuntu0.23.10.1                          amd64        NVIDIA OpenGL/GLX/EGL/GLES GLVND libraries and Vulkan ICD
    ii  nvidia-compute-utils-525                                 525.147.05-0ubuntu0.23.10.1                          amd64        NVIDIA compute utilities
    ii  nvidia-dkms-525                                          525.147.05-0ubuntu0.23.10.1                          amd64        NVIDIA DKMS package
    ii  nvidia-driver-525                                        525.147.05-0ubuntu0.23.10.1                          amd64        NVIDIA driver metapackage
    ii  nvidia-kernel-common-525                                 525.147.05-0ubuntu0.23.10.1                          amd64        Shared files used with the kernel module
    ii  nvidia-kernel-source-525                                 525.147.05-0ubuntu0.23.10.1                          amd64        NVIDIA kernel source package
    ii  nvidia-utils-525                                         525.147.05-0ubuntu0.23.10.1                          amd64        NVIDIA driver support binaries
    ii  xserver-xorg-video-nvidia-525                            525.147.05-0ubuntu0.23.10.1                          amd64        NVIDIA binary Xorg driver