OpenCL* for CPU
Ask questions and share information on Intel® SDK for OpenCL™ Applications and OpenCL™ implementations for Intel® CPU.
Announcements
This forum covers OpenCL* for CPU only. OpenCL* for GPU questions can be asked in the GPU Compute Software forum. Intel® FPGA SDK for OpenCL™ questions can be ask in the FPGA Intel® High Level Design forum.
1718 Discussions

OpenCL CPU Runtime build error: failed to get platform id

SailingDreams
New Contributor I
8,044 Views

In MSVC 2019 I created a new OpenCL CPU runtime template project and tried to build it (no changes were made to the code)

Below is the error I get:

Severity Code Description Project File Line Suppression State
Error CL Failed to get platform id...: 0 (CL_SUCCESS) CPUOpenCLProjectforWindows1 C:\Users\epatt\source\repos\CPUOpenCLProjectforWindows1\Template.cl 1

 

Severity Code Description Project File Line Suppression State
Error MSB3721 The command ""C:\Program Files (x86)\IntelSWTools\system_studio_2020\OpenCL\sdk\bin\x86\ioc32.exe" -cmd=build -input="C:\Users\epatt\source\repos\CPUOpenCLProjectforWindows1\Template.cl" -output="Debug\Template.out" -VS -device=CPU -targetos=current -bo=" "" exited with code 14. CPUOpenCLProjectforWindows1 C:\Program Files (x86)\IntelSWTools\system_studio_2020\OpenCL\sdk\BuildCustomizations\IntelOpenCL.targets 49

I attached my clinfo output

My laptop (Dell Inspiron 5567 Gen 7) has the Intel® Core™ i5-7200U Processor with integrated Intel® HD Graphics 620. There are no other graphics cards.

The Device Manager says the graphics driver is 30.0.101.1660 3/18/2022. It was installed using the Intel Support assistant

The SDK I installed is intel_sdk_for_opencl_applications_2020.3.494

I attached the MSVC Help About info

 

 

Labels (2)
0 Kudos
1 Solution
cw_intel
Moderator
7,033 Views

Sure, I will let you know when the BKM is published.  And now you can refer to the SYCL 2020 spec https://registry.khronos.org/SYCL/specs/sycl-2020/pdf/sycl-2020.pdf, and please go to Appendix C: OpenCL backend specification.  And also attaching a simple code for your reference, please compile the code with the command "dpcpp test.cpp -lOpenCL".

 

Thanks

View solution in original post

0 Kudos
16 Replies
SailingDreams
New Contributor I
7,860 Views

Here is another data point. I compiled the program from 

https://web.engr.oregonstate.edu/~mjb/cs575e/OpenclFiles/printinfo.cpp

on my machine and got the attached output (first couple lines are below)

*****************************************

Number of Platforms = 1                  
Platform #0:
Name = 'Intel(R) OpenCL HD Graphics'
Vendor = 'Intel(R) Corporation'
Version = 'OpenCL 3.0 '
Profile = 'FULL_PROFILE'
Number of Devices = 1
Device #0:
Type = 0x0004 = CL_DEVICE_TYPE_GPU

************************************

The oregonstate.edu code that outputs the "Number of Platforms" is below. So even though the ioc32.exe says it "failed to get platform id", the oregon state program was able to get it on my system. So why can't the ioc32.exe program get the id?

 

	cl_uint numPlatforms;
	status = clGetPlatformIDs(0, NULL, &numPlatforms);
	if (status != CL_SUCCESS)
		fprintf(stderr, "clGetPlatformIDs failed (1)\n");

	fprintf(stderr, "Number of Platforms = %d\n", numPlatforms);

 

 

0 Kudos
Anoop_M_Intel
Employee
7,682 Views

The clinfo output shows only one platform which is GPU device. Paying close attention to ioc32.exe invocation, it specifies the -device=CPU which means it is targeting CPU device and the machine doesn't have a CPU runtime installed since the clinfo doesn't show a CPU platform. Please check the properties to check if the target device for the template project is set to CPU device.

