Processors
Intel® Processors, Tools, and Utilities
15892 Discussions

Using OpenCL in GitHub Actions running on windows

SunSerega
Beginner
3,156 Views

GitHub Actions don't have GPUs, but I need a working OpenCL API to run some of the sanity checks of my app.

I know I can run them on Ubuntu and then just:

```
sudo apt-get install -y ocl-icd-opencl-dev
sudo apt-get install -y pocl-opencl-icd
```

Then from OpenCL, I see a single OpenCL device, here an example name (from `clGetDeviceInfo` in one of the runs):
> pthread-Intel(R) Xeon(R) CPU E5-2673 v3 @ 2.40GHz

---


But I need my sanity checks to run on the Windows system due to other limitations (which I'm trying to resolve too, but I can't count on that).

So, from running "Get-WmiObject Win32_Processor" I see:

```

Caption : Intel64 Family 6 Model 79 Stepping 1
DeviceID : CPU0
Manufacturer : GenuineIntel
MaxClockSpeed : 2295
Name : Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz
SocketDesignation : None
```

Model, Stepping, and clock speed change sometimes.
But it's always Intel, 64bit, Family 6, and Xeon.

---

So, I tried installing drivers from here:
https://www.intel.com/content/www/us/en/search.html#q=Xeon&sort=relevancy&f:@tabfilter=[Downloads]&f:@stm_10385_en=[Graphics]

Here is the main idea:

```
#Invoke-WebRequest -Uri 'https://downloadmirror.intel.com/30195/a08/win64_15.45.5174.zip' -OutFile 'D:\igfx.zip'
#Invoke-WebRequest -Uri 'https://downloadmirror.intel.com/25308/eng/win64_15407.4279.zip' -OutFile 'D:\igfx.zip'
Invoke-WebRequest -Uri 'https://downloadmirror.intel.com/30382/a08/win64_15.36.5180.zip' -OutFile 'D:\igfx.zip'
7z x "D:\igfx.zip" -o"D:\igfx" -y
Start-Process -FilePath 'D:\igfx\igxpin.exe' -ArgumentList '-overwrite -s -report "D:\igfx.log" -nowinsat' -Wait -Verb RunAs | ForEach-Object { Write-Host $_ }
#Start-Process -FilePath 'D:\igfx\Setup.exe' -ArgumentList '-overwrite -s -report "D:\igfx.log" -nowinsat' -Wait -Verb RunAs | ForEach-Object { Write-Host $_ }
if ([System.IO.File]::Exists("D:\igfx.log")) {
Get-Content "D:\igfx.log"
} else {
Write-Host "No driver install log file found"
}
```

In all cases, the installer silently exists without any errors (doesn't even create the .log file), but also doesn't seem to have actually run.

---

I also tried copying the contents of the "Graphics" folder from these .zip-s to the current directory and `[DllImport]` -ing from some copied .dll-s instead of the system "OpenCL.dll".

- "Intel_OpenCL_ICD64.dll", just like the system "OpenCL.dll", says there are 0 OpenCL platforms.
- "ocl_cpu_IntelOpenCL64.dll" and "IntelOpenCL64.dll" also seem to have the OpenCL API entry points, but trying to get platform count I get `CL_OUT_OF_HOST_MEMORY`.


0 Kudos
1 Solution
3 Replies
SunSerega
Beginner
3,123 Views

While locally testing the installer (looking at command line options) - it seems I managed to install it on my system.
Work great, I can now run OpenCL kernel on my CPU but... I have AMD CPU.


For now, only 2 things seem glitchy:
1. If I try to combine GPU and CPU devices in one context - I get AccessViolation, instead of an OpenCL error, if the first device is my NV GPU.
2. In the OpenCL device info I see:

Name = AMD Ryzen 5 2600 Six-Core Processor
Vendor = Intel(R) Corporation

So, should I be worried? Are there any repercussions for just letting the Intel driver run my AMD CPU?

P.S. (and in terms of GitHub Actions - it worked perfectly, no questions there)

0 Kudos
Stefan3D
Honored Contributor II
3,117 Views

You might get further help in the developer forum: https://community.intel.com/t5/OpenCL-for-CPU/bd-p/opencl

 

Out of curiosity i tried an AMD CPU with the aforementioned driver and an NVIDIA GPU successfully in Indigo bench

Looks like Intel's driver developer did a good job

 

Reply