【问题标题】:Creating OpenCL 1.1 compliant application using AMD APP SDK 2.9?使用 AMD APP SDK 2.9 创建符合 OpenCL 1.1 的应用程序?
【发布时间】:2014-03-02 06:26:39
【问题描述】:

AMD 仅保留了其 SDK online 的 2.9、2.8 和 2.7 版本,所有这些版本都用于 OpenCL 1.2。 我想让我的应用程序与 OpenCL 1.1 硬件兼容。 由于我坚持使用 1.2 SDK 并且没有太多硬件支持进行测试,我想知道什么是正确的方法?

  1. 我从 Khronos 网站下载了 1.1 头文件,并将它们与我的 MinGW 编译器一起使用。 该应用程序在我的 ATI GPU 上运行,只有 OpenCL 1.1 驱动程序,但我不确定我是否正确。我有这个疑问,因为我仍在从 OpenCL 1.2 的 SDK 链接 OpenCL.lib。

  2. 我还应该将 SDK 中的 OpenCL.dll 与我的应用程序一起分发吗?

  3. 通过禁用 OpenCL 代码以便至少运行其他所有代码来避免在不兼容的硬件中出现 error message 的最佳方法是什么?

【问题讨论】:

    标签: c++ opencl


    【解决方案1】:

    看看 cl.h 头文件:

    每个 API 函数都有宏,定义它属于哪个版本:

    extern CL_API_ENTRY CL_EXT_PREFIX__VERSION_1_1_DEPRECATED cl_mem CL_API_CALL
    clCreateImage2D(cl_context              /* context */,
                    cl_mem_flags            /* flags */,
                    const cl_image_format * /* image_format */,
                    size_t                  /* image_width */,
                    size_t                  /* image_height */,
                    size_t                  /* image_row_pitch */, 
                    void *                  /* host_ptr */,
                    cl_int *                /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED;
    

    因此,要使您的应用程序符合 OpenCL 1.1,请使用 1.1 及更早版本的函数。考虑到,新 API 版本中可能不推荐使用函数(如 clCreateImage2D)。在这种情况下,您需要定义 CL_USE_DEPRECATED_OPENCL_1_1_APIS 宏 - 但我不知道这是否是一种好习惯。

    【讨论】:

    • 感谢您的建议。现在假设我的应用程序符合 OpenCL 1.1 并且工作正常。但是,如果它在低于该版本的硬件上运行,它将显示一条错误消息,并且我的应用程序根本无法启动。如何为不支持的硬件禁用 OpenCL?
    • 应用相同的原则 - 您应该使用 1.0 版的 API。所有主要供应商都支持 OpenCL 1.1,因此您描述的情况很难
    • @Cool_Coder 最简单的方法是使用 clGetPlatformInfo 和 CL_PLATFORM_VERSION 组合询问第一个设备支持哪个 OpenCL 版本。如果它低于您的要求,则打印警告消息并将路径转移到 C 实现。
    • @Sagar 我已经有一个关于这个主题的问题,但我发现了相互矛盾的答案。 stackoverflow.com/questions/22098210/…。您能否根据自己在 OpenCL 上的宝贵经验提出正确的解决方案?
    • @Roman 我指的是根本不支持 OpenCL 的情况。这可以在具有中等旧 CPU 且没有 GPU 的 PC 上实现。如果我不能使用 OpenCL 也没关系,但至少我的应用程序应该可以工作......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-03
    • 2012-04-03
    • 2023-03-20
    • 2011-09-07
    • 2014-06-02
    相关资源
    最近更新 更多