AMD仅保留了其版本为online的2.9,2.8和2.7版本,所有这些版本都适用于OpenCL 1.2。 我想让我的应用程序与OpenCL 1.1硬件兼容。 由于我坚持使用1.2 SDK并且没有太多硬件支持进行测试,我想知道这样做的正确方法是什么?
我从Khronos网站下载了1.1标题,并将其与我的MinGW编译器一起使用。 该应用程序适用于我的ATI GPU,只有OpenCL 1.1驱动程序,但我不确定我是否正确。我有这个疑问,因为我仍在从OpenCL 1.2的SDK链接OpenCL.lib。
我还应该使用我的应用程序从SDK分发OpenCL.dll吗?
通过禁用OpenCL代码以避免其他所有内容运行来避免非兼容硬件error message的最佳方法是什么?
答案 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宏 - 但我不知道这是不是很好。