Windows 我真的需要OpenCLSDK吗?

Windows 我真的需要OpenCLSDK吗?,windows,sdk,opencl,Windows,Sdk,Opencl,我只是想让自己熟悉OpenCL,但当互联网上的每个人都在谈论下载特定于供应商的OpenCL SDK时,我完全被搞糊涂了。我为什么需要这个 我对使用OpenCL的理解如下: 下载由Kronos在中维护的OpenCL头文件,并将其提供给编译器 根据OpenCL.dll编译代码和链接 它让我困惑的原因是,我认为OpenCL应该抽象掉特定于供应商的实现。如果我现在下载一个特定于供应商的SDK,那么这一优势不会被破坏吗 有人能说清楚吗?您的理解绝对正确-您不需要任何供应商SDK来开发或运行OpenCL程序

我只是想让自己熟悉OpenCL,但当互联网上的每个人都在谈论下载特定于供应商的OpenCL SDK时,我完全被搞糊涂了。我为什么需要这个

我对使用OpenCL的理解如下:

  • 下载由Kronos在中维护的OpenCL头文件,并将其提供给编译器
  • 根据OpenCL.dll编译代码和链接
  • 它让我困惑的原因是,我认为OpenCL应该抽象掉特定于供应商的实现。如果我现在下载一个特定于供应商的SDK,那么这一优势不会被破坏吗


    有人能说清楚吗?

    您的理解绝对正确-您不需要任何供应商SDK来开发或运行OpenCL程序。您所需要的只是标题和链接所针对的库。供应商SDK提供了一些示例代码,您可以在学习如何使用OpenCL时查看这些代码,还可以提供一些工具来帮助开发

    在Windows上,您需要一个链接到的
    OpenCL.lib
    库,SDK确实提供了这个库。如果您愿意,您可以为这个库创建一个数据库并自己构建它


    但是,使用特定供应商的SDK并没有什么害处。它们在SDK中提供的头文件和库应该是您可以自己下载的Khronos版本。这意味着使用一家供应商的SDK构建的OpenCL应用程序在其他供应商的设备上仍然可以正常运行。

    完美答案,谢谢!我只是在互联网上找不到这些信息。也非常感谢您解释OpenCL.lib的细节,因为这将是我的下一个问题。下一步是使用动态加载,在这种情况下,您甚至不需要“OpenCL.lib”,只需要标题和代码来解析指向函数的指针,一些人已经为此编写了工具:谢谢,我知道动态加载,但很好奇为什么没有人在互联网上真正提到它。每个人都在谈论使用特定于供应商的SDK。现在我知道SDK不会造成伤害,而且它们是可选的。@jprice:您提到“您可以下载此库的源代码,如果您愿意,可以自己构建它。”以构建例如:MSVC导入库。但是链接只是引用了Khronos注册表。你能更准确地告诉我在哪里可以找到我自己构建OpenCL.dll和OpenCL.lib的源代码吗?谢谢。@denim:这是您要找的“可安装的客户端驱动程序”,出于某种原因,它目前似乎只在OpenCL 1.2中列出。以下是ICD 1.2 tarball的直接链接: