Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is difference between intel-compute-runtime, intel-opencl-runtime, and intel-opencl-sdk?

Tags:

intel

opencl

It looks like that Intel provides many OpenCL implementations.ArchWiki describes OpenCL implementations. It says that beignet and intel-opencl are deprecated. Then, what is difference between intel-compute-runtime, intel-opencl-runtime, and intel-opencl-sdk?

I want to use OpenCL on my x86 computer.

like image 562
moco Avatar asked Aug 01 '19 05:08

moco


1 Answers

The following OpenCL runtimes expose your Intel integrated GPU as an OpenCL device to applications in your PC:

  • Intel compute runtime (aka Neo) is the new open-source OpenCL implementation for Intel GPUs. It supports integrated GPUs from Broadwell and onward.
  • Beignet is the old open-source OpenCL implementation for Intel integrated GPUs. It supports integrated GPUs since Ivy Bridge. You should use this if you have an older Intel processor.
  • Intel OpenCL was a proprietary alternative to Beignet for older processors since Ivy Bridge. In my experience Beignet is preferable if you have an older processor.

The Intel OpenCL runtime exposes your CPU as an OpenCL device to applications in your PC.

An OpenCL ICD loader is vendor-independent and allows you to select which OpenCL device to use at runtime. There are several available, but I suggest ocl-icd, since it's open source and typically up-to-date.

For developing your own OpenCL programs you also need the OpenCL headers, which you can download from here or install from the Arch repositories.

The so called SDKs are simply vendor bundles that generally contain: a) an OpenCL runtime to expose the vendor hardware as an OpenCL device; b) an OpenCL ICD loader, so that various processors can be exposed as OpenCL devices; c) the OpenCL headers; d) code samples on how to best use OpenCL on the vendor hardware; and, e) possibly other vendor related stuff.

Some examples of SDKs include:

  • AMD APP SDK (discontinued).
  • Intel® SDK for OpenCL™ Applications.

You don't actually need an SDK to develop OpenCL applications, as long as you have an OpenCL runtime, an OpenCL ICD loader and the OpenCL headers. If developed in C/C++, your applications should include the headers and link against an ICD loader (libOpenCL.so).

like image 175
faken Avatar answered Sep 28 '22 03:09

faken