【问题标题】:OpenCL which SDK is best?OpenCL 哪个 SDK 最好?
【发布时间】:2014-03-12 21:23:23
【问题描述】:

我是 OpenCL 编程的初学者。我的 PC 有 Windows 8.1 和英特尔显卡和 AMD Radeon 7670。当我搜索下载 OpenCL SDK 和示例 helloworld 程序时,我发现有完全不同格式的单独 SDK 和程序可用。我必须使用 C 而不是 C++。谁能建议我应该安装哪个 SDK?请帮忙。

【问题讨论】:

    标签: c sdk opencl


    【解决方案1】:

    在最底层,各种 OpenCL SDK 是相同的;它们都包括来自Khronos 网站的 cl.h。包含该标头后,您可以写入 OpenCL API,然后需要链接到 SDK 中也提供的 OpenCL.lib。在运行时,您的应用程序将加载您的 GPU 供应商已安装在 /Windows/System32 中的 OpenCL.dll。

    或者,您可以包含 cl.hpp 并使用 C++ 包装器,但既然您说您是 C 程序员,并且因为大多数书籍使用 C API,请坚持使用 cl.h。我认为这可能解释了你观察到的“完全不同格式的程序”,这就是我在这里提出它的原因。

    一个 SDK 相对于另一个 SDK 的优势通常在于分析和调试。例如,AMD SDK 包括 APP Profiler(或现在的 CodeXL),它将帮助您弄清楚如何让您的内核更快。 NVIDIA 提供 Parallel Nsight 用于相同目的,而英特尔也有性能工具。

    因此,您可能会根据机器中的硬件来选择 SDK,但要了解,一旦您对 OpenCL API 进行了编码,您的应用程序就可以在其他供应商的其他 GPU 上运行——这就是 OpenCL 的好处。您甚至应该能够从一个供应商处获取样本,以便在另一个供应商的硬件上执行。

    需要注意的一点是版本:如果您使用 OpenCL 1.2 SDK 编写代码,您可能无法在 OpenCL 1.1 硬件上运行。

    【讨论】:

    • 很好的总结,但需要指出的另一个重要事实是,除了任何 GPU 之外,AMD 平台还将 CPU 识别为 OpenCL 设备,而 Nvidia 平台仅识别 GPU。
    • 我还要补充一点,Nvidia 的 Parallel Nsight 和分析工具不适用于 OpenCL,只有 CUDA,但这对于 OP 并不重要,因为只使用了 AMD GPU 和 Intel CPU。跨度>
    • @roybatty,说得好。英特尔 OpenCL 运行时还将 CPU 作为设备公开。所有这些平台都可以同时安装和使用。
    • @chippies,我的 Parallel Nsight 版本与 OpenCL 一起用于时间线事件跟踪,但它可能更旧。如果他们取消对新版本的支持,那将是很遗憾的。
    • @Dithermaster 最后一个为我工作的 OpenCL 版本是 CUDA 工具包 4.1 或 4.2 版中的可视化分析器。但它不是很稳定。
    【解决方案2】:

    对我来说,OpenCL 最好的一点是您根本不需要 SDK,因为它在一个通用接口后面抽象了不同的供应商实现(请参阅此线程中的答案:Do I really need an OpenCL SDK?)。

    【讨论】:

      猜你喜欢
      • 2012-11-11
      • 2015-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多