1

我在 OS X 上使用 OpenCL,我想知道是否有人可以告诉我用于从 OpenCL 内核源代码生成 GPU 二进制文件的编译器?在 OS X 中,OpenCL 内核是先编译为 LLVM,然后再优化,最后编译为 GPU 原生代码吗?我还想知道 OpenCL 内核编译器是否对内核进行了优化,例如循环不变代码运动?

4

1 回答 1

3

是的,在 Mac OS X 上,所有 OpenCL 代码都编译为 LLVM IR,然后将其传递给特定于设备的优化和代码生成。

您可以离线生成 LLVM 位码文件,并在clCreateProgramWithBinary中使用结果。openclc编译器位于OpenCL 框架内 (/System/Library/Framework/OpenCL.framework/Libraries/openclc)。您需要这些选项(arch 可以是 i386、x86_64、gpu_32):

openclc -c -o foo.bc -arch gpu_32 -emit-llvm foo.cl
于 2013-07-28T02:21:51.353 回答