使用AMD APP SDK 2.9创建符合OpenCL 1.1的应用程序?

时间:2014-03-02 06:26:40

标签: c++ opencl

AMD仅保留了其版本为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的最佳方法是什么?

1 个答案:

答案 0 :(得分:2)

看看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宏 - 但我不知道这是不是很好。