我使用OpenCL并开发应该在使用OpenCL 1.1的系统上编译的代码,同时在可用时利用OpenCL 1.2特性。
是否可以在OpenCL 1.2的系统上模拟OpenCL 1.1?
我在Mac上使用苹果OpenCL框架,我希望在将代码推回中央存储库之前,确保这些代码对拥有OpenCL 1.1的人(例如山狮)有效。
发布于 2014-02-13 10:50:05
也许你可以看看赫罗诺斯集团的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函数?
发布于 2014-09-04 15:32:51
看我在这个thread上的答案
您可以调用clBuildProgram的选项,如下所示
const char options[] = "-cl-std=CL1.1";
clBuildProgram( program, 1, &devices, options, NULL, NULL );
这迫使编译器使用OpenCL 1.1,而不管设备支持哪个版本。
https://stackoverflow.com/questions/21732274
复制相似问题