SailingDreams
New Contributor I
7,668 Views

@Anoop_M_Intel Thank-you for the reply.

I checked my PC's apps and did not see the CPU Runtime installed. Consequently, I downloaded and installed 2022.0.3 version and now Windows says I have it installed

SailingDreams_0-1651517322667.png

Now clinfo says I have two devices (output attached)

 

  Platform Name                                   Intel(R) OpenCL HD Graphics
  Platform Vendor                                 Intel(R) Corporation
  Platform Version                                OpenCL 3.0

 

And also

 

  Platform Name                                   Intel(R) OpenCL
Number of devices                                 1
  Device Name                                     Intel(R) Core(TM) i5-7200U CPU @ 2.50GHz
  Device Vendor                                   Intel(R) Corporation

 

Unfortunately, I still get an error, but at least it has changed:

Severity Code Description Project File Line Suppression State
Error CL Failed to initialize driver version from platform...: 0 (CL_SUCCESS) CPUOpenCLProjectforWindows1 C:\Users\epatt\source\repos\CPUOpenCLProjectforWindows1\Template.cl 1 

Build started...
1>------ Build started: Project: CPUOpenCLProjectforWindows1, Configuration: Debug Win32 ------
1>Preprocessing: Template.cl
1>Using build options:  -I "C:\Users\epatt\source\repos\CPUOpenCLProjectforWindows1"
1>C:\Users\epatt\source\repos\CPUOpenCLProjectforWindows1\Template.cl : error CL: Failed to initialize driver version from platform...: 0 (CL_SUCCESS)
1>Build failed!
1>
1>C:\Program Files (x86)\IntelSWTools\system_studio_2020\OpenCL\sdk\BuildCustomizations\IntelOpenCL.targets(49,5): error MSB3721: The command ""C:\Program Files (x86)\IntelSWTools\system_studio_2020\OpenCL\sdk\bin\x86\ioc32.exe" -cmd=build -input="C:\Users\epatt\source\repos\CPUOpenCLProjectforWindows1\Template.cl" -output="Debug\Template.out" -VS -device=CPU  -targetos=current            -bo="           "" exited with code -1073740791.
1>Done building project "CPUOpenCLProjectforWindows1.vcxproj" -- FAILED.
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

 

This person also had the same issue
https://community.intel.com/t5/OpenCL-for-CPU/Failed-to-initialize-driver-version-from-platform-0-CL-SUCCESS/td-p/1274768?profile.language=en

 

Could it be that the 2020.3 SDK I installed won't work with the 2022.0.3 CPU runtime? I know the runtime is OpenCL 3.0, and my guess is that the SDK is OpenCL 2.x because it's 2020 vintage.

Regarding the template's target device, in MSVC project properties, is this what is should be set to? Intel(R) CPU (-device=CPU)

SailingDreams_1-1651517951921.png

 

0 Kudos
SailingDreams
New Contributor I
7,664 Views

Another data point: I changed the target to GPU and got this output - exited with code -1073740791

 

1>Device version: OpenCL 3.0 NEO
1>Device vendor: Intel(R) Corporation
1>Device profile: FULL_PROFILE
1>
1>Add info:
1>	Maximum work-group size: 256
1>	Compiler work-group size: (0, 0, 0)
1>	Local memory size: 0
1>	Preferred multiple of work-group size: 32
1>	Minimum amount of private memory: 0
1>	Amount of spill memory used by the kernel: 0
1>
1>Build succeeded!
1>
1>C:\Program Files (x86)\IntelSWTools\system_studio_2020\OpenCL\sdk\BuildCustomizations\IntelOpenCL.targets(49,5): error MSB3721: The command ""C:\Program Files (x86)\IntelSWTools\system_studio_2020\OpenCL\sdk\bin\x86\ioc32.exe" -cmd=build -input="C:\Users\epatt\source\repos\CPUOpenCLProjectforWindows1\Template.cl" -output="Debug\Template.out" -VS -device=GPU  -targetos=current            -bo="           "" exited with code -1073740791.
1>Done building project "CPUOpenCLProjectforWindows1.vcxproj" -- FAILED.
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

 

