Unable to use OpenCL/Cuda on Ubuntu 18.04

System Info
 - System: Ubuntu 18.04
 - Linux Kernel Version: I tried 4.15 through 4.17 (both custom and standard repo kernels)
 - Nvidia Driver: 396
 - Graphics Card (GPU): Nvidia GeForce 1080
 - CPU: i7-8700K (Coffeelake)
 - Cuda Version: 9.1
 - ocl-icd-libopencl1 Version: 2.2.11-1ubuntu1
 - ocl-icd-libopencl1 Provides: libopencl-1.1-1, libopencl-1.2-1, libopencl-2.0-1, libopencl-2.1-1, libopencl1
 - clinfo Output:

    Number of platforms                               1
      Platform Name                                   Clover    
      Platform Vendor                                 Mesa    
      Platform Version                                OpenCL 1.1 Mesa 18.1.1    
      Platform Profile                                FULL_PROFILE    
      Platform Extensions                             cl_khr_icd    
      Platform Extensions function suffix             MESA       
      Platform Name                                   Clover    
    Number of devices                                 0        
    NULL platform behavior    
      clGetPlatformInfo(NULL, CL_PLATFORM_NAME, ...)  Clover    
      clGetDeviceIDs(NULL, CL_DEVICE_TYPE_ALL, ...)   Clover

      clCreateContext(NULL, ...) [default]            No devices found in platform    
      clCreateContextFromType(NULL, CL_DEVICE_TYPE_DEFAULT)  No devices found in platform    
      clCreateContextFromType(NULL, CL_DEVICE_TYPE_CPU)  No devices found in platform    
      clCreateContextFromType(NULL, CL_DEVICE_TYPE_GPU)  No devices found in platform    
      clCreateContextFromType(NULL, CL_DEVICE_TYPE_ACCELERATOR)  No devices found in platform    
      clCreateContextFromType(NULL, CL_DEVICE_TYPE_CUSTOM)  No devices found in platform    
      clCreateContextFromType(NULL, CL_DEVICE_TYPE_ALL)  No devices found in platform        
    ICD loader properties    
      ICD loader Name                                 OpenCL ICD Loader    
      ICD loader Vendor                               OCL Icd free software    
      ICD loader Version                              2.2.11    
      ICD loader Profile                              OpenCL 2.1

I have been using OpenGL and OpenCL successfully for quite some time. However, I have not been able to use OpenCL recently. I update my system monthly. I used OpenCL successfully in May. As for June, I did not use OpenCL until the second week of June. I assume an update that I got in the beginning of June is the cause (but I could be wrong). I have tried downgrading the Linux kernel (and trying various kernel versions), Nvidia drivers (390 and 396), and various graphics-related libraries without success. The output of clinfo no longer sees my Nvidia card (like it did in May).

I have tried reinstalling nvidia-cuda-toolkit as well as all other Nvidia and Cuda packages. I also tried reinstalling intel-microcode and all Optimus/Prime related packages. I also tried uninstalling such packages and reinstalling. I have also tried uninstalling all intel-iGPU (such as Beignet and intel-microcode) related packages. The ubuntu-additional-drivers program only ever shows the Nvidia driver.

Interestingly, OpenGL is perfectly fine. I can still use the Nvidia card for graphics rendering. The output of nvidia-smi shows my various processes running on the graphics card in graphics-mode (but no compute-mode processes).

What am I over-looking in getting OpenCL to work again?

This detail may or may not be related or provide a hint, but the output of eglinfo shows that dlopen cannot find vgem_dri.so.

How did you install the driver, by graphics ppa? Is the icd installed (package nvidia-opencl-icd-XXX)?


I added the http://ppa.launchpad.net/graphics-drivers/ppa/ubuntu PPA (Bionic) PPA according to the many directions on the Internet.

As of driver version 396, the nvidia-opencl-icd-XXX package is now called libnvidia-compute-XXX, so technically yes. Even if I downgrade to driver version 390 (which has nvidia-opencl-icd-390 available) OpenCL still fails to work.

Sorry for bringing up a dead thread, but I found this on Google and I want to say that it works now on ubuntu 18.04 with Cuda 10.

I installed cuda 10 from nvidia’s website:

I always have issues installing cuda and the drivers from the cuda repo as it somehow, even after at least two years (ubuntu 16.04), I have to do these steps to clear out the old nvidia packages that are part of ubuntu:

#dpkg-query   -f '${binary:Package} ' -W *nvidia* | awk '{ print "sudo apt-get remove --purge "$0}' | bash

The above code will search for package that contains the word nvidia, the it will purge them.
Then, you can install the cuda toolkit as usual.

I am running on a laptop with optimus, so I had to use optirun to get clinfo to recognize my device, but it works now.

I hope this helps someone else on the internet.