Intel® SDK for OpenCL™ Applications 2019 represents a significant departure and refactor effort over Intel® SDK for OpenCL™ Applications 2017. View the Intel® SDK for OpenCL™ Applications 2019 portal. Intel® Graphics Compute Runtime for OpenCL™ Driver users on Linux* OS or through Intel® Graphics Technology driver on Windows* OS should develop with the 2019 SDK. Developers with an older OpenCL™ implementation should expect limited functionality with the 2019 SDK and may wish to consider the 2017 SDK.
0. Overview
Intel® SDK for OpenCL™ Applications 2017 is the primary development vehicle to unlock OpenCL™ development on Intel® Graphics Technology and Intel® CPUs. The SDK includes three layers of components to enable the developer stack.
- Developer Tools
- Debug facility for OpenCL™ applications
- Analysis facility for OpenCL™ applications
- IDE Helper Plugin (Eclipse* or Visual Studio*)
- Intel® offline compiler for OpenCL™ kernels, ioc64
- OpenCL™ Headers and an Interrogator Runtime
- Headers and link libraries to build and execute OpenCL™ programs.
- Intel® Experimental OpenCL™ 2.1 CPU Only implementation
- Provides the ability to run kernels on the CPU with no need for an accelerator/coprocessor device. This experimental runtime is intended for development only. It is not intended for redistribution.
- Provides the ability to run kernels on the CPU with no need for an accelerator/coprocessor device. This experimental runtime is intended for development only. It is not intended for redistribution.
The Intel® SDK for OpenCL™ Applications does not contain any kernel mode components.
1. Basic Example
A basic, functioning OpenCL™ application can be built with the SDK components like so:
- In this example, the developer:
- Writes C or C++ sources (far left, .cpp), including OpenCL™ headers (middle right). The sources choose the platform provided by the Intel® Experimental OpenCL™ 2.1 CPU Only runtime (bottom).
- Writes her OpenCL-C kernel source file (middle, .cl)
- Builds and links the C or C++ objects to the OpenCL™ interrogator runtime library (middle right)
- At runtime, the OpenCL™ API facilities either just in time build the OpenCL-C kernel source or load a user precompiled kernel. The OpenCL™ implementation executes the kernel binary on the OpenCL™ target device.
- In this example that target device is the CPU. Kernel compilation and execution is afforded by the platform provided with the Intel® Experimental OpenCL 2.1 CPU Only runtime.
There are more considerations and options when executing OpenCL applications. The reader is encouraged to explore the Khronos* reference on OpenCL™ registry page and the Intel® SDK for OpenCL™ Applications release notes for more detail.
2. Example Developer Configurations
The following three examples describe SDK setup for possibilities for different OpenCL™ target devices. More detail is shown for the components at each layer. Note: FPGA devices are not mentioned here. For FPGA developer resources and guidance, see the fpgasoftware.intel.com portal.
CPU
The first example shows CPU targeting. This system has the CPU targeted OpenCL™ runtime suitable for application deployment. Note: this scenario applies similarly to both supported Windows* OS and supported Linux* OS:
The user application can select the OpenCL™ CPU platform provided by the Intel® CPU OpenCL™ Runtime 16.1.2 (Standalone, deployment suitable). For more information about the Intel® CPU OpenCL™ Runtime 16.1.2 Standalone please see the Intel® article for OpenCL™ deployments.
Graphics / Windows* OS
This second example shows the Intel® SDK for OpenCL™ Applications 2017 targeting Intel® Graphics Technology with Windows* OS.
Component boxes highlighted in:
- Purple - apply for both supported Intel® CPU and supported Intel® Graphics Technology platforms.
- Blue - apply for supported Intel® CPU platforms.
- Red - apply for supported Intel® Graphics Technology platforms.
For programs on Windows* OS targeting Intel® Graphics Technology, the OpenCL™ program will select the platform afforded by the Intel® Graphics Compute Runtime for OpenCL™ Driver. This OpenCL™ implementation is distributed as part of the Intel® Graphics Technology driver package for Windows* OS. The Intel® graphics driver package for Windows* OS also contains the CPU Standalone distribution described in the first example. See more information on Intel® Graphics Technology deployment section at the deployment page.
Graphics / Linux* OS
The third example shows SDK development targeting Intel® Graphics Technology on Linux* OS:
See more about obtaining the Intel® SRB5.0 Runtime for OpenCL™ applications on the legacy deployment page. Notice that to execute with the OpenCL™ platform provided by the SRB5.0 deployment, a patched kernel is expected.
The Linux* OS article SDK getting started guide has some recommendations for configuring prerequisites for CentOS* and Ubuntu* OS development setup, including guidance for creation of the patched kernel for SRB5.0. The base kernels supported for SRB5.0 were 4.4 and 4.7, geared toward Intel® Media Server Studio 2017 R3 and OpenCL™ enablement respectively. Continue to the 2017 version SDK for Linux* OS getting started guide to setup development for targeting systems using the SRB5.0 runtime.
3. Misc and Next Steps
The Intel® Graphics Compute Runtime for OpenCL™ Driver, known as “NEO”, is an opensource, actively maintained OpenCL™ implementation. It was introduced for Intel® Graphics Technology GEN8 microarchitecture Broadwell processors as well as GEN9 platforms and later. Intel® SDK for OpenCL™ Applications 2019 is intended to support development with the NEO implementation and move away from the SRB5.0 implementation. For more on NEO, view the Intel® deployment page for OpenCL™ runtimes and the NEO github portal.
The Intel® SDK for OpenCL™ Applications 2019 is offered as a subcomponent for Intel® System Studio 2019. The Beta program for Intel® System Studio 2019 ended September 17, 2018 and beta licenses expire on October 23, 2018.
For more tools capable of heterogeneous analysis and profiling assistance consider Intel® VTune™ Amplifier, as found:
- as a standalone tool
- within Intel® Parallel Studio
- within Intel® System Studio.
ioc64 is a command line utility to build OpenCL™ kernels offline as opposed to at runtime. Ioc64 supports various iterations of SPIR (Standard Portable Intermediate Representation) targeting. ioc64 serves as a pass through to the OpenCL™ implementations available on the system.
For an authoritative reference of Intel® Processor SKU’s featuring Intel® Graphics Technology, please see the ark database.