我真的需要一个OpenCL SDK吗?

我只是试图让自己熟悉OpenCL,但当互联网上的每个人都在谈论下载一个Vendor特定的OpenCL SDK时,我完全糊涂了。 为什么我需要这个?

我对使用OpenCL的理解如下:

  1. 下载Khronos OpenCLregistry中由Kronos维护的OpenCL头文件,并将其提供给您的编译器。
  2. 编译您的代码并链接到OpenCL.dll。

之所以混淆我,是因为我认为OpenCL应该抽象出供应商特定的实现。 如果我现在下载一个供应商特定的SDK是不是这个优势被破坏?

有人可以请清楚吗?

您的理解是绝对正确的 – 您不需要任何供应商SDK来开发或运行OpenCL程序。 所有你需要的是头文件和库链接。 供应商的SDK提供了示例代码,在您学习如何使用OpenCL时可能对您有所帮助,并且还可能提供可以帮助开发的工具。

在Windows上,您将需要一个OpenCL.lib库来链接,这些SDK提供。 你可以下载这个库的源文件 ,并根据你的需要自行构建。

但是,使用特定供应商的SDK没有任何危害。 他们在SDK中提供的头文件和库应该是您可以自己下载的股票Khronos版本。 这意味着使用一个供应商的SDK构建的OpenCL应用程序对于其他供应商的设备仍然可以正常运行。