首页 > 解决方案 > OpenCL2.0 运行时编译器不支持 c++11

问题描述

我正在尝试使用 OpenCL2.0 构建 OpenCL 内核。我正在调用 cl::Program 构建函数并传递标志 -cl-std=CL2.0。g++ 编译器完成并链接没有错误。但是,当我运行程序时,构建函数会引发异常(见下文)。想看看是否有人以前见过这个并有解决方案。谢谢你。

我尝试了其他标志,例如 -cl-std=c++11、-cl-std=CL2.2,但这些都不起作用。

[20:03:47.768768][info][Demosaic] CL_FLAGS = -cl-std=CL2.0 -D IMAGE_MAD_INDEXING -D AMD_GPU_ARCH -D DEVICE_WAVEFRONT_SIZE=64 -D WG_SIZE_MAX=256
terminate called after throwing an instance of 'cl::BuildError'
[20:03:47.788335][error][Demosaic] Build failed: In file included from /tmp/OCL21460T1.cl:244:
/usr/include/CL/cl2.hpp:495:2: error: Visual studio 2013 or another C++11-supporting compiler required
#error Visual studio 2013 or another C++11-supporting compiler required

标签: c++11gpuopenclamd-gpuopencl-c

解决方案


不是cl2.hpp应该#include主机代码中而不是OpenCL内核代码中的文件吗?

我假设它检查的值__cplusplus,如果我正确阅读OpenCL C++ 规范的相关部分,则在用于 OpenCL 内核的 C++ 方言中未定义。


推荐阅读