Get Started with Intel® SDK for OpenCL™ Applications 2017

ID 672047
Updated 10/8/2018
Version Latest
Public

author-image

By

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.