如何预处理OpenCL内核?

时间:2018-07-19 17:30:35

标签: compilation c-preprocessor opencl

在c / c ++代码上调用预处理器很简单:

g++ -E <file>.cpp 

它通过预处理器并生成预处理的代码。

我在.cl中有OpenCL内核怎么实现?

这是我做过的和失败的事情:

g++ -E -I. -std=c++11 -g -O3 -march=native -I/path/to/opencl/include/  -Wno-unused-result kernel.cl -L/path/to/opencl/lib/x86_64/ -lOpenCL -lquadmath
g++: warning: kernel.cl: linker input file unused because linking not done

谢谢

1 个答案:

答案 0 :(得分:1)

OpenCL代码可以在与您用来对其进行编译的体系结构上不同的体系结构上运行。您可能会发现,取决于代码中的编译时间设置(取决于目标的物理配置)存在差异。

为AMD设备生成后处理代码的最可靠方法是要求框架保存临时文件,包括后处理输出文件。

在Linux上,您需要为AMD设置的所有环境都是可变的。即:

 export AMD_OCL_BUILD_OPTIONS_APPEND="-save-temps"

编译opencl程序时,您将在/ tmp中看到一些文件。扩展名为.i的文件是后处理文件。这可能与您在主机体系结构上使用cpp所得到的结果有所不同。