【发布时间】:2011-06-09 09:47:34
【问题描述】:
我正在尝试获得一个可以在 ATI 和 NVidia 上运行的程序,因此,我想避免使用任何一个 SDK。是否可以在没有 SDK 的情况下仅使用 VS2010 和 Windows(XP 或 7)来执行此操作?
如果是这样,我该如何配置 VS2010 链接器以使其正常工作?
【问题讨论】:
我正在尝试获得一个可以在 ATI 和 NVidia 上运行的程序,因此,我想避免使用任何一个 SDK。是否可以在没有 SDK 的情况下仅使用 VS2010 和 Windows(XP 或 7)来执行此操作?
如果是这样,我该如何配置 VS2010 链接器以使其正常工作?
【问题讨论】:
严格来说,不需要 SDK。事实上,不需要任何 SDK,因为 NVIDIA 和 AMD/ATI SDK 都将代码绑定到它们的环境,并且通过扩展绑定到它们的硬件。你需要的是:
1) 将运行 OpenCL 代码的 GPU。看到这个问题:List of OpenCl Compliant CPU/GPU
2) OpenCL 库(Linux 上的 libOpenCL.so);这通常包含并安装在图形驱动程序中,可以从 AMD 或 NVIDIA 下载。
3) OpenCL 头文件。这些可以从Khronos.org 获得,但包含在我所知道的所有 OpenCL SDK 中。在 Linux 系统上,这些通常位于目录 /usr/include/CL
NVIDIA 和 AMD SDK 提供了许多实用程序和封装程序,可以更轻松地使用 OpenCL API,但它们不是编写 OpenCL 代码或进行 API 调用所必需的。这些包装器和实用程序不可移植。如果您对编写可移植代码感兴趣,请坚持使用 OpenCL 规范,该规范也可从 Khronos.org 获得。
要编写代码,您只需将 opencl.h 包含在您的主机程序中,然后进行必要的 API 调用,以设置 OpenCL 环境并运行您的 OpenCL 程序。另外,不要忘记链接到 OpenCL 库(在 Linux 下为 gcc 提供 -lOpenCL 标志)。
【讨论】:
OpenCL 是一个标准。它只定义约定。要使用它,您需要图形卡的驱动程序。 NVidia、AMD (ATI) 和 Apple 都提供此类驱动程序。你肯定需要一个 SDK。
【讨论】:
@virtuallinux 暗示了正确的答案:如果您担心意外使用某些供应商特定的扩展,请获取 Khronos SDK。
【讨论】: