使用OpenCL 1.2模拟OpenCL 1.1

时间:2014-02-12 15:32:10

标签: macos opencl osx-mountain-lion gpgpu osx-mavericks

我使用OpenCL并开发应该在具有OpenCL 1.1的系统上编译的代码,同时利用OpenCL 1.2的功能。

是否可以在具有OpenCL 1.2的系统上模拟OpenCL 1.1?

我正在Mac上使用Apple OpenCL框架,我想确保代码适用于拥有OpenCL 1.1的人(例如使用Mountain Lion),然后再将代码推送回中央存储库。

2 个答案:

答案 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