0 Kudos
cw_intel
Moderator
7,600 Views

Hi,

Could you use OpenCL CPU Runtime, instead of OpenCL SDK? Maybe there are some compatibility issues between OpenCL CPU Runtime and OpenCL SDK. Could you uninstall OpenCL SDK and try again?


Thanks


0 Kudos
SailingDreams
New Contributor I
7,581 Views

Thanks for the reply

I am not sure what you mean by "Could you use OpenCL CPU Runtime". I'd love to try it, but what I'm looking for is an OpenCL template so that I don't have to deal with MSVC configuration issues. The SDK has a template. Is the CPU Runtime supposed to have a template? I thought the CPU Runtime was just a driver that emulated GPUs.

I tried re-installing the SDK and get the same error. The "add/remove" programs don't actually say "SDK", but I assumed it was this app below since it's 2020 vintage is the same as the SDK I installed

SailingDreams_1-1651775156362.png

Next, I thought I'd see if there are any OpenCL templates remaining after I uninstalled the SDK  - which I hope see a CPU Runtime template. Alas, there are no MSVC 2019 templates.

Could you point me to instructions on how to setup an OpenCL project using the CPU Runtime? Better yet, perhaps a github example?

These are the templates available when I had the OpenCL SDK. But after uninstalling the SDK, there are no OpenCL templates. Does the CPU Runtime come with MSVC project examples hidden somewhere in c:\Program Files (x86)?

SailingDreams_0-1651775024651.png

 

0 Kudos
cw_intel
Moderator
7,570 Views

Hi,

OpenCL SDK is EOL, the version 2020 U3 is the last planned release of the OpenCL SDK. For more information, you can refer to this release notes https://www.intel.com/content/dam/develop/external/us/en/documents/opencl-sdk-2020-u3-release-notes.pdf, please go to the section "New in this Release".


And you can use runtime packages to build your OpenCL applications.

  • To download the GPU runtimes:

