【问题标题】:Intel OpenCL Vs. Khronos OpenCL英特尔 OpenCL 与。 Khronos OpenCL
【发布时间】:2017-10-07 02:00:00
【问题描述】:

Intel、AMD 和 Khronos OpenCL 之间有什么区别。我对 OpenCL 完全陌生,想从它开始。我不知道在我的操作系统上安装哪个更好。

【问题讨论】:

    标签: opencl


    【解决方案1】:

    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 平台调用每个设备驱动程序中提供的实现。

    【讨论】:

    • 感谢您的回答。所以,就像 OpenGL 一样,每个平台都有自己的实现,但 khronos 只是定义了下一个版本应该是什么,等等。这是真的吗?
    • 但是例如,对于 opengl,我们可以使用 windows 实现或 linux 实现,而无需安装 nVIDIA 或 ATI 实现,但 opencl 没有操作系统内实现。
    • 对此我不确定,但我认为 OpenGL 实现已集成在图形驱动程序中。因此,当您在 Windows 上下载图形驱动程序时,您将获得 OpenGL 的特定实现。也许在 linux 上你有一个与硬件无关的实现。
    • 大多数现代 GPU 驱动程序都包含 OpenCL 运行时。如果你找到或构建了 clInfo,你可以知道你是否有一个。如果您的 GPU 没有运行时,请安装 Intel 运行时,如果您的 CPU 有 SSE4.2,那么您可以在 CPU 上使用 OpenCL。
    • @VAndrei 如果我有一个 Intel CPU+GPU(集成高清显卡)和另一个 nVidia GPU,我可以同时使用吗?就驱动程序而言,它是如何工作的?
    【解决方案2】:

    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 库。请查阅您的供应商文档。

    【讨论】:

      【解决方案3】:

      Khronos 定义了 OpenCL 标准。每个供应商/开源都将实施该标准。

      Khronos 定义了一组一致性测试,如果供应商声称他的 opencl 实现符合标准,则需要通过这些测试。

      【讨论】:

        猜你喜欢
        • 2017-06-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-07
        • 2013-10-09
        • 1970-01-01
        相关资源
        最近更新 更多