I'm having a really hard time getting opencl set up. The machine is a NUC running ubuntu 14.04. Here's what the OS reports about the hardware:
lspci |grep VGA:
00:02.0 VGA compatible controller: Intel Corporation Device 1916 (rev 07)
cat /proc/cpuinfo |grep model\ name:
model name : Intel(R) Core(TM) i3-6100U CPU @ 2.30GHz
model name : Intel(R) Core(TM) i3-6100U CPU @ 2.30GHz
model name : Intel(R) Core(TM) i3-6100U CPU @ 2.30GHz
model name : Intel(R) Core(TM) i3-6100U CPU @ 2.30GHz
The big problem I'm having is that I'm not sure what things I need to install. Everything is very confusing with outdated links, product name changes, and various bundles. I want to be able to run my kernels on cpu and gpu.
First I installed "Intel® SDK for OpenCL™ Applications". This allowed my to compile programs, but does not have any drivers, even for cpu.
Then I tried "OpenCL™ Runtime 15.1 for Intel® Core™ and Intel® Xeon® Processors for Ubuntu* (64-bit) (part of Intel OpenCL™ Code Builder for Ubuntu)" That appears to be older than the SDK, but does come with a cpu driver (intel64.icd). Although it gives me an error about requiring ubuntu 12.04, I was able to get it to install, and able to run an opencl program on the cpu.
Then I installed "OpenCL™ 1.2 Driver for Intel® HD, Iris™, and Iris™ Pro Graphics for Linux* (64-bit)" - I followed the included instructions, including building a patched kernel. This doesn't even show up as a platform. I tried it with both the SDK and Code Builder. I see /etc/OpenCL/vendors/intel.icd, but the system seems to ignore it.
Finally I installed beignet (the version in apt). That actually gives me a new gpu platform. However, when I try to run an opencl application I get this:
$ ./gemm
Platforms (1):
[0] Experiment Intel Gen OCL Driver [Selected]
Can't find X server!
Trying to open directly...Device open failed
$ sudo ./gemm
Platforms (1):
[0] Experiment Intel Gen OCL Driver [Selected]
Can't find X server!
Trying to open directly...Success at /dev/dri/card0.
[ ERROR ] Sample application specific error: OpenCL error CL_DEVICE_NOT_FOUND happened in file ../common/oclobject.cpp at line 219.
I am running this over SSH. Do I need to run it from an X session? Ideally we want to be able to run the opencl code from a background service without anyone logged in.