【发布时间】:2017-10-07 02:00:00
【问题描述】:
Intel、AMD 和 Khronos OpenCL 之间有什么区别。我对 OpenCL 完全陌生,想从它开始。我不知道在我的操作系统上安装哪个更好。
【问题讨论】:
标签: opencl
Intel、AMD 和 Khronos OpenCL 之间有什么区别。我对 OpenCL 完全陌生,想从它开始。我不知道在我的操作系统上安装哪个更好。
【问题讨论】:
标签: opencl
OpenCL 是 C 和 C++ 语言的“扩展”,可在您的计算设备上实现软件的并行化:CPU、GPU 等。
OpenCL 由标准定义(由 Khronos Group 创建)并由硬件供应商 Intel、AMD、nVidia 等实施。因此每个 OpenCL 实现都需要一个供应商特定的 OpenCL 驱动程序,这将启用供应商的硬件。
总结一下,如果您有基于 Intel 的系统,请使用 Intel OpenCL,因为只有这样您才能使用计算机中的所有计算设备。如果您有 AMD 系统,情况也是如此。另外,请注意没有 Khronos OpenCL 实现。
当然,您可以拥有一个平台,其中包含来自多个供应商的支持 OpenCL 的设备(例如 Intel CPU+GPU 和 nVidia 独立卡)。在这种情况下,OpenCL 运行时包含一个通用层(一个动态加载的库)。该层是一个接口,它根据所选的 OpenCL 平台调用每个设备驱动程序中提供的实现。
【讨论】:
OpenCL 是 Kronos 定义的标准。您必须将它们distribute header files 提供给您的编译器。他们不分发要链接的二进制文件。为此,您必须获得 ICD(可安装客户端驱动程序),在 Windows 上,这是 DLL 文件的形式。您将通过安装一个或多个...
不用担心针对一个供应商进行编译而它在另一个供应商上不起作用,OpenCL 已经过精心设计以解决这个问题。针对您拥有的任何版本进行编译,它将适用于相同或更新的任何其他版本,无论是谁制作的。
注意,AMD OpenCL 驱动程序将作为 Intel CPU 的 OpenCL 驱动程序运行。例如,如果您有一个 AMD GPU 和一个 Intel CPU,并且安装了 Intel OpenCL 驱动程序和 AMD OpenCL 驱动程序,AMD 驱动程序将报告它可以提供 GPU 设备和CPU 设备(您的 CPU),英特尔驱动程序将报告有一个 CPU 设备(也是您的 CPU),并且很可能还有一个 GPU 设备(位于英特尔 CPU 芯片上的 GPU,例如在 i7-3770 上,这将是 HD4000)。如果您盲目地向 OpenCL 询问“所有 CPU 可用”,您将获得 AMD 驱动程序和 Intel 驱动程序为您提供相同的 CPU。在这种情况下,您的代码将不会很好地运行。
在 Windows 上,预计您将自己 download the header files,然后从 DLL (MSVC) 创建库,或直接链接到 DLL(Mingw & Clang 默认行为)。
在 Linux 上,您的包管理器可能有一个库可以链接,请参阅您的发行版文档。在 Ubuntu 和 Debian 上,这个命令可以工作...
sudo apt-get install ocl-icd-opencl-dev
在 Mac 上,无需安装任何内容,尝试安装某些内容可能会损坏您的系统。只需安装 Xcode,并使用框架“OpenCL”。
还有其他平台,例如 Android。一些 FPGA 供应商提供 OpenCL 库。请查阅您的供应商文档。
【讨论】:
Khronos 定义了 OpenCL 标准。每个供应商/开源都将实施该标准。
Khronos 定义了一组一致性测试,如果供应商声称他的 opencl 实现符合标准,则需要通过这些测试。
【讨论】: