Get Started with Intel® SDK for OpenCL™ Applications 2017

By Michael R Carroll, Published: 09/05/2018, Last Updated: 10/08/2018

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.

Intel® SDK for OpenCL™ Applications 2017

  1. 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
  2. OpenCL™ Headers and an Interrogator Runtime
    • Headers and link libraries to build and execute OpenCL™ programs.
  3. 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.

    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:

    Intel® SDK for OpenCL™ Applications 2017

    • 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:

    Intel® SDK for OpenCL™ Applications 2017 CPU targeting

    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.

    Intel® SDK for OpenCL™ Applications 2017 Windows* OS Graphics targeting

    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:

    Intel® SDK for OpenCL™ Applications 2017 Linux* OS Graphics Targeting

    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.

    Product and Performance Information

    1

    Intel's compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice.

    Notice revision #20110804