首页 > 解决方案 > OpenCL 1.2 命名空间 cl 中没有成员错误

问题描述

我正在尝试根据我在网上找到的示例编写一个 openCL 1.2 程序,但遇到了错误。库是否已更改为使用类似于 std::vector 的 std::exception?

使用下面的代码段:

 // Build the kernel
    cl::Program program(context, sources);
    try{
        program.build({device});
    } catch(cl::Error& e){
        std::cerr << program.getBuildInfo<CL_PROGRAM_BUILD_LOG>(device) << std::endl;
        throw e;
    }

标签: c++11exceptionopencl

解决方案


我认为您使用的命令program.build错误。它不将设备列表作为输入参数,而是一串预处理器选项。context要使用的设备已在对象中烘焙。它也确实返回错误代码。试试这样:

int error = program.build("-cl-fast-relaxed-math");
if(error) std::cerr << program.getBuildInfo<CL_PROGRAM_BUILD_LOG>(device) << std::endl;

这里的示例"-cl-fast-relaxed-math"是关闭浮点完整性检查的选项。


推荐阅读