Details
What drivers/packages do I have to install in order to enable OpenCL over multiple platforms: CPU (Intel), Integrated GPU (Intel), Dedicated GPU (NVIDIA)?
It would be nice to have all platforms running OpenCL 1.2 or above
I know it is probably a simple fix, maybe just the right selection of libraries/SKDs, but I am having some trouble getting more them one platform to work.
Running ubuntu 14.04: I have a intel core I5 with the integrated intel graphics and a dedicated NVIDIA Geforce 710m board.
Resources I have used
https://wiki.tiker.net/OpenCLHowTo
Here (under Debian) it tells me that I only need:
- Packages of ICD loaders: (you just need one of these)
- Packages of ICDs
- Package for headers
What I have already tried
- Installed CUDA7.5 (yes for all)
- Had a black screen due drivers conflics
- Resolved by uninstalling all nvidia drivers and installing 352
- Still left Cuda SDK install
- Had a black screen due drivers conflics
- From: How to make OpenCL work on 14.10 + Nvidia 331.89 drivers?
sudo apt-get install nvidia-331 nvidia-331-uvm nvidia-opencl-dev nvidia-modprobe
- Those packages downgraded my drivers to 331 and 340
- Also from: How to make OpenCL work on 14.10 + Nvidia 331.89 drivers?
- Linked libraries with:
sudo ln -s /usr/include/nvidia-352/GL /usr/local/include
sudo ln -s /usr/lib/x86_64-linux-gnu/libOpenCL.so.1 /usr/local/lib/libOpenCL.so
- OpenCL 1.1 worked for NVIDIA GPU
- Could not get OpenCL 1.2, thus decided to uninstall 331 and 340 and install again 352
- Linked libraries with:
- Installed 352 (again)
- OpenCL 1.1 stopped working for NVIDIA GPU (and still does not work)
Installed Intel
opencl_runtime_14.2_x64_4.5.0.8.tgz
Created a simbolic link to intel ICD with:
sudo ln -s /opt/intel/opencl-1.2-4.5.0.8/etc/intel64.icd
OpenCL 1.2 worked for CPU (and still works)
Installed clinfo
sudo apt-get install clinfo
- only intel CPU platform is detected
- Tried to install several different NVIDIA packages to get NVIDIA GPU work again but had no luck with that
Installed packages and some information:
ICD in Vendors?
ls -l /etc/OpenCL/vendors/
total 4
-rw-r--r-- 1 root root 15 Out 22 2015 Altera.icd
lrwxrwxrwx 1 root root 45 Abr 28 13:48 intel64.icd -> /opt/intel/opencl-1.2-4.5.0.8/etc/intel64.icd
Note the missing nvidia.icd
CL and GL - GL had a valid link... now is IN RED
ls -l /usr/local/include
total 4
lrwxrwxrwx 1 root root 31 Abr 28 12:48 CL -> /usr/local/cuda-7.5/include/CL/
lrwxrwxrwx 1 root root 26 Abr 27 11:44 GL -> /usr/include/nvidia-352/GL (IN RED COLOR - folder doesn't exist anymore)
.so Files
ls -l /usr/local/lib/ | grep CL
lrwxrwxrwx 1 root root 40 Abr 27 11:45 libOpenCL.so -> /usr/lib/x86_64-linux-gnu/libOpenCL.so.1
Installed packages
dpkg --get-selections | grep nvidia
nvidia-340 deinstall
nvidia-352 install
nvidia-libopencl1-340 deinstall
nvidia-libopencl1-340-updates deinstall
nvidia-libopencl1-352 deinstall
nvidia-libopencl1-352-updates install
nvidia-modprobe install
nvidia-opencl-icd-340 deinstall
nvidia-opencl-icd-352 deinstall
nvidia-prime install
nvidia-settings install
dpkg --get-selections | grep opencl
nvidia-libopencl1-340 deinstall
nvidia-libopencl1-340-updates deinstall
nvidia-libopencl1-352 deinstall
nvidia-libopencl1-352-updates install
nvidia-opencl-icd-340 deinstall
nvidia-opencl-icd-352 deinstall
ocl-icd-libopencl1:amd64 deinstall
ocl-icd-libopencl1:i386 deinstall
opencl-headers install
unity-scope-openclipart install
clinfo
clinfo
Number of platforms: 1
Platform Profile: FULL_PROFILE
Platform Version: OpenCL 1.2 LINUX
Platform Name: Intel(R) OpenCL
Platform Vendor: Intel(R) Corporation
Platform Extensions: cl_khr_icd cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_byte_addressable_store cl_khr_spir cl_intel_exec_by_local_thread cl_khr_depth_images cl_khr_3d_image_writes cl_khr_fp64
Platform Name: Intel(R) OpenCL
Number of devices: 1
Device Type: CL_DEVICE_TYPE_CPU
Device ID: 32902
Max compute units: 4
Max work items dimensions: 3
Max work items[0]: 8192
Max work items[1]: 8192
Max work items[2]: 8192
Max work group size: 8192
Preferred vector width char: 1
Preferred vector width short: 1
Preferred vector width int: 1
Preferred vector width long: 1
Preferred vector width float: 1
Preferred vector width double: 1
Native vector width char: 16
Native vector width short: 8
Native vector width int: 4
Native vector width long: 2
Native vector width float: 8
Native vector width double: 4
Max clock frequency: 1800Mhz
Address bits: 64
Max memory allocation: 2040185856
Image support: Yes
Max number of images read arguments: 480
Max number of images write arguments: 480
Max image 2D width: 16384
Max image 2D height: 16384
Max image 3D width: 2048
Max image 3D height: 2048
Max image 3D depth: 2048
Max samplers within kernel: 480
Max size of kernel argument: 3840
Alignment (bits) of base address: 1024
Minimum alignment (bytes) for any datatype: 128
Single precision floating point capability
Denorms: Yes
Quiet NaNs: Yes
Round to nearest even: Yes
Round to zero: No
Round to +ve and infinity: No
IEEE754-2008 fused multiply-add: No
Cache type: Read/Write
Cache line size: 64
Cache size: 262144
Global memory size: 8160743424
Constant buffer size: 131072
Max number of constant args: 480
Local memory type: Global
Local memory size: 32768
Error correction support: 0
Unified memory for Host and Device: 1
Profiling timer resolution: 1
Device endianess: Little
Available: Yes
Compiler available: Yes
Execution capabilities:
Execute OpenCL kernels: Yes
Execute native function: Yes
Queue properties:
Out-of-Order: Yes
Profiling : Yes
Platform ID: 0x1659390
Name: Intel(R) Core(TM) i5-3337U CPU @ 1.80GHz
Vendor: Intel(R) Corporation
Device OpenCL C version: OpenCL C 1.2
Driver version: 1.2.0.8
Profile: FULL_PROFILE
Version: OpenCL 1.2 (Build 8)
Extensions: cl_khr_icd cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_byte_addressable_store cl_khr_spir cl_intel_exec_by_local_thread cl_khr_depth_images cl_khr_3d_image_writes cl_khr_fp64
So...
How can I get NVIDIA gpu to also show up as a OPENCL 1.2 (or higher) platform? How about the integrated intel graphics?
Would AMD libraries work with my hardware?
Why most of the nvidia packages are marked as deinstall
?
sudo prime-select nvidia
- nico*.icd
file in\usr\share\nvidia-352\
. But I had before something linked to nvidia-331 in the\etc\OpenCL\vendors
folder. Which may have enabled me to use OpenCL 1.1 - nico