Ask Your Question

Revision history [back]

OpenCL not recognizing Intel iGPU on Linux

Hello,

I'm using OpenCV 3.4.3 in conjunction with OpenCL on Ubuntu 16.04.

I ran some sample code below to check if OpenCL could see my GPU:

if(!cv::ocl::haveOpenCL())
    std::cout << "no opencl" << std::endl;

cv::ocl::Context context;

if (!context.create(cv::ocl::Device::TYPE_ALL))
    std::cout << "failed to create" << std::endl;

std::cout << context.ndevices() << "GPU devices are detected" << std::endl;

cv::ocl::Device device = context.device(0);
std::cout << "Name: " << device.name() << std::endl;
std::cout << "Available" << device.available() << std::endl;
std::cout << device.OpenCL_C_Version() << std::endl;

cv::ocl::Device d = cv::ocl::Device::getDefault();
std::cout << d.OpenCLVersion() << std::endl;

Much to my dismay, it could not (output on Ubuntu):

no opencl
failed to create
0GPU devices are detected
Name: 
Available0

However, running that program on Windows (using OpenCV 3.2.0, but still with all of the OpenCL flags checked when building with CMake) produces a different output:

[ INFO:0] Initialize OpenCL runtime...
1GPU devices are detected
Name: Intel(R) HD Graphics 620
Available1
OpenCL C 2.1
OpenCL 2.1 NEO

While I understand Intel drivers are open-source and built into the Linux Kernel, this difference in output leads me to believe that a (similar but not the same) graphics driver is at fault.

That being said, I am unsure where to attain a different set of drivers that are more compatible with OpenCL.

https://01.org/linuxgraphics provides drivers meant only for 3D modeling, and https://www.intel.com/content/www/us/en/support/articles/000005520/graphics-drivers.html hasn't been updated with new drivers for anything past Ivy Bridge processors.

If anyone could point me in the right direction to find (what I believe to be at fault) better drivers, or has an idea as to something else that could be causing this issue, I would very much appreciate any help!