On a Windows 10 system with an AMD Radeon GPU and an Intel GPU (desktop or notebook), with graphics drivers installed for both GPUs, I bet you will see that OpenCL is limited to the AMD GPU only. If you search for Intel OpenCL related files with Explorer or Regedit, you will quickly find that all OpenCL driver files are there. So why is Intel OpenCL support disabled when an AMD Radeon GPU is present? Sorry, I don’t have the answer. Probably a savory story of drivers (AMD?). But here is a way to enable the Intel OpenCL support on Windows 32-bit and 64-bit with a simple registry tweak.
Before tweaking the registry, here is the OpenCL support on my test system:
– CPU: Intel Core i7-8700K + UHD Graphics 630 + Intel v6444 driver
– MSI Radeon RX 470 + Adrenalin 18.12.3
– Windows 10 64-bit v1809
GPU Caps Viewer is a 32-bit app. Let’s see the same support with a 64-bit app like the prototype of the upcoming GPU Shark 2:
Here is the tweak to enable OpenCL support for Intel processors. The OpenCL ICD (Installable Client Driver, the OpenCL.dll shipped with the graphics driver) tries to load all OpenCL implementations described in the HKEY_LOCAL_MACHINE\SOFTWARE\Khronos\OpenCL\Vendors key (64-bit app on Win64 or 32-bit app on WIn32) of the registry. For 32-bit apps on Windows 64-bit, the key is: KEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Khronos\OpenCL\Vendors.
This key lists all OpenCL implementations (see the cl_khr_icd OpenCL extension for more details). On my test system, the first key was not present and the second key was present but with a value that didn’t work…
Here are the right values for both keys. These values properly enabled OpenCL for Intel CPU/GPU on my test system when AMD Adrenalin 18.12.3 driver was already installed.
64-app on Win64 or 32-bit app on Win32
In the HKEY_LOCAL_MACHINE\SOFTWARE\Khronos\OpenCL\Vendors key, create a DWORD value with the following name:
I found this path in the registry (look for IntelOpenCL_x64_CpuRuntime or IntelOpenCL_x32_CpuRuntime values):
32-bit app on Win64
In the HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Khronos\OpenCL\Vendors key, create a DWORD value with the following name:
Once these values have been created, the OpenCL support for Intel CPU and GPU finally appeared:
Remark 1: on a system with no AMD GPU, these tweaks are useless, because Intel OpenCL support is properly enabled after Intel driver installation.
Remark 2: on a system with NVIDIA GPU (with GeForce 417.35) + Intel GPU (driver v6444), these tweaks are useless too, because Intel OpenCL support is properly enabled. Moreover, the OpenCL registry key (Khronos\OpenCL\Vendors) is empty…