我真的需要 OpenCL SDK 吗?
Do I really need an OpenCL SDK?
我只是想让自己熟悉 OpenCL,但当互联网上的每个人都在谈论下载特定于供应商的 OpenCL SDK 时,我完全感到困惑。我为什么需要它?
我对使用 OpenCL 的理解如下:
- 下载 Khronos OpenCL Registry 中由 Kronos 维护的 OpenCL 头文件,并使其可供您的编译器使用。
- 编译您的代码并 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 应用程序仍然 运行 与其他供应商的设备相媲美。
我只是想让自己熟悉 OpenCL,但当互联网上的每个人都在谈论下载特定于供应商的 OpenCL SDK 时,我完全感到困惑。我为什么需要它?
我对使用 OpenCL 的理解如下:
- 下载 Khronos OpenCL Registry 中由 Kronos 维护的 OpenCL 头文件,并使其可供您的编译器使用。
- 编译您的代码并 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 应用程序仍然 运行 与其他供应商的设备相媲美。