我使用OpenCL并开发应该在具有OpenCL 1.1的系统上编译的代码,同时利用OpenCL 1.2的功能。
是否可以在具有OpenCL 1.2的系统上模拟OpenCL 1.1?
我正在Mac上使用Apple OpenCL框架,我想确保代码适用于拥有OpenCL 1.1的人(例如使用Mountain Lion),然后再将代码推送回中央存储库。
答案 0 :(得分:2)
也许你可以看看Khronos集团的cl.hpp。
链接到仅标题库:http://www.khronos.org/registry/cl/
链接到一个简短的例子:http://www.thebigblob.com/using-the-cpp-bindings-for-opencl/
这是一个C ++ OpenCL包装器,它根据系统路径中的OpenCL头版本为您提供OpenCL 1.0,1.1或1.2支持。我认为你可以采用这样的方式在编译时达到目的。
如果你有更新的标题,但是你想限制版本,你可以看一下这个帖子: Cannot compile OpenCL application using 1.2 headers in 1.1 version
或者您想在运行时选择合适的OpenCL函数吗?
答案 1 :(得分:0)
请参阅我对此thread
的回答您可以调用可以设置clBuildProgram的选项,如下所示
const char options[] = "-cl-std=CL1.1";
clBuildProgram( program, 1, &devices, options, NULL, NULL );
无论您的设备支持哪种版本,都会强制编译器使用OpenCL 1.1