2013-07-27 50 views
0

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

回答

2

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

您可以离线生成LLVM位码文件,并使用clCreateProgramWithBinary中的结果。编译器位于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