Windows --- On the Graphics Driver Downloads (https://www.intel.com/content/www/us/en/support/products/80939/graphics.html) page, select the driver.

Linux --- On the General Purpose GPU Installation Guides (https://dgpu-docs.intel.com/installation-guides/index.html) page, follow the installation instructions for your operating system.

  • To download the CPU runtimes:

Follow the instructions in the article https://www.intel.com/content/www/us/en/developer/articles/technical/intel-cpu-runtime-for-opencl-applications-with-sycl-support.html


Using OpenCL RT, there is no OpenCL templates in Visual Studio. Please try the following steps to check if you can build your OpenCL code,

  1. Create a CPP project, and write your code, for example,

#include <iostream>

#include <CL/cl.h>

int main()

{

  cl_uint platformIdCount = 0;

  clGetPlatformIDs(0, NULL, &platformIdCount);

  std::cout << (int)platformIdCount << std::endl;

  return (int)platformIdCount;

}


2. Open the project properties,

  • Add the Opencl header files directories, for example "C:\Program Files (x86)\Intel\oneAPI\compiler\latest\windows\include\sycl"
  • Add the OpenCL library directories, for example "C:\Program Files (x86)\Intel\oneAPI\compiler\latest\windows\lib\x86"
  • Go to Linker --> Input, add "intelocl32.lib" to "Additional Dependencies".


Thanks



0 Kudos
Ben_A_Intel
Employee
7,564 Views

Hi, note that you only need an OpenCL implementation (AKA "runtime") installed to run an OpenCL application.  To build an OpenCL application, you need OpenCL headers and an OpenCL library to link to.  Here are a few GitHub repos that demonstrate how to build OpenCL applications, usually with the open-source OpenCL headers and OpenCL ICD loader library:

  1. The Khronos OpenCL SDK: https://github.com/KhronosGroup/OpenCL-SDK
  2. My SimpleOpenCLSamples: https://github.com/bashbaug/SimpleOpenCLSamples
  3. Richard Geldreich's simple_opencl repo: https://github.com/richgel999/simple_opencl

There are others too, but these are fairly common.  If you find another that you like more, please let us know!

You'll still need one or more OpenCL implementations installed to run an OpenCL application after building, but from the output above it looks like you are able to enumerate the CPU and GPU OpenCL devices so this is setup correctly.

edit: fixed misspelled name

SailingDreams
New Contributor I
7,510 Views

@Ben_A_Intel Thank-you so much for the links. I started with Richard's simple_opencl and got it running. It's amazing that it can generate the .sln using cmake.

Then I tried the SimpleOpenCLSamples. This is a great sequence of opencl examples to learn how to run Opencl. I find the CMakeLists.txt easier to use than the .sln (it's hard to figure out where VS has particular parameters stored). One thing I'm still trying to figure out is how the examples with a .cl kernel get compiled by ioc64. You'd think you could search the CMakeLists.txt to see how it's done, but no luck.

I've yet to try the Khronos OpenCL SDK. I'm a bit leery of installing opencl SDKs after my experience with the intel_sdk_for_opencl_applications SDK, but I'll definitely give it a try.

0 Kudos
SailingDreams
New Contributor I
7,265 Views

I attended the OneAPI workshop and noticed OpenCL is a downstream (for lack of a better word) of the SYCL (DPC++) compiler chain as shown in the snippet workshop slide snippet below.

Does this mean that if I install the OneAPI (I'm assuming this is an SDK too), will I be able to compile my opencl kernels? The reason I'm so dead set on opencl is that the company I work for has a large library built in OpenCL and I've made a personal quest (on my own time) to see if this library can be used on Intel chips.

Based on the size of the company's opencl lib, it would be a significant effort to migrate it from OpenCL to DPC++. They've also got a lot of gtests written to validate the opencl functionality.

So if it's possible to install OpenAPI and then compile existing OpenCL kernels, I can try that first, and then start teaching myself about migrating code from OpenCL to DPC++. If this process goes well, I could recommend a migration path to the company I work for. 

Until I hear back, I'll continue with the Khronos OpenCL SDK mentioned above (hopefully it's installation doesn't muck up the OneAPI toolchain.

SailingDreams_1-1653504934766.png

 

 

0 Kudos
cw_intel
Moderator
7,135 Views

Hi,


Sorry for the delay reply.


If you install the oneAPI, you can compile your opencl kernels, since the OpenCL CPU Runtime is shipped with oneAPI Base Toolkit now. You can download the oneAPI Base Toolkit from https://www.intel.com/content/www/us/en/developer/tools/oneapi/base-toolkit-download.html. And on Windows, you can only install OpenCL CPU RT, you can download the installer from https://www.intel.com/content/www/us/en/developer/articles/technical/intel-cpu-runtime-for-opencl-applications-with-sycl-support.html.


For the GPU runtime:

On Windows, please select the latest version of Intel graphics on the Graphics Driver Downloads page https://www.intel.com/content/www/us/en/support/products/80939/graphics.html

On Linux, please follow the installation instructions on this page https://dgpu-docs.intel.com/installation-guides/index.html for your operating system.


Thanks




0 Kudos
SailingDreams
New Contributor I
7,081 Views

@cw_intel Thanks, I have installed OneAPI and am working through the examples. If there are any that use DPC to call opencl, feel free to let me know.

Thanks again

0 Kudos
cw_intel
Moderator
7,034 Views

Sure, I will let you know when the BKM is published.  And now you can refer to the SYCL 2020 spec https://registry.khronos.org/SYCL/specs/sycl-2020/pdf/sycl-2020.pdf, and please go to Appendix C: OpenCL backend specification.  And also attaching a simple code for your reference, please compile the code with the command "dpcpp test.cpp -lOpenCL".

 

Thanks

0 Kudos
cw_intel
Moderator
6,482 Views
0 Kudos
cw_intel
Moderator
5,864 Views

Hi,


If you require additional assistance from Intel, please start a new thread as this thread will no longer be monitored by Intel.


Thanks.


0 Kudos
Reply