我真的需要 OpenCL SDK 吗?

Do I really need an OpenCL SDK?

我只是想让自己熟悉 OpenCL,但当互联网上的每个人都在谈论下载特定于供应商的 OpenCL SDK 时,我完全感到困惑。我为什么需要它?

我对使用 OpenCL 的理解如下:

  1. 下载 Khronos OpenCL Registry 中由 Kronos 维护的 OpenCL 头文件,并使其可供您的编译器使用。
  2. 编译您的代码并 link 针对 OpenCL.dll。

之所以让我感到困惑,是因为我认为 OpenCL 应该抽象出特定于供应商的实现。如果我现在下载一个Vendor specific SDK,那么这个优势不是被破坏了吗?

有人能说清楚吗?

您的理解完全正确 - 您不需要任何供应商 SDK 即可开发或 运行 OpenCL 程序。您所需要的只是 headers 和 link 反对的库。供应商 SDK 提供了示例代码,在您学习如何使用 OpenCL 时查看这些代码可能会有用,它们还可能提供有助于开发的工具。

在 Windows 上,您将需要一个 OpenCL.lib 库来 link,SDK 确实提供了该库。如果您愿意,您可以 download the sources 此库并自行构建。

不过,使用特定供应商的 SDK 并没有什么坏处。他们在 SDK 中提供的 headers 和库应该 只是您可以自己下载的库存 Khronos 版本。这意味着使用一个供应商的 SDK 构建的 OpenCL 应用程序仍然 运行 与其他供应商的设备相媲美。