intel-compute-runtime、intel-opencl-runtime 和 intel-opencl-sdk 之间有什么区别?

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

看起来英特尔提供了许多 OpenCL 实现。ArchWiki描述了 OpenCL 实现。它说 beignet 和 intel-opencl 已被弃用。那么,intel-compute-runtime、intel-opencl-runtime、intel-opencl-sdk的区别是什么?

我想在我的 x86 计算机上使用 OpenCL。

以下 OpenCL 运行时 将您的英特尔集成 GPU 作为 OpenCL 设备公开给您 PC 中的应用程序:

  • Intel compute runtime(又名 Neo)是用于英特尔 GPU 的新 open-source OpenCL 实现。它支持 Broadwell 及以后的集成 GPU。
  • Beignet 是英特尔集成 GPU 的旧 open-source OpenCL 实现。自 Ivy Bridge 以来,它支持集成 GPU。如果您有较旧的 Intel 处理器,则应该使用它。
  • 自 Ivy Bridge 以来,
  • Intel OpenCL 是 Beignet 的专有替代品,适用于较旧的处理器。根据我的经验,如果您的处理器较旧,Beignet 更可取。

Intel OpenCL runtime 将您的 CPU 作为 OpenCL 设备公开给您 PC 中的应用程序。

OpenCL ICD 加载器 是 vendor-independent 并允许您 select 在运行时使用哪个 OpenCL 设备。有几个可用的,但我建议 ocl-icd,因为它是开源的,通常 up-to-date。

要开发您自己的 OpenCL 程序,您还需要 OpenCL headers,您可以 download from here or install from the Arch repositories.

所谓的 SDK 只是供应商捆绑包,通常包含:a) OpenCL 运行时 将供应商硬件公开为 OpenCL设备; b) OpenCL ICD 加载器,以便各种处理器可以作为 OpenCL 设备公开; c) OpenCL headers; d) 关于如何在供应商硬件上最好地使用 OpenCL 的代码示例;并且,e) 可能与其他供应商相关的东西。

SDK 的一些示例包括:

您实际上不需要 SDK 来开发 OpenCL 应用程序,只要您有一个 OpenCL 运行时、一个 OpenCL ICD 加载器OpenCL headers。如果在 C/C++ 中开发,您的应用程序应包含针对 ICD 加载程序 (libOpenCL.so) 的 headers 和